commit 1cd975eb67cead72b0e235486495786cdb2e7094 Author: Alex xu Date: Fri Jun 14 19:44:02 2024 +0800 SY8833双向通讯源码,包括岍丞、小明、杰理等。 diff --git a/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.bin b/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.bin new file mode 100644 index 0000000..e69de29 diff --git a/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.hex b/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.hex new file mode 100644 index 0000000..131ced3 --- /dev/null +++ b/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912.hex @@ -0,0 +1,285 @@ +:030000000208985B +:10089800758E3075D20078FFE4F6D8FD75819D021B +:0208A80008E561 +:0F0EBB001209B7D2AED2BE120C31120AAE80F4B9 +:0405EF00029900006D +:020D6800AD07D5 +:100D6A00E4FCFBFAF527F52875FE2975FF8BEDC41F +:100D7A0054F04401F5A5E5A520E0FBAFA1AB07AF10 +:100D8A00A2EFFEEEFAEB2528F528EA3527F5270C1F +:100D9A00BC08DBE528AE277803CEC313CE13D8F9F7 +:010DAA00FF49 +:010DAB002225 +:100DAC00E4F524F5257F05120D688E248F257F062A +:100DBC00120D68E4FCFDC004A905AA06AB07AE241D +:100DCC00AF257C077DD0120271D0001201A98E24B0 +:020DDC008F2561 +:010DDE0022F2 +:100DDF00E4F525F5267F04120D688E258F267F06F4 +:100DEF00120D68E4FCFDC004A905AA06AB07AE25E9 +:100DFF00AF267C037DE8120271D0001201A98E2567 +:020E0F008F262C +:010E110022BE +:0605F300C114C116C11580 +:10078900E4FFFE752401120DDFC3EF9474EE940E9D +:1007990040037F0122E5E630E757D3EF9436EE9424 +:1007A900055030EF9422EE94024028301612EF944F +:1007B90014EE94055007C2167524018003E4F5244C +:1007C90030152ED3EF9444EE94024022C2157524BD +:1007D90001801ED3EF9436EE94054004D216800BA7 +:1007E900C3EF9422EE94025002D21553B3FEE4F5FE +:0307F90024AF2406 +:0107FC0022DA +:100BDC00E5E620E70953B3FE75F210C21422E5F2E4 +:100BEC00540C601053B3FEE5F354C0603775F20C2F +:100BFC0075F3C022E5F354C0600375F3C012078986 +:100C0C00EF6021E5F230E417C3789AE694EB18E62E +:100C1C00940F500575F210800353B3FED214224387 +:050C2C00B301C2142217 +:0405F900C117C1184D +:100D2200E5E530E103C21722E5E230E705C217D25A +:100D32001822E5E830E00EC217300B29C20B75E825 +:100D42000175B50122D21730181BE5E630E716C34C +:100D5200789AE6941018E6940E4005D217C218222B +:060D6200E4F5B5C2172202 +:0705FD00011DFFC119C11A25 +:100E3E00E5E230E425E5E25408FF651D601CE5E2BD +:100E4E0030E305751C018005E4F51CC21ED219D2D3 +:0A0E5E001AE4F51FF540F5418F1D61 +:010E68002267 +:0B060400C113C111C110C112019D0003 +:100E6900301208C211C212789D7602301006C210E3 +:0E0E7900789D7603301306C213789D76012211 +:03060F000198004F +:10000E007893A607EDC31308F608A60508A603E421 +:03001E0008F622BF +:100CD5007893E6603D24FE6007047036D283803445 +:100CE5007897E6FFC37894965004D2838002C28336 +:100CF500EFC3789596401DE47897F618E6FFF46003 +:100D050013EFD394004001167896E670077893F6B2 +:0D0D15008002C2837893E67898F6180622D3 +:05061200011E00C11DE6 +:100E9A00E5E620E706200903301D04C21DC322D35C +:010EAA002225 +:1009B700E4F5D275FE8943FF8075FE0153FFFCF510 +:1009C700FE75FF0375FE0E75FF05D2DF4387807541 +:1009D700BA0375AAFD7598D0D299D298D2AC75B7DB +:1009E700C3758901758CFC758A17D2A9D28C75FEDF +:1009F7000675FF0C75FE0375FF0CC283F58675FE41 +:100A07000F43FF8075FE4F75FF1075FE1775FF3C8E +:100A170075FE1E75FF0CD2A8D2B9D2BBD2AF75F244 +:100A27001C75F3C075E80C75FE8753FFDF43B310E1 +:0A0A370075FE7043FF04751E0A22CD +:03000300020006F2 +:0100060032C7 +:03004B00020ED5CD +:060ED50075EB3CD21D325A +:03005B00020EDBB7 +:060EDB0075F30CD21D327C +:0F0617000B880000000000000000000000C11C64 +:100E870074882553F8A6990553E5532275520075C2 +:030E9700530022E3 +:0A0E12008E358F368B378A38893908 +:100E1C00E4FFEFC39536E495355016201BFD78376B +:100E2C00E475F00112023B120154D21BF5990F80AC +:010E3C00E1D4 +:010E3D002292 +:0300230002092AA5 +:0F092A00C0E0C0D075D000C000C005C006C00737 +:10093900309904C299C21B309867C298E551146076 +:100949001F04705DE599B4AA0F755101120E931237 +:100959000E87700205528049755100120E9380412D +:10096900120E8770020552640745527015788EE69B +:10097900FEE42409FFE43EFE18E6FDEEF554EF4DD2 +:10098900F555E55565537004E5546552600BD3E59B +:1009990053940BE55294004008120E93755100D2FE +:0109A9001C31 +:0D09AA00D007D006D005D000D0D0D0E0326C +:05062600011F00C11ED0 +:1006E000E5E630E729301402807A301A10E51CB4B0 +:1006F000010B201E08D21EE4FBFDFF801D7898E64A +:1007000064027002E1887BFF7D647F028077301F86 +:100710000F301A747B047D647F0212000EC21A220D +:10072000E51C6401704BE56B7004E56C6043E56BA0 +:1007300064016005E56CB401167898E6640260090E +:100740007BFF7D327F0212000EE4F51FD21D22E5F1 +:100750006B64027033E56C6402702DE51FC394284E +:100760005009051FE4FBFD7F01801AE4FBFDFF80BB +:1007700014E51FC394285009051FE4FBFD7F018089 +:0907800004E4FBFDFF12000E224F +:100AAE00300C08C20C120E3E120D22300F05C20F72 +:100ABE00120CD5300A1BC20A120BDC120DAC78993F +:100ACE00A60608A60712029E1206E0120B18120CBA +:100ADE0086300D35C20DE51ED394004009151E302B +:100AEE001D27C21D8020120E9A501BC2ACC2BBC263 +:100AFE00B9C2A975FE2953FF7F438702D2ACD2BB80 +:0A0B0E00D2B9D2A98000751E0A2298 +:0B004E000000000000000000000000A7 +:10062B00C109C105C108C102C104C100C106014213 +:10063B000002450000014400014300C101024700D4 +:10064B0000027000000672000000000000087A0033 +:10065B0000000000000000028400000256000002AF +:10066B00780000028600000282000002580000168B +:10067B005A00000000000000000000000000000015 +:10068B0000000000000000013F00C1030240000019 +:02069B00C10795 +:10002600FF547FF6EFC4131313540122C208D20102 +:10003600E4F544D20522FF5401F6EFC3135401221E +:100EAB00D282EF700753B7CF43B7302253B7CF225D +:10029E00E5E8540C60110542E542C394024008E4BF +:1002AE00F54275E80C8109301960301758200606A2 +:1002BE0075B501D20622E4F56BF56CC205C200F5E8 +:1002CE0045F546E51C7011D202C204C219D209C20C +:1002DE0006C28243B7308032C202C208C3E54194DF +:1002EE0002E5409400500FE4FF120EAB0541E541CC +:1002FE00701805408014E4F5B5D204C219C206F593 +:10030E0040F54180057F01120EAB30042AC3E54152 +:10031E009458E5409402501AE54120E0047D248073 +:10032E00027D257F0D12048F0541E54170090540C0 +:10033E008005E4FF120EAB2002052000028184C36B +:10034E00E5419432E54094005031E54120E00F3014 +:10035E0000047D24800DE51C70187D24800F300074 +:10036E00067D257F058008E51C70077D257F0D1213 +:10037E00048F0541E541700205402230000DC20098 +:10038E00C202C209E4F5B57F0181192002028184FF +:10039E00E5E354AC64AC6003301F12C3E5469458D9 +:1003AE00E54594024007D200E4F540F54120072EC2 +:1003BE00C3E5419464E5409400501AE54120E00401 +:1003CE007D2480027D257F0E12048F0541E541704C +:1003DE000D05408009D207D208E4F540F5413008FA +:1003EE0050E544C3940150097D2412048508F6801B +:1003FE0030E543D394054006120032FF800D789409 +:10040E00E6601208E66007120032FF020EAB7D2591 +:10041E00120485800C7895E660077D247F0A12040D +:10042E008FE544D3941E40070543E4F5448002054E +:10043E00443005210541E54170020540D39414E591 +:10044E004094004010C205E4F544F543D2827D216C +:10045E007F1202048F30011EE544C3946450097567 +:10046E00FE7843FF03054422C201E4F54475FE788D +:10047E0053FFFC43FF01227F0A12048FE47894F6A7 +:01048E00224B +:0A0A41008B358A3689378C388D39E1 +:100A4B00E4FDFC753A10753B21F53CE5391539AEE3 +:100A5B0038700215384E60467835E475F001120295 +:100A6B003B120154F53CFEEE6204E4F53DF53EC34A +:100A7B00E53E9408E53D940050D1EC30E70FED25B1 +:100A8B00E0FFEC33653AFCE53B6FFD8007ED25E0BD +:100A9B00FDEC33FC053EE53E70D5053D80D1AE0443 +:020AAB00AF0595 +:010AAD002226 +:04048F008F248D2504 +:1004930078267C007D007BFF7A00794E7E007F0BFF +:1004A30012012EE4F531F532F533F5347526AA85BC +:1004B3002527852428F529851C2AE52412024B05C6 +:1004C3000C0504E10A05190B05200D054F0E058FD8 +:1004D3000F051911059A120519370000059D752B93 +:1004E3000EE4F52CFF74722FF8E6FE742D2FF8A698 +:1004F300060FBF06F0E4FF747A2FF8E6FE74332F7D +:10050300F8A6060FBF08F0A19D752B01E4F52CA2F8 +:100513000333F52DA19DE4F52BF52C807D752B057B +:10052300E4F52C752D10F52D752E01E5E654807834 +:100533009C46F52FE525B4240478848007E525B48B +:1005430025057885E6F530E4F531804E752B0AE410 +:10055300F52C853F2DFFEFFDE53F2DFDE433FCD367 +:10056300ED9416EC648094804008742E2FF876FF87 +:10057300800EE53F2F245AF8E6FE742E2FF8A606C8 +:100583000FBF09D27409253FF53F800E752B01E497 +:10059300F52C752D018003D20E22E52CFEE42407F1 +:1005A300FFE43EF533EF452BF5347B007A007926E3 +:1005B300FDAC33120A418E318F32AD3474272DF8DE +:1005C300A607E531FF74282DF8A607C28275FE0E33 +:1005D30043FF04E534240AFFE43533FE7B007A004D +:0B05E3007926120E1275FE0E53FFF376 +:0105EE0022EA +:100800007889E6C4540FFD540360020197EF24F683 +:10081000602524FD602F14607124D7707AE4FE787F +:100820008DE6FFEEC39F506F748F2EF8E6FF747253 +:100830002EF8A6070E80E8788FE6BD04047870F6DF +:10084000227871F622ED64047891701FE6788412A4 +:1008500000267856F67892E6F54708E67878120092 +:100860003C7886F67894E67882F622E6788512005F +:10087000267857F67892E6F54808E6787912003C33 +:100880007887F67894E67883F622788FE6BD0404BC +:070890007858F6227859F6B2 +:01089700223E +:100C8600E4F524F525F526301C44C21C788EE6FED4 +:100C9600E42407FFE43EFE18E6FDEEF524EF4DF5ED +:100CA600257B007A007988FDAC24120A41AC06AD9A +:100CB60007AB25748A2BF8E6FE74892BF8E6FBEB66 +:0E0CC600B5050BEEB50407788AE6FF120800AC +:010CD40022FD +:10069D00019C00C11F019B1E14080BB80C1C0CE41F +:0E06AD000D480DAC0E420ED80F3C0FD2106857 +:0B0ECA00EF25E02408F8E6FC08E62213 +:100B1800E4FFE5E630E715120ECA2432FDE43CFC9A +:100B2800C3789AE69D18E69C50108012120ECAFDF2 +:100B3800C3789AE69D18E69C40040FBF0AD4789CB7 +:100B4800E6FEEFD39E400418068003789B16789B38 +:100B5800E6FED394325006EEC3940A5007789CA65A +:100B68000718761E789CE6FFD394015003D21F2203 +:080B7800EFD394024002C21FFA +:010B80002252 +:1006BB00014B00014D00014A00014900014C00C1F2 +:1006CB000CC10FC10BC10AC10D015000014E00C17D +:0406DB000E014F00BD +:100C3100E5506050E4F550054BE54BC39405400584 +:100C4100E4F54BD20C054DE54DC3940A4005E4F59E +:100C51004DD20F0549E549C394644005E4F549D2F5 +:100C61000A054AE54AC394FA401AE4F54AD20B054B +:100C71004CE54C9404400DE4F54CD20D0546E54697 +:050C8100700205452290 +:03000B00020B8164 +:100B8100C0E0C0D074FC258CF58C7417258AF58AD9 +:100B9100755001054EE54EC39405403A754E00303F +:100BA1000E34E54FD394045004C282801BE54F30CC +:100BB100E00BB40D04C282800FD282800BE54FB4EA +:100BC1000E04D2828002C282054FE54FC3941740C2 +:0B0BD10005C20E754F00D0D0D0E032FE +:1008AA00020EBBE493A3F8E493A34003F68001F29B +:1008BA0008DFF48029E493A3F85407240CC8C3334F +:1008CA00C4540F4420C8834004F456800146F6DF1E +:1008DA00E4800B01020408102040809005EFE47EBA +:1008EA00019360BCA3FF543F30E509541FFEE49313 +:1008FA00A360010ECF54C025E060A840B8E493A3DA +:10090A00FAE493A3F8E493A3C8C582C8CAC583CA04 +:10091A00F0A3C8C582C8CAC583CADFE9DEE780BEBC +:0106DF00001A +:10005E00E709F608DFFA8046E709F208DFFA803E84 +:10006E0088828C83E709F0A3DFFA8032E309F60871 +:10007E00DFFA8078E309F208DFFA807088828C83D9 +:10008E00E309F0A3DFFA806489828A83E0A3F6088D +:10009E00DFFA805889828A83E0A3F208DFFA804C67 +:1000AE0080D280FA80C680D4806980F2803380103E +:1000BE0080A680EA809A80A880DA80E280CA8033A7 +:1000CE0089828A83ECFAE493A3C8C582C8CCC5831F +:1000DE00CCF0A3C8C582C8CCC583CCDFE9DEE780EF +:1000EE000D89828A83E493A3F608DFF9ECFAA9F06E +:1000FE00EDFB2289828A83ECFAE0A3C8C582C8CCC4 +:10010E00C583CCF0A3C8C582C8CCC583CCDFEADEDC +:10011E00E880DB89828A83E493A3F208DFF980CC3E +:10012E0088F0EF60010E4E60C388F0ED2402B40437 +:10013E000050B9F582EB2402B4040050AF232345DE +:06014E0082239000AE7355 +:10015400BB010689828A83E0225002E722BBFE02A9 +:09016400E32289828A83E49322DC +:10016D0075F008758200EF2FFFEE33FECD33CDCC49 +:10017D0033CCC58233C5829BED9AEC99E5829840CC +:10018D000CF582EE9BFEED9AFDEC99FC0FD5F0D6A9 +:10019D00E4CEFBE4CDFAE4CCF9A88222B800C1B9D3 +:1001AD000059BA002DEC8BF084CFCECDFCE5F0CB11 +:1001BD00F97818EF2FFFEE33FEED33FDEC33FCEB4A +:1001CD0033FB10D703994004EB99FB0FD8E5E4F905 +:1001DD00FA227818EF2FFFEE33FEED33FDEC33FCF2 +:1001ED00C933C910D7059BE99A4007EC9BFCE99AE6 +:1001FD00F90FD8E0E4C9FAE4CCFB2275F010EF2F2B +:10020D00FFEE33FEED33FDCC33CCC833C810D7072A +:10021D009BEC9AE899400AED9BFDEC9AFCE899F865 +:0E022D000FD5F0DAE4CDFBE4CCFAE4C8F922F8 +:10023B00FAE6FB0808E6F925F0F618E6CA3AF622C4 +:10024B00D083D082F8E4937012740193700DA3A342 +:10025B0093F8740193F5828883E473740293686056 +:06026B00EFA3A3A380DF56 +:10027100EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D1A +:10028100FDE43CFCE8A42EC8C5F03DFDE43CFCEFD8 +:0D029100A4FFE5F028FEE43DFDE43CFC2266 +:00000001FF diff --git a/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912_crc.bin b/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912_crc.bin new file mode 100644 index 0000000..09f370e Binary files /dev/null and b/Out/SY8833A_EVB_mcu_V100_2024_06_14_110912_crc.bin differ diff --git a/Project/HEXBIN.bat b/Project/HEXBIN.bat new file mode 100644 index 0000000..edfdc13 --- /dev/null +++ b/Project/HEXBIN.bat @@ -0,0 +1,61 @@ +:: @File Name: HEXBIN.bat +:: @Version : 1.0 +:: @Author : Alex-XU +:: @Creat Date : 2023-03-30 +:: @Brief : +:: 在keil中,生成hex、bin文件到 Out 文件夹中. +:: 复制本文件到keil工程文件所在目录下(/Project目录下) +:: 在keil 魔法棒USER里填写 +:: .\Out.bat $K !P @P +:: $K hextobin转换工具位置 !P 工程名 @P 工程目录 +:: .\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\ + +::关闭显示 +@echo off +::获取时间 +set year=%date:~0,4% +set month=%date:~5,2% +set day=%date:~8,2% +set hour=%time:~0,2% +set min=%time:~3,2% +set sec=%time:~6,2% +::创建输出文件夹 Out +if exist .\..\Out ( + echo Out file exist +) else ( + mkdir .\..\Out +) + +::设置hex2bin_TP.exe位置 ,\Objects\hex2bin_TP.exe +set exe_location=%1 +::获取工程名 mcu.hex +set project_name=%2 +::设置.hex文件所在目录路径\Objects\ +set obj_path=%3 +::设置输出后的文件名 +set output_name=SY8833A_EVB_%project_name%_V100_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% + +::将bin文件生成到HEXBIN文件夹 >nul屏蔽成功命令 .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0 +%exe_location% .%obj_path%%project_name%.hex .%obj_path%%output_name%.bin 3 0 >nul +::将hex文件重命名 +ren .%obj_path%%project_name%.hex %output_name%.hex >nul + +ECHO Add CRC16 At the end of the .bin file +ECHO ------------------------------------- + +SET SREC_PATH=D:\Keil_v5\SREC + +for /f %%i in ('dir /s /b .%obj_path%%output_name%.bin') do ( +set indexdx=%%~zi +) + +ECHO --- size= %indexdx% Bytes --- + +ECHO %SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary +%SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary + +del /q ..\Out\*.* +::将hex文件复制到HEXBIN文件夹 +move .%obj_path%%output_name%.hex .\..\Out >nul +move .%obj_path%%output_name%.bin .\..\Out >nul +move .%obj_path%%output_name%_crc.bin .\..\Out >nul \ No newline at end of file diff --git a/Project/Listings/STARTUP.lst b/Project/Listings/STARTUP.lst new file mode 100644 index 0000000..0041494 --- /dev/null +++ b/Project/Listings/STARTUP.lst @@ -0,0 +1,263 @@ +A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 1 + + +MACRO ASSEMBLER A51 V8.2.7.0 +OBJECT MODULE PLACED IN .\Objects\STARTUP.obj +ASSEMBLER INVOKED BY: D:\Keil_v5\C51\BIN\A51.EXE ..\Src\startup\STARTUP.A51 SET(SMALL) DEBUG PRINT(.\Listings\STARTUP.ls + t) OBJECT(.\Objects\STARTUP.obj) EP + +LOC OBJ LINE SOURCE + + 1 $nomod51 + 2 ;------------------------------------------------------------------------------ + 3 ; This file is part of the C51 Compiler package + 4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc. + 5 ; Version 8.01 + 6 ; + 7 ; *** <<< Use Configuration Wizard in Context Menu >>> *** + 8 ;------------------------------------------------------------------------------ + 9 ; STARTUP.A51: This code is executed after processor reset. + 10 ; + 11 ; To translate this file use A51 with the following invocation: + 12 ; + 13 ; A51 STARTUP.A51 + 14 ; + 15 ; To link the modified STARTUP.OBJ file to your application use the following + 16 ; Lx51 invocation: + 17 ; + 18 ; Lx51 your object file list, STARTUP.OBJ controls + 19 ; + 20 ;------------------------------------------------------------------------------ + 21 ; + 22 ; User-defined Power-On Initialization of Memory + 23 ; + 24 ; With the following EQU statements the initialization of memory + 25 ; at processor reset can be defined: + 26 ; + 27 ; IDATALEN: IDATA memory size <0x0-0x100> + 28 ; Note: The absolute start-address of IDATA memory is always 0 + 29 ; The IDATA space overlaps physically the DATA and BIT areas. + 0100 30 IDATALEN EQU 100H + 31 ; + 32 ; XDATASTART: XDATA memory start address <0x0-0xFFFF> + 33 ; The absolute start address of XDATA memory + 0000 34 XDATASTART EQU 0 + 35 ; + 36 ; XDATALEN: XDATA memory size <0x0-0xFFFF> + 37 ; The length of XDATA memory in bytes. + 0000 38 XDATALEN EQU 0H + 39 ; + 40 ; PDATASTART: PDATA memory start address <0x0-0xFFFF> + 41 ; The absolute start address of PDATA memory + 0000 42 PDATASTART EQU 0H + 43 ; + 44 ; PDATALEN: PDATA memory size <0x0-0xFF> + 45 ; The length of PDATA memory in bytes. + 0000 46 PDATALEN EQU 0H + 47 ; + 48 ; + 49 ;------------------------------------------------------------------------------ + 50 ; + 51 ; Reentrant Stack Initialization + 52 ; + 53 ; The following EQU statements define the stack pointer for reentrant + 54 ; functions and initialized it: + 55 ; + 56 ; Stack Space for reentrant functions in the SMALL model. + 57 ; IBPSTACK: Enable SMALL model reentrant stack + A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 2 + + 58 ; Stack space for reentrant functions in the SMALL model. + 0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used. + 60 ; IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF> + 61 ; Set the top of the stack to the highest location. + 0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 + 63 ; + 64 ; + 65 ; Stack Space for reentrant functions in the LARGE model. + 66 ; XBPSTACK: Enable LARGE model reentrant stack + 67 ; Stack space for reentrant functions in the LARGE model. + 0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used. + 69 ; XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF> + 70 ; Set the top of the stack to the highest location. + 0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1 + 72 ; + 73 ; + 74 ; Stack Space for reentrant functions in the COMPACT model. + 75 ; PBPSTACK: Enable COMPACT model reentrant stack + 76 ; Stack space for reentrant functions in the COMPACT model. + 0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used. + 78 ; + 79 ; PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF> + 80 ; Set the top of the stack to the highest location. + 0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 + 82 ; + 83 ; + 84 ;------------------------------------------------------------------------------ + 85 ; + 86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM + 87 ; Compact Model Page Definition + 88 ; + 89 ; Define the XDATA page used for PDATA variables. + 90 ; PPAGE must conform with the PPAGE set in the linker invocation. + 91 ; + 92 ; Enable pdata memory page initalization + 0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used. + 94 ; + 95 ; PPAGE number <0x0-0xFF> + 96 ; uppermost 256-byte address of the page used for PDATA variables. + 0000 97 PPAGE EQU 0 + 98 ; + 99 ; SFR address which supplies uppermost address byte <0x0-0xFF> + 100 ; most 8051 variants use P2 as uppermost address byte + 00A0 101 PPAGE_SFR DATA 0A0H + 102 ; + 103 ; + 104 ;------------------------------------------------------------------------------ + 105 + 106 ; Standard SFR Symbols + 00E0 107 ACC DATA 0E0H + 00F0 108 B DATA 0F0H + 0081 109 SP DATA 81H + 0082 110 DPL DATA 82H + 0083 111 DPH DATA 83H + 008E 112 CKCON DATA 8EH + 00D2 113 CLKPRE DATA 0D2H + 0087 114 PCON DATA 87H + 115 + 116 NAME ?C_STARTUP + 117 + 118 + 119 ?C_C51STARTUP SEGMENT CODE + 120 ?STACK SEGMENT IDATA + 121 +---- 122 RSEG ?STACK +0000 123 DS 1 + A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 3 + + 124 + 125 EXTRN CODE (?C_START) + 126 PUBLIC ?C_STARTUP + 127 +---- 128 CSEG AT 0 +0000 020000 F 129 ?C_STARTUP: LJMP STARTUP1 + 130 +---- 131 RSEG ?C_C51STARTUP + 132 +0000 133 STARTUP1: + 134 ;Set Wait State to 0x30 and CPU CLK Prescaler to 1 to Accelerate Startup + 135 ;MOV PCON, #02H ;Enter Standby +0000 758E30 136 MOV CKCON, #30H ;Wait State = 0x30 +0003 75D200 137 MOV CLKPRE, #0 ;CLK Prescaler = 1 + 138 + 139 IF IDATALEN <> 0 +0006 78FF 140 MOV R0,#IDATALEN - 1 +0008 E4 141 CLR A +0009 F6 142 IDATALOOP: MOV @R0,A +000A D8FD 143 DJNZ R0,IDATALOOP + 144 ENDIF + 145 + 146 IF XDATALEN <> 0 + MOV DPTR,#XDATASTART + MOV R7,#LOW (XDATALEN) + IF (LOW (XDATALEN)) <> 0 + MOV R6,#(HIGH (XDATALEN)) +1 + ELSE + MOV R6,#HIGH (XDATALEN) + ENDIF + CLR A + XDATALOOP: MOVX @DPTR,A + INC DPTR + DJNZ R7,XDATALOOP + DJNZ R6,XDATALOOP + ENDIF + 160 + 161 IF PPAGEENABLE <> 0 + MOV PPAGE_SFR,#PPAGE + ENDIF + 164 + 165 IF PDATALEN <> 0 + MOV R0,#LOW (PDATASTART) + MOV R7,#LOW (PDATALEN) + CLR A + PDATALOOP: MOVX @R0,A + INC R0 + DJNZ R7,PDATALOOP + ENDIF + 173 + 174 IF IBPSTACK <> 0 + EXTRN DATA (?C_IBP) + + MOV ?C_IBP,#LOW IBPSTACKTOP + ENDIF + 179 + 180 IF XBPSTACK <> 0 + EXTRN DATA (?C_XBP) + + MOV ?C_XBP,#HIGH XBPSTACKTOP + MOV ?C_XBP+1,#LOW XBPSTACKTOP + ENDIF + 186 + 187 IF PBPSTACK <> 0 + EXTRN DATA (?C_PBP) + MOV ?C_PBP,#LOW PBPSTACKTOP + A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 4 + + ENDIF + 191 +000C 758100 F 192 MOV SP,#?STACK-1 + 193 + 194 ; This code is required if you use L51_BANK.A51 with Banking Mode 4 + 195 ; Code Banking + 196 ; Select Bank 0 for L51_BANK.A51 Mode 4 + 197 + + + + + 202 ; +000F 020000 F 203 LJMP ?C_START + 204 + 205 END + A51 MACRO ASSEMBLER STARTUP 05/27/2024 11:13:53 PAGE 5 + +SYMBOL TABLE LISTING +------ ----- ------- + + +N A M E T Y P E V A L U E ATTRIBUTES + +?C_C51STARTUP. . . C SEG 0012H REL=UNIT +?C_START . . . . . C ADDR ----- EXT +?C_STARTUP . . . . C ADDR 0000H A +?STACK . . . . . . I SEG 0001H REL=UNIT +ACC. . . . . . . . D ADDR 00E0H A +B. . . . . . . . . D ADDR 00F0H A +CKCON. . . . . . . D ADDR 008EH A +CLKPRE . . . . . . D ADDR 00D2H A +DPH. . . . . . . . D ADDR 0083H A +DPL. . . . . . . . D ADDR 0082H A +IBPSTACK . . . . . N NUMB 0000H A +IBPSTACKTOP. . . . N NUMB 0100H A +IDATALEN . . . . . N NUMB 0100H A +IDATALOOP. . . . . C ADDR 0009H R SEG=?C_C51STARTUP +PBPSTACK . . . . . N NUMB 0000H A +PBPSTACKTOP. . . . N NUMB 0100H A +PCON . . . . . . . D ADDR 0087H A +PDATALEN . . . . . N NUMB 0000H A +PDATASTART . . . . N NUMB 0000H A +PPAGE. . . . . . . N NUMB 0000H A +PPAGEENABLE. . . . N NUMB 0000H A +PPAGE_SFR. . . . . D ADDR 00A0H A +SP . . . . . . . . D ADDR 0081H A +STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP +XBPSTACK . . . . . N NUMB 0000H A +XBPSTACKTOP. . . . N NUMB 0000H A +XDATALEN . . . . . N NUMB 0000H A +XDATASTART . . . . N NUMB 0000H A + + +REGISTER BANK(S) USED: 0 + + +ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/adc.lst b/Project/Listings/adc.lst new file mode 100644 index 0000000..ad0a296 --- /dev/null +++ b/Project/Listings/adc.lst @@ -0,0 +1,356 @@ +C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE ADC +OBJECT MODULE PLACED IN .\Objects\adc.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\adc\adc.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn + -c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key + -;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v + -ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\adc.lst + -) TABS(2) OBJECT(.\Objects\adc.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file adc.c + 5 * @brief adc module + 6 * @ic TP3102 + 7 * + 8 * @version 1.0 + 9 * @date 2024/03/26 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/04 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 + 21 #include "adc.h" + 22 #include "system.h" + 23 #include "sys_tim.h" + 24 + 25 #if ADC_ENABLE + 26 + 27 /******************************************************************************\ + 28 Macro definitions + 29 \******************************************************************************/ + 30 + 31 /******************************************************************************\ + 32 Variables definitions + 33 \******************************************************************************/ + 34 + 35 idata uint16_t Vbat_Adc = 0; + 36 + 37 + 38 /******************************************************************************\ + 39 Functions definitions + 40 \******************************************************************************/ + 41 + 42 + 43 /* + 44 ******************************************************************************* + 45 * uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) + 46 * + 47 * Description : ȡӦͨĵѹADCֵ + 48 * + 49 * Arguments : NONE + 50 + 51 * Returns : adc Value (mV) + C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 2 + + 52 + 53 * Notes : NONE + 54 * + 55 ******************************************************************************* + 56 */ + 57 + 58 uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) + 59 { + 60 1 uint8_t index = 0; + 61 1 uint16_t adc_data = 0; + 62 1 uint16_t adc_plus_data = 0; + 63 1 + 64 1 SFRADDR = ADC_CTL0; + 65 1 SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + 66 1 + 67 1 for(index=0; index<8; index++) + 68 1 { + 69 2 ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + 70 2 + 71 2 while(ADC_CTL1 & 0x01); //Wait for conversion complete + 72 2 + 73 2 adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + 74 2 + 75 2 adc_data |= (uint16_t)(ADC_DATH << 8); + 76 2 + 77 2 adc_plus_data += adc_data; + 78 2 #ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); + #endif + 81 2 // adc_data = 0; + 82 2 } + 83 1 + 84 1 adc_data = adc_plus_data >> 3; + 85 1 + 86 1 #ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); + #endif + 89 1 + 90 1 #ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); + #endif + 93 1 + 94 1 return adc_data; + 95 1 } + 96 + 97 /* + 98 ******************************************************************************* + 99 * uint16_t Vbat_Value(void) + 100 * + 101 * Description : Vbat Value.ȡصѹ + 102 * + 103 * Arguments : NONE + 104 + 105 * Returns : Vbat Value (mV) + 106 + 107 * Notes : NONE + 108 * + 109 ******************************************************************************* + 110 */ + 111 uint16_t Vbat_Value(void) + 112 { + 113 1 uint16_t n_Vbat_Data = 0; + C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 3 + + 114 1 //uint16_t n_ADC_Plus = 0; + 115 1 + 116 1 n_Vbat_Data = ADC_Chn_Data(ADC_BAT); + 117 1 + 118 1 #ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); + #endif + 121 1 + 122 1 // n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //ȡVREF + 123 1 + 124 1 n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvr + -ef + 125 1 + 126 1 #ifdef _DEBUG_ADC + printf("bat,Vbat:%d.\r\n",(uint16_t)n_Vbat_Data); + #endif + 129 1 + 130 1 return n_Vbat_Data; + 131 1 } + 132 + 133 /* + 134 ******************************************************************************* + 135 * uint16_t ADC_NTC_Value(void) + 136 * + 137 * Description : ȡNTCѹ + 138 + 139 * Arguments : NONE + 140 + 141 * Returns : ADC Value (mV) + 142 + 143 * Notes : NONE + 144 * + 145 ******************************************************************************* + 146 */ + 147 #ifdef ADC_NTC_ENABLE + 148 + 149 uint16_t ADC_NTC_Value(void) + 150 { + 151 1 uint16_t adc_data = 0; + 152 1 // uint16_t adc_plus_data = 0; + 153 1 + 154 1 adc_data = ADC_Chn_Data(ADC_CH4); + 155 1 + 156 1 #ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); + #endif + 159 1 // adc_plus_data = ADC_Chn_Data(ADC_VREF); //ȡVREF + 160 1 + 161 1 adc_data = (uint32_t)(adc_data) * VREF / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref + 162 1 + 163 1 #ifdef _DEBUG_ADC + printf("Adc,Vadc:%d.\r\n", (uint16_t)adc_data); + #endif + 166 1 + 167 1 return adc_data; + 168 1 } + 169 #endif + 170 + 171 + 172 #endif + 173 + C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 4 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION _ADC_Chn_Data (BEGIN) + ; SOURCE LINE # 58 +;---- Variable 'adc_chn' assigned to Register 'R5' ---- +0000 AD07 MOV R5,AR7 + ; SOURCE LINE # 59 + ; SOURCE LINE # 60 +;---- Variable 'index' assigned to Register 'R4' ---- +0002 E4 CLR A +0003 FC MOV R4,A + ; SOURCE LINE # 61 +;---- Variable 'adc_data' assigned to Register 'R2/R3' ---- +0004 FB MOV R3,A +0005 FA MOV R2,A + ; SOURCE LINE # 62 +0006 F500 R MOV adc_plus_data,A +0008 F500 R MOV adc_plus_data+01H,A + ; SOURCE LINE # 64 +000A 75FE29 MOV SFRADDR,#029H + ; SOURCE LINE # 65 +000D 75FF8B MOV SFRDATA,#08BH + ; SOURCE LINE # 67 +0010 ?C0001: + ; SOURCE LINE # 68 + ; SOURCE LINE # 69 +0010 ED MOV A,R5 +0011 C4 SWAP A +0012 54F0 ANL A,#0F0H +0014 4401 ORL A,#01H +0016 F5A5 MOV ADC_CTL1,A +0018 ?C0004: + ; SOURCE LINE # 71 +0018 E5A5 MOV A,ADC_CTL1 +001A 20E0FB JB ACC.0,?C0004 + ; SOURCE LINE # 73 +001D AFA1 MOV R7,ADC_DATL +001F AB07 MOV R3,AR7 + ; SOURCE LINE # 75 +0021 AFA2 MOV R7,ADC_DATH +0023 EF MOV A,R7 +0024 FE MOV R6,A +0025 EE MOV A,R6 +0026 FA MOV R2,A + ; SOURCE LINE # 77 +0027 EB MOV A,R3 +0028 2500 R ADD A,adc_plus_data+01H +002A F500 R MOV adc_plus_data+01H,A +002C EA MOV A,R2 +002D 3500 R ADDC A,adc_plus_data +002F F500 R MOV adc_plus_data,A + ; SOURCE LINE # 82 +0031 0C INC R4 +0032 BC08DB CJNE R4,#08H,?C0001 +0035 ?C0002: + ; SOURCE LINE # 84 +0035 E500 R MOV A,adc_plus_data+01H +0037 AE00 R MOV R6,adc_plus_data +0039 7803 MOV R0,#03H +003B ?C0009: +003B CE XCH A,R6 + C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 5 + +003C C3 CLR C +003D 13 RRC A +003E CE XCH A,R6 +003F 13 RRC A +0040 D8F9 DJNZ R0,?C0009 + ; SOURCE LINE # 94 +0042 FF MOV R7,A + ; SOURCE LINE # 95 +0043 22 RET + ; FUNCTION _ADC_Chn_Data (END) + + ; FUNCTION Vbat_Value (BEGIN) + ; SOURCE LINE # 111 + ; SOURCE LINE # 112 + ; SOURCE LINE # 113 +0000 E4 CLR A +0001 F500 R MOV n_Vbat_Data,A +0003 F500 R MOV n_Vbat_Data+01H,A + ; SOURCE LINE # 116 +0005 7F05 MOV R7,#05H +0007 120000 R LCALL _ADC_Chn_Data +000A 8E00 R MOV n_Vbat_Data,R6 +000C 8F00 R MOV n_Vbat_Data+01H,R7 + ; SOURCE LINE # 124 +000E 7F06 MOV R7,#06H +0010 120000 R LCALL _ADC_Chn_Data +0013 E4 CLR A +0014 FC MOV R4,A +0015 FD MOV R5,A +0016 C004 PUSH AR4 +0018 A905 MOV R1,AR5 +001A AA06 MOV R2,AR6 +001C AB07 MOV R3,AR7 +001E AE00 R MOV R6,n_Vbat_Data +0020 AF00 R MOV R7,n_Vbat_Data+01H +0022 7C07 MOV R4,#07H +0024 7DD0 MOV R5,#0D0H +0026 120000 E LCALL ?C?LIMUL +0029 D000 POP AR0 +002B 120000 E LCALL ?C?ULDIV +002E 8E00 R MOV n_Vbat_Data,R6 +0030 8F00 R MOV n_Vbat_Data+01H,R7 + ; SOURCE LINE # 130 + ; SOURCE LINE # 131 +0032 22 RET + ; FUNCTION Vbat_Value (END) + + ; FUNCTION ADC_NTC_Value (BEGIN) + ; SOURCE LINE # 149 + ; SOURCE LINE # 150 + ; SOURCE LINE # 151 +0000 E4 CLR A +0001 F500 R MOV adc_data,A +0003 F500 R MOV adc_data+01H,A + ; SOURCE LINE # 154 +0005 7F04 MOV R7,#04H +0007 120000 R LCALL _ADC_Chn_Data +000A 8E00 R MOV adc_data,R6 +000C 8F00 R MOV adc_data+01H,R7 + ; SOURCE LINE # 161 +000E 7F06 MOV R7,#06H +0010 120000 R LCALL _ADC_Chn_Data + C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 6 + +0013 E4 CLR A +0014 FC MOV R4,A +0015 FD MOV R5,A +0016 C004 PUSH AR4 +0018 A905 MOV R1,AR5 +001A AA06 MOV R2,AR6 +001C AB07 MOV R3,AR7 +001E AE00 R MOV R6,adc_data +0020 AF00 R MOV R7,adc_data+01H +0022 7C03 MOV R4,#03H +0024 7DE8 MOV R5,#0E8H +0026 120000 E LCALL ?C?LIMUL +0029 D000 POP AR0 +002B 120000 E LCALL ?C?ULDIV +002E 8E00 R MOV adc_data,R6 +0030 8F00 R MOV adc_data+01H,R7 + ; SOURCE LINE # 167 + ; SOURCE LINE # 168 +0032 22 RET + ; FUNCTION ADC_NTC_Value (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 170 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- 6 + IDATA SIZE = 2 ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/bat.lst b/Project/Listings/bat.lst new file mode 100644 index 0000000..fc2ad67 --- /dev/null +++ b/Project/Listings/bat.lst @@ -0,0 +1,313 @@ +C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE BAT +OBJECT MODULE PLACED IN .\Objects\bat.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\bat\bat.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn + -c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key + -;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v + -ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\bat.lst + -) TABS(2) OBJECT(.\Objects\bat.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file bat.c + 5 * @brief Voltage-based RC model gauge algorithm + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2023/02/20 17:35:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2023/02/20 Alex build this file + 18 ****************************************************************************** + 19 */ + 20 #include "bat.h" + 21 #include "adc.h" + 22 + 23 idata uint8_t bat_level = 0; + 24 bit F_batlevel_low = 0; //صѹ + 25 + 26 #if BAT_VALUE + 27 + 28 #define C_offset_bat_level_MAX 50 + 29 #define C_offset_bat_level_MIN 10 + 30 + 31 #define C_bat_level_protect 0 + 32 #define C_bat_level_lowpower 1 + 33 + 34 + 35 //bit F_batlevel_protect = 0; //͵籣 + 36 idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + 37 + 38 + 39 #define C_batLevel_SetMax 10 + 40 + 41 /*صѹḡ,ѹҪԡ*/ + 42 const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] = + 43 { + 44 3000, //1 + 45 3100, //2 + 46 3300, //3 + 47 3400, //4 + 48 3500, //5 + 49 3650, //6 + 50 3800, //7 + 51 3900, //8 + C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 2 + + 52 4050, //9 + 53 4200 //10 + 54 }; + 55 #if 0 + const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] = + { + 3050, //1 + 3150, //2 + 3350, //3 + 3450, //4 + 3550, //5 + 3700, //6 + 3850, //7 + 3950, //8 + 4100, //9 + 4200 //10 + }; + #endif + 70 void check_bat_level(void) + 71 { + 72 1 uint8_t i = 0; + 73 1 //get bat level + 74 1 #if ADC_ENABLE + 75 1 for(i=0; i < C_batLevel_SetMax; i++) + 76 1 { + 77 2 #if 0 + + if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + { + break; + } + + #else + 85 2 if(CHIP_STA4 & 0x80) // + 86 2 { + 87 3 if( Vbat_Adc < Boost_batlevel_Threshold[i] + 50 ) + 88 3 break; + 89 3 } + 90 2 else //ŵ + 91 2 { + 92 3 if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + 93 3 { + 94 4 break; + 95 4 } + 96 3 } + 97 2 #endif + 98 2 } + 99 1 #endif + 100 1 + 101 1 if( i > bat_level ) + 102 1 { + 103 2 offset_bat_level++; + 104 2 } + 105 1 else + 106 1 { + 107 2 offset_bat_level--; + 108 2 } + 109 1 + 110 1 //debounce + 111 1 if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) ) + 112 1 { + 113 2 //update + C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 3 + + 114 2 bat_level = i; + 115 2 offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + 116 2 } + 117 1 #if 0 + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect + 1 ) ) + { + F_batlevel_protect = 0; + } + #endif + 127 1 if( bat_level <= C_bat_level_lowpower ) + 128 1 { + 129 2 F_batlevel_low = 1; + 130 2 } + 131 1 else if( bat_level > (C_bat_level_lowpower + 1) ) + 132 1 { + 133 2 F_batlevel_low = 0; + 134 2 } + 135 1 } + 136 + 137 #endif + C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 4 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Com0010 (BEGIN) +0000 L?0017: +0000 EF MOV A,R7 +0001 25E0 ADD A,ACC +0003 2400 R ADD A,#LOW Boost_batlevel_Threshold +0005 F8 MOV R0,A +0006 E6 MOV A,@R0 +0007 FC MOV R4,A +0008 08 INC R0 +0009 E6 MOV A,@R0 +000A 22 RET + ; FUNCTION Com0010 (END) + + ; FUNCTION check_bat_level (BEGIN) + ; SOURCE LINE # 70 + ; SOURCE LINE # 71 + ; SOURCE LINE # 72 +;---- Variable 'i' assigned to Register 'R7' ---- +0000 E4 CLR A +0001 FF MOV R7,A + ; SOURCE LINE # 75 +0002 ?C0001: + ; SOURCE LINE # 76 + ; SOURCE LINE # 85 +0002 E5E6 MOV A,CHIP_STA4 +0004 30E715 JNB ACC.7,?C0004 + ; SOURCE LINE # 86 + ; SOURCE LINE # 87 +0007 120000 R LCALL L?0017 +000A 2432 ADD A,#032H +000C FD MOV R5,A +000D E4 CLR A +000E 3C ADDC A,R4 +000F FC MOV R4,A +0010 C3 CLR C +0011 7800 E MOV R0,#LOW Vbat_Adc+01H +0013 E6 MOV A,@R0 +0014 9D SUBB A,R5 +0015 18 DEC R0 +0016 E6 MOV A,@R0 +0017 9C SUBB A,R4 +0018 5010 JNC ?C0003 + ; SOURCE LINE # 88 +001A 8012 SJMP ?C0002 + ; SOURCE LINE # 89 +001C ?C0004: + ; SOURCE LINE # 91 + ; SOURCE LINE # 92 +001C 120000 R LCALL L?0017 +001F FD MOV R5,A +0020 C3 CLR C +0021 7800 E MOV R0,#LOW Vbat_Adc+01H +0023 E6 MOV A,@R0 +0024 9D SUBB A,R5 +0025 18 DEC R0 +0026 E6 MOV A,@R0 +0027 9C SUBB A,R4 +0028 4004 JC ?C0002 + ; SOURCE LINE # 93 + C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 5 + + ; SOURCE LINE # 94 + ; SOURCE LINE # 95 + ; SOURCE LINE # 96 + ; SOURCE LINE # 98 +002A ?C0003: +002A 0F INC R7 +002B BF0AD4 CJNE R7,#0AH,?C0001 +002E ?C0002: + ; SOURCE LINE # 101 +002E 7800 R MOV R0,#LOW bat_level +0030 E6 MOV A,@R0 +0031 FE MOV R6,A +0032 EF MOV A,R7 +0033 D3 SETB C +0034 9E SUBB A,R6 +0035 4004 JC ?C0008 + ; SOURCE LINE # 102 + ; SOURCE LINE # 103 +0037 18 DEC R0 +0038 06 INC @R0 + ; SOURCE LINE # 104 +0039 8003 SJMP ?C0009 +003B ?C0008: + ; SOURCE LINE # 106 + ; SOURCE LINE # 107 +003B 7800 R MOV R0,#LOW offset_bat_level +003D 16 DEC @R0 + ; SOURCE LINE # 108 +003E ?C0009: + ; SOURCE LINE # 111 +003E 7800 R MOV R0,#LOW offset_bat_level +0040 E6 MOV A,@R0 +0041 FE MOV R6,A +0042 D3 SETB C +0043 9432 SUBB A,#032H +0045 5006 JNC ?C0011 +0047 EE MOV A,R6 +0048 C3 CLR C +0049 940A SUBB A,#0AH +004B 5007 JNC ?C0010 +004D ?C0011: + ; SOURCE LINE # 112 + ; SOURCE LINE # 114 +004D 7800 R MOV R0,#LOW bat_level +004F A607 MOV @R0,AR7 + ; SOURCE LINE # 115 +0051 18 DEC R0 +0052 761E MOV @R0,#01EH + ; SOURCE LINE # 116 +0054 ?C0010: + ; SOURCE LINE # 127 +0054 7800 R MOV R0,#LOW bat_level +0056 E6 MOV A,@R0 +0057 FF MOV R7,A +0058 D3 SETB C +0059 9401 SUBB A,#01H +005B 5003 JNC ?C0012 + ; SOURCE LINE # 128 + ; SOURCE LINE # 129 +005D D200 R SETB F_batlevel_low + ; SOURCE LINE # 130 +005F 22 RET + C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 6 + +0060 ?C0012: + ; SOURCE LINE # 131 +0060 EF MOV A,R7 +0061 D3 SETB C +0062 9402 SUBB A,#02H +0064 4002 JC ?C0015 + ; SOURCE LINE # 132 + ; SOURCE LINE # 133 +0066 C200 R CLR F_batlevel_low + ; SOURCE LINE # 134 + ; SOURCE LINE # 135 +0068 ?C0015: +0068 22 RET + ; FUNCTION check_bat_level (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 116 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 20 ---- + IDATA SIZE = 2 ---- + BIT SIZE = 1 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/charger_module.lst b/Project/Listings/charger_module.lst new file mode 100644 index 0000000..cccccc7 --- /dev/null +++ b/Project/Listings/charger_module.lst @@ -0,0 +1,555 @@ +C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE CHARGER_MODULE +OBJECT MODULE PLACED IN .\Objects\charger_module.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\charger\charger_module.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE + -INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\in + -c;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\user + -app;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\L + -istings\charger_module.lst) TABS(2) OBJECT(.\Objects\charger_module.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file charger_module.c + 5 * @brief charger module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/07/12 17:35:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/07/12 Alex build this file + 18 ****************************************************************************** + 19 */ + 20 /*_____ I N C L U D E S ____________________________________________________*/ + 21 #include "charger_module.h" + 22 #include "adc.h" + 23 #include "sys_tim.h" + 24 #include "discharge_module.h" + 25 #include "system.h" + 26 #include "vox_module.h" + 27 #include "led.h" + 28 + 29 bit Charger_Done = 0; + 30 + 31 #if CHARGER_ENABLE + 32 /******************************************************************************\ + 33 Macro definitions + 34 \******************************************************************************/ + 35 #define NTC_PRO_DEBOUNCE_TIM 10 + 36 + 37 /******************************************************************************\ + 38 Variables definitions + 39 \******************************************************************************/ + 40 + 41 //idata TE_CHG_STA ChgStatus; // ϵͳ״̬ + 42 + 43 + 44 + 45 #ifdef ADC_NTC_ENABLE + 46 + 47 bit NTC_Low_Pro_Flag = 0; + 48 bit NTC_High_Pro_Flag = 0; + 49 + 50 #endif + 51 /******************************************************************************\ + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 2 + + 52 Functions definitions + 53 \******************************************************************************/ + 54 + 55 /* + 56 ******************************************************************************* + 57 * void Charger_init(void) + 58 * + 59 * Description : Charger Initialization + 60 * + 61 * Arguments : NONE + 62 + 63 * Returns : NONE + 64 + 65 * Notes : NONE + 66 * + 67 ******************************************************************************* + 68 */ + 69 #if 0 + void Charger_Init(void) + { + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + + } + #endif + 81 + 82 /* + 83 ******************************************************************************* + 84 * void Charger_Current_Set(void) + 85 * + 86 * Description : Charger Initialization + 87 * + 88 * Arguments : NONE + 89 + 90 * Returns : NONE + 91 + 92 * Notes : NONE + 93 * + 94 ******************************************************************************* + 95 */ + 96 #if 0 + void Charger_Current_Set(void) + { + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + + } + #endif + 111 + 112 /* + 113 ******************************************************************************* + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 3 + + 114 * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + 115 * + 116 * Description : Charger NTC Control + 117 * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + 118 * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + 119 + 120 * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + 121 * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + 122 * NTC 0Vرճͷŵ硣NTC رճ磬 + 123 * ¶Ȼָ 100msټ硣 + 124 * + 125 * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + 126 + 127 * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + 128 + 129 * Notes : NONE + 130 * + 131 ******************************************************************************* + 132 */ + 133 #ifdef ADC_NTC_ENABLE + 134 uint8_t PMU_NTC_Control(void) + 135 { + 136 1 uint16_t NTC_Adc = 0; + 137 1 uint8_t NTC_Flag = TRUE; + 138 1 + 139 1 NTC_Adc = ADC_NTC_Value(); + 140 1 + 141 1 if(NTC_Adc >= 3700) ////NTCܣNTCգ NTC ܣ + 142 1 { + 143 2 return TRUE; + 144 2 } + 145 1 + 146 1 if(CHIP_STA4 & 0x80) + 147 1 { + 148 2 if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + 149 2 { + 150 3 if(NTC_Low_Pro_Flag) + 151 3 { + 152 4 if( NTC_Adc < T_3C ) + 153 4 { + 154 5 NTC_Low_Pro_Flag = 0; + 155 5 NTC_Flag = TRUE; + 156 5 } + 157 4 else + 158 4 { + 159 5 NTC_Flag = FALSE; + 160 5 } + 161 4 } + 162 3 + 163 3 if(NTC_High_Pro_Flag) + 164 3 { + 165 4 if( NTC_Adc > T_42C ) + 166 4 { + 167 5 NTC_High_Pro_Flag = 0; + 168 5 NTC_Flag = TRUE; + 169 5 } + 170 4 else + 171 4 { + 172 5 NTC_Flag = FALSE; + 173 5 } + 174 4 } + 175 3 } + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 4 + + 176 2 else //쳣 + 177 2 { + 178 3 + 179 3 if(NTC_Adc > T_0C) + 180 3 { + 181 4 NTC_Low_Pro_Flag = 1; + 182 4 } + 183 3 else + 184 3 if(NTC_Adc < T_45C) + 185 3 { + 186 4 NTC_High_Pro_Flag = 1; + 187 4 } + 188 3 + 189 3 CHG_CTL &= ~0x01; //Disable Charger. + 190 3 + 191 3 NTC_Flag = FALSE; + 192 3 } + 193 2 } + 194 1 + 195 1 return NTC_Flag; + 196 1 } + 197 #endif + 198 /* + 199 ******************************************************************************* + 200 * void Charger_Handler(void) + 201 * + 202 * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + - + 203 쳣ӲӦͱ־λԽӦ + 204 * + 205 * Arguments : NONE + 206 + 207 * Returns : NONE + 208 + 209 * Notes : NONE + 210 * + 211 ******************************************************************************* + 212 */ + 213 /* + 214 1糬ʱ糬ʱرճʹܣȴVINγ + 215 */ + 216 void Charger_Handler(void) + 217 { + 218 1 #if 1 + 219 1 if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + 220 1 { + 221 2 CHG_CTL &= ~0x01; //Disable Charger + 222 2 IRQ_FLAG9 = 0x10; //δ磬Charg complete interruptж + 223 2 Charger_Done = 0; + 224 2 return; + 225 2 } + 226 1 + 227 1 /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + 228 1 if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + 229 1 { + 230 2 CHG_CTL &= ~0x01; //Disable Charger + 231 2 if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + 232 2 { + 233 3 IRQ_FLAG9 = 0x0C; + 234 3 IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + 235 3 } + 236 2 return; + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 5 + + 237 2 } + 238 1 else /*δʱPlugPlugin\Plugout int*/ + 239 1 { + 240 2 if( IRQ_FLAG10 & 0xC0 ) + 241 2 { + 242 3 IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + 243 3 } + 244 2 } + 245 1 + 246 1 #ifdef ADC_NTC_ENABLE + 247 1 /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + 248 1 if( PMU_NTC_Control() == FALSE ) //NTC硣 + 249 1 { + 250 2 return; + 251 2 } + 252 1 #endif + 253 1 + 254 1 if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + 255 1 { + 256 2 #if ADC_ENABLE + 257 2 + 258 2 #ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); + #endif + 261 2 if( Vbat_Adc < BAT_RECHARG ) + 262 2 { + 263 3 //CHG_CTL |= 0x01; //Enable Charger + 264 3 IRQ_FLAG9 = 0x10; + 265 3 #ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); + #endif + 268 3 } + 269 2 else + 270 2 { + 271 3 CHG_CTL &= ~0x01; //Disable Charger + 272 3 #ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); + #endif + 275 3 } + 276 2 Charger_Done = 1; + 277 2 + 278 2 #endif + 279 2 } + 280 1 else + 281 1 { + 282 2 CHG_CTL |= 0x01; //Enable Charger + 283 2 Charger_Done = 0; + 284 2 } + 285 1 #endif + 286 1 } + 287 + 288 #endif + 289 + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 6 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION PMU_NTC_Control (BEGIN) + ; SOURCE LINE # 134 + ; SOURCE LINE # 135 + ; SOURCE LINE # 136 +;---- Variable 'NTC_Adc' assigned to Register 'R6/R7' ---- +0000 E4 CLR A +0001 FF MOV R7,A +0002 FE MOV R6,A + ; SOURCE LINE # 137 +0003 750001 R MOV NTC_Flag,#01H + ; SOURCE LINE # 139 +0006 120000 E LCALL ADC_NTC_Value + ; SOURCE LINE # 141 +0009 C3 CLR C +000A EF MOV A,R7 +000B 9474 SUBB A,#074H +000D EE MOV A,R6 +000E 940E SUBB A,#0EH +0010 4003 JC ?C0001 + ; SOURCE LINE # 142 + ; SOURCE LINE # 143 +0012 7F01 MOV R7,#01H +0014 22 RET + ; SOURCE LINE # 144 +0015 ?C0001: + ; SOURCE LINE # 146 +0015 E5E6 MOV A,CHIP_STA4 +0017 30E757 JNB ACC.7,?C0003 + ; SOURCE LINE # 147 + ; SOURCE LINE # 148 +001A D3 SETB C +001B EF MOV A,R7 +001C 9436 SUBB A,#036H +001E EE MOV A,R6 +001F 9405 SUBB A,#05H +0021 5030 JNC ?C0004 +0023 EF MOV A,R7 +0024 9422 SUBB A,#022H +0026 EE MOV A,R6 +0027 9402 SUBB A,#02H +0029 4028 JC ?C0004 + ; SOURCE LINE # 149 + ; SOURCE LINE # 150 +002B 300012 R JNB NTC_Low_Pro_Flag,?C0005 + ; SOURCE LINE # 151 + ; SOURCE LINE # 152 +002E EF MOV A,R7 +002F 9414 SUBB A,#014H +0031 EE MOV A,R6 +0032 9405 SUBB A,#05H +0034 5007 JNC ?C0006 + ; SOURCE LINE # 153 + ; SOURCE LINE # 154 +0036 C200 R CLR NTC_Low_Pro_Flag + ; SOURCE LINE # 155 +0038 750001 R MOV NTC_Flag,#01H + ; SOURCE LINE # 156 +003B 8003 SJMP ?C0005 +003D ?C0006: + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 7 + + ; SOURCE LINE # 158 + ; SOURCE LINE # 159 +003D E4 CLR A +003E F500 R MOV NTC_Flag,A + ; SOURCE LINE # 160 + ; SOURCE LINE # 161 +0040 ?C0005: + ; SOURCE LINE # 163 +0040 30002E R JNB NTC_High_Pro_Flag,?C0003 + ; SOURCE LINE # 164 + ; SOURCE LINE # 165 +0043 D3 SETB C +0044 EF MOV A,R7 +0045 9444 SUBB A,#044H +0047 EE MOV A,R6 +0048 9402 SUBB A,#02H +004A 4022 JC ?C0026 + ; SOURCE LINE # 166 + ; SOURCE LINE # 167 +004C C200 R CLR NTC_High_Pro_Flag + ; SOURCE LINE # 168 +004E 750001 R MOV NTC_Flag,#01H + ; SOURCE LINE # 169 +0051 801E SJMP ?C0003 +0053 ?C0004: + ; SOURCE LINE # 177 + ; SOURCE LINE # 179 +0053 D3 SETB C +0054 EF MOV A,R7 +0055 9436 SUBB A,#036H +0057 EE MOV A,R6 +0058 9405 SUBB A,#05H +005A 4004 JC ?C0012 + ; SOURCE LINE # 180 + ; SOURCE LINE # 181 +005C D200 R SETB NTC_Low_Pro_Flag + ; SOURCE LINE # 182 +005E 800B SJMP ?C0013 +0060 ?C0012: + ; SOURCE LINE # 184 +0060 C3 CLR C +0061 EF MOV A,R7 +0062 9422 SUBB A,#022H +0064 EE MOV A,R6 +0065 9402 SUBB A,#02H +0067 5002 JNC ?C0013 + ; SOURCE LINE # 185 + ; SOURCE LINE # 186 +0069 D200 R SETB NTC_High_Pro_Flag + ; SOURCE LINE # 187 +006B ?C0013: + ; SOURCE LINE # 189 +006B 53B3FE ANL CHG_CTL,#0FEH + ; SOURCE LINE # 191 +006E ?C0026: +006E E4 CLR A +006F F500 R MOV NTC_Flag,A + ; SOURCE LINE # 192 + ; SOURCE LINE # 193 +0071 ?C0003: + ; SOURCE LINE # 195 +0071 AF00 R MOV R7,NTC_Flag + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 8 + + ; SOURCE LINE # 196 +0073 ?C0002: +0073 22 RET + ; FUNCTION PMU_NTC_Control (END) + + ; FUNCTION Charger_Handler (BEGIN) + ; SOURCE LINE # 216 + ; SOURCE LINE # 217 + ; SOURCE LINE # 219 +0000 E5E6 MOV A,CHIP_STA4 +0002 20E709 JB ACC.7,?C0015 + ; SOURCE LINE # 220 + ; SOURCE LINE # 221 +0005 53B3FE ANL CHG_CTL,#0FEH + ; SOURCE LINE # 222 +0008 75F210 MOV IRQ_FLAG9,#010H + ; SOURCE LINE # 223 +000B C200 R CLR Charger_Done +000D 22 RET + ; SOURCE LINE # 225 +000E ?C0015: + ; SOURCE LINE # 228 +000E E5F2 MOV A,IRQ_FLAG9 +0010 540C ANL A,#0CH +0012 6010 JZ ?C0017 + ; SOURCE LINE # 229 + ; SOURCE LINE # 230 +0014 53B3FE ANL CHG_CTL,#0FEH + ; SOURCE LINE # 231 +0017 E5F3 MOV A,IRQ_FLAG10 +0019 54C0 ANL A,#0C0H +001B 6037 JZ ?C0016 + ; SOURCE LINE # 232 + ; SOURCE LINE # 233 +001D 75F20C MOV IRQ_FLAG9,#0CH + ; SOURCE LINE # 234 +0020 75F3C0 MOV IRQ_FLAG10,#0C0H + ; SOURCE LINE # 235 +0023 22 RET + ; SOURCE LINE # 237 +0024 ?C0017: + ; SOURCE LINE # 239 + ; SOURCE LINE # 240 +0024 E5F3 MOV A,IRQ_FLAG10 +0026 54C0 ANL A,#0C0H +0028 6003 JZ ?C0019 + ; SOURCE LINE # 241 + ; SOURCE LINE # 242 +002A 75F3C0 MOV IRQ_FLAG10,#0C0H + ; SOURCE LINE # 243 + ; SOURCE LINE # 244 +002D ?C0019: + ; SOURCE LINE # 248 +002D 120000 R LCALL PMU_NTC_Control +0030 EF MOV A,R7 +0031 6021 JZ ?C0016 + ; SOURCE LINE # 249 + ; SOURCE LINE # 251 + ; SOURCE LINE # 254 +0033 E5F2 MOV A,IRQ_FLAG9 +0035 30E417 JNB ACC.4,?C0022 + ; SOURCE LINE # 255 + C51 COMPILER V9.57.0.0 CHARGER_MODULE 06/14/2024 11:08:35 PAGE 9 + + ; SOURCE LINE # 261 +0038 C3 CLR C +0039 7800 E MOV R0,#LOW Vbat_Adc+01H +003B E6 MOV A,@R0 +003C 94EB SUBB A,#0EBH +003E 18 DEC R0 +003F E6 MOV A,@R0 +0040 940F SUBB A,#0FH +0042 5005 JNC ?C0023 + ; SOURCE LINE # 262 + ; SOURCE LINE # 264 +0044 75F210 MOV IRQ_FLAG9,#010H + ; SOURCE LINE # 268 +0047 8003 SJMP ?C0024 +0049 ?C0023: + ; SOURCE LINE # 270 + ; SOURCE LINE # 271 +0049 53B3FE ANL CHG_CTL,#0FEH + ; SOURCE LINE # 275 +004C ?C0024: + ; SOURCE LINE # 276 +004C D200 R SETB Charger_Done + ; SOURCE LINE # 279 +004E 22 RET +004F ?C0022: + ; SOURCE LINE # 281 + ; SOURCE LINE # 282 +004F 43B301 ORL CHG_CTL,#01H + ; SOURCE LINE # 283 +0052 C200 R CLR Charger_Done + ; SOURCE LINE # 284 + ; SOURCE LINE # 286 +0054 ?C0016: +0054 22 RET + ; FUNCTION Charger_Handler (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 201 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- 1 + IDATA SIZE = ---- ---- + BIT SIZE = 3 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/discharge_module.lst b/Project/Listings/discharge_module.lst new file mode 100644 index 0000000..a7e8d65 --- /dev/null +++ b/Project/Listings/discharge_module.lst @@ -0,0 +1,313 @@ +C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE DISCHARGE_MODULE +OBJECT MODULE PLACED IN .\Objects\discharge_module.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\discharge\discharge_module.c ROM(COMPACT) OPTIMIZE(9,SIZE) BRO + -WSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrIn + -c\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\ + -userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT + -(.\Listings\discharge_module.lst) TABS(2) OBJECT(.\Objects\discharge_module.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file discharge_module.c + 5 * @brief discharge module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/07/12 17:35:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/07/12 Alex build this file + 18 ****************************************************************************** + 19 */ + 20 #include "discharge_module.h" + 21 #include "vox_module.h" + 22 #include "adc.h" + 23 #include "charger_module.h" + 24 #include "sys_tim.h" + 25 #include "system.h" + 26 #include "led.h" + 27 + 28 bit gBoost_Prepared_Flag = 0; //Boost㿪 + 29 + 30 #if DISCHARGE_ENABLE + 31 /******************************************************************************\ + 32 Macro definitions + 33 \******************************************************************************/ + 34 + 35 /******************************************************************************\ + 36 Variables definitions + 37 \******************************************************************************/ + 38 + 39 + 40 + 41 bit gBoost_UVLO_Flag = 0; + 42 + 43 /******************************************************************************\ + 44 Functions definitions + 45 \******************************************************************************/ + 46 + 47 #if 0 + /* + ******************************************************************************* + * void DisCharge_Boost_Open(void) + * + C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 2 + + * Description : Boost Open + * VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + * ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void DisCharge_Boost_Open(void) + { + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + + #ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); + #endif + } + } + + /* + ******************************************************************************* + * void DisCharge_Boost_Close(void) + * + * Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost + - + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + + #ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); + #endif + } + } + #endif + 103 /* + 104 ******************************************************************************* + 105 * void DisCharge_Handler(void) + 106 * + 107 * Description : Boostŵıܰ· UVLO ŵ± + 108 * + 109 * Arguments : + 110 + 111 * Returns : + 112 + C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 3 + + 113 * Notes : + 114 * + 115 ******************************************************************************* + 116 */ + 117 + 118 void DisCharge_Handler(void) + 119 { + 120 1 /*ŵ --- Ӳʵ*/ + 121 1 #if 0 + gBoost_Prepared_Flag = 1; + #else + 124 1 /*± --- Ӳʵ*/ + 125 1 if( CHIP_STA3 & 0x02 ) + 126 1 { + 127 2 gBoost_Prepared_Flag = 0; + 128 2 return; + 129 2 } + 130 1 + 131 1 /*Boost Input UVLO Ӳʵ*/ + 132 1 if( (CHIP_STA0 & 0x80) ) //־λ + 133 1 { + 134 2 gBoost_Prepared_Flag = 0; + 135 2 gBoost_UVLO_Flag = 1; + 136 2 return; + 137 2 } + 138 1 + 139 1 /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOO + -ST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + 140 1 if( IRQ_FLAG0 & 0x01 ) + 141 1 { + 142 2 #ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); + #endif + 145 2 gBoost_Prepared_Flag = 0; + 146 2 + 147 2 //һֱ + 148 2 if( F_sys_tim_250ms ) + 149 2 { + 150 3 F_sys_tim_250ms = 0; + 151 3 IRQ_FLAG0 = 0x01; + 152 3 + 153 3 BST_EN = 1; //250msʱһBoost + 154 3 } + 155 2 return; + 156 2 } + 157 1 + 158 1 gBoost_Prepared_Flag = 1; + 159 1 + 160 1 #if ADC_ENABLE + 161 1 /* + 162 1 VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + 163 1 ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + 164 1 ֻ VIN3.6Vboost VIN3.3Vboost߼ + 165 1 ֻעVINʱUVLOָBoostVINӲ + 166 1 */ + 167 1 if ( gBoost_UVLO_Flag ) + 168 1 { + 169 2 if( CHIP_STA4 & 0x80 ) //Power GOOD + 170 2 { + 171 3 if( Vbat_Adc >= OPEN_BOOST_VIN ) + 172 3 { + 173 4 gBoost_Prepared_Flag = 1; + C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 4 + + 174 4 gBoost_UVLO_Flag = 0; + 175 4 } + 176 3 else + 177 3 { + 178 4 BST_EN = 0; //Boost Disable + 179 4 gBoost_Prepared_Flag = 0; + 180 4 } + 181 3 } + 182 2 } + 183 1 + 184 1 #endif + 185 1 #endif + 186 1 } + 187 + 188 #endif + 189 + C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 5 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION DisCharge_Handler (BEGIN) + ; SOURCE LINE # 118 + ; SOURCE LINE # 119 + ; SOURCE LINE # 125 +0000 E5E5 MOV A,CHIP_STA3 +0002 30E103 JNB ACC.1,?C0001 + ; SOURCE LINE # 126 + ; SOURCE LINE # 127 +0005 C200 R CLR gBoost_Prepared_Flag +0007 22 RET + ; SOURCE LINE # 129 +0008 ?C0001: + ; SOURCE LINE # 132 +0008 E5E2 MOV A,CHIP_STA0 +000A 30E705 JNB ACC.7,?C0003 + ; SOURCE LINE # 133 + ; SOURCE LINE # 134 +000D C200 R CLR gBoost_Prepared_Flag + ; SOURCE LINE # 135 +000F D200 R SETB gBoost_UVLO_Flag +0011 22 RET + ; SOURCE LINE # 137 +0012 ?C0003: + ; SOURCE LINE # 140 +0012 E5E8 MOV A,IRQ_FLAG0 +0014 30E00E JNB ACC.0,?C0004 + ; SOURCE LINE # 141 + ; SOURCE LINE # 145 +0017 C200 R CLR gBoost_Prepared_Flag + ; SOURCE LINE # 148 +0019 300029 E JNB F_sys_tim_250ms,?C0002 + ; SOURCE LINE # 149 + ; SOURCE LINE # 150 +001C C200 E CLR F_sys_tim_250ms + ; SOURCE LINE # 151 +001E 75E801 MOV IRQ_FLAG0,#01H + ; SOURCE LINE # 153 +0021 75B501 MOV BST_EN,#01H + ; SOURCE LINE # 154 +0024 22 RET + ; SOURCE LINE # 156 +0025 ?C0004: + ; SOURCE LINE # 158 +0025 D200 R SETB gBoost_Prepared_Flag + ; SOURCE LINE # 167 +0027 30001B R JNB gBoost_UVLO_Flag,?C0002 + ; SOURCE LINE # 168 + ; SOURCE LINE # 169 +002A E5E6 MOV A,CHIP_STA4 +002C 30E716 JNB ACC.7,?C0002 + ; SOURCE LINE # 170 + ; SOURCE LINE # 171 +002F C3 CLR C +0030 7800 E MOV R0,#LOW Vbat_Adc+01H +0032 E6 MOV A,@R0 +0033 9410 SUBB A,#010H +0035 18 DEC R0 +0036 E6 MOV A,@R0 +0037 940E SUBB A,#0EH + C51 COMPILER V9.57.0.0 DISCHARGE_MODULE 06/14/2024 11:08:36 PAGE 6 + +0039 4005 JC ?C0008 + ; SOURCE LINE # 172 + ; SOURCE LINE # 173 +003B D200 R SETB gBoost_Prepared_Flag + ; SOURCE LINE # 174 +003D C200 R CLR gBoost_UVLO_Flag + ; SOURCE LINE # 175 +003F 22 RET +0040 ?C0008: + ; SOURCE LINE # 177 + ; SOURCE LINE # 178 +0040 E4 CLR A +0041 F5B5 MOV BST_EN,A + ; SOURCE LINE # 179 +0043 C200 R CLR gBoost_Prepared_Flag + ; SOURCE LINE # 180 + ; SOURCE LINE # 181 + ; SOURCE LINE # 182 + ; SOURCE LINE # 186 +0045 ?C0002: +0045 22 RET + ; FUNCTION DisCharge_Handler (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 70 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = 2 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/gpio.lst b/Project/Listings/gpio.lst new file mode 100644 index 0000000..49a2150 --- /dev/null +++ b/Project/Listings/gpio.lst @@ -0,0 +1,100 @@ +C51 COMPILER V9.57.0.0 GPIO 06/14/2024 11:08:36 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE GPIO +OBJECT MODULE PLACED IN .\Objects\gpio.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\gpio\gpio.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr + -Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k + -ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc + -\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\gpio. + -lst) TABS(2) OBJECT(.\Objects\gpio.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file gpio.c + 5 * @brief gpio module + 6 * @ic TP3102 + 7 * + 8 * @version 1.0 + 9 * @date 2022/08/05 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/05 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 #include "gpio.h" + 21 #include "sleep.h" + 22 #include "userapp.h" + 23 #include "led.h" + 24 + 25 + 26 /******************************************************************************\ + 27 Macro definitions + 28 \******************************************************************************/ + 29 + 30 /******************************************************************************\ + 31 Variables definitions + 32 \******************************************************************************/ + 33 //uint8_t System_Rst_Cnt = 0; //ϵͳλʱ + 34 + 35 /******************************************************************************\ + 36 Functions definitions + 37 \******************************************************************************/ + 38 + 39 /* + 40 ******************************************************************************* + 41 * void Gpio_Init(void) + 42 * + 43 * Description : gpio Initialization. --- ϵͳʼá + 44 * + 45 * Arguments : + 46 + 47 * Returns : + 48 + 49 * Notes : + 50 * + 51 ******************************************************************************* + C51 COMPILER V9.57.0.0 GPIO 06/14/2024 11:08:36 PAGE 2 + + 52 */ + 53 #if 0 + void GPIO_Init(void) + { + /* GPIO */ + + // SFRADDR = P0_OE; + // SFRDATA |= 0x1C; //P02,P03,P04óģʽ + + SFRADDR = P1_OE; + SFRDATA = 0x01; + } + #endif + 65 + 66 + C51 COMPILER V9.57.0.0 GPIO 06/14/2024 11:08:36 PAGE 3 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/hall.lst b/Project/Listings/hall.lst new file mode 100644 index 0000000..7790e5f --- /dev/null +++ b/Project/Listings/hall.lst @@ -0,0 +1,257 @@ +C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE HALL +OBJECT MODULE PLACED IN .\Objects\hall.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\hall\hall.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr + -Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k + -ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc + -\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\hall. + -lst) TABS(2) OBJECT(.\Objects\hall.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file hall.c + 5 * @brief hall module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/08/04 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/04 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 #include "hall.h" + 21 #include "key.h" + 22 #include "led.h" + 23 #include "vox_module.h" + 24 #include "userapp.h" + 25 #include "charger_module.h" + 26 + 27 + 28 + 29 /******************************************************************************\ + 30 Macro definitions + 31 \******************************************************************************/ + 32 + 33 /******************************************************************************\ + 34 Variables definitions + 35 \******************************************************************************/ + 36 uint8_t Hall_Sta_bk = 0xff; + 37 + 38 CoverStatus_E CoverStatus; + 39 + 40 bit CoverEvent_Flg = 0; //Hallش¼־λ + 41 bit CoverEvent_Flg_led = 0; + 42 + 43 #if KEY_HALL_ENABLE + 44 + 45 /******************************************************************************\ + 46 Functions definitions + 47 \******************************************************************************/ + 48 + 49 /* + 50 ******************************************************************************* + 51 * void Hall_Init(void) + C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 2 + + 52 * + 53 * Description : Hall Initialization + 54 * + 55 * Arguments : + 56 + 57 * Returns : + 58 + 59 * Notes : + 60 * + 61 ******************************************************************************* + 62 */ + 63 #if 0 + void Hall_Init(void) + { + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after + -this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + + #if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; + #else + CoverStatus = OPEN; + #endif + } + else + { + + #if HALL_OPEN_LEV_SET + CoverStatus = OPEN; + #else + CoverStatus = CLOSE; + #endif + } + + //Hall_Sta_bk = (CHIP_STA0 & 0x08); + } + #endif + 90 /* + 91 ******************************************************************************* + 92 * void Hall_Handle(void) + 93 * + 94 * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + 95 * + 96 * Arguments : NONE + 97 + 98 * Returns : NONE + 99 + 100 * Notes : NONE + 101 * + 102 ******************************************************************************* + 103 */ + 104 + 105 void Hall_Handler(void) + 106 { + 107 1 uint8_t Hall_Sta = 0; + 108 1 if( CHIP_STA0 & 0x10 ) + 109 1 { + 110 2 Hall_Sta = CHIP_STA0 & 0x08; + 111 2 if( Hall_Sta != Hall_Sta_bk) + 112 2 { + C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 3 + + 113 3 if(CHIP_STA0 & 0x08) //Hall ߵƽ + 114 3 { + 115 4 //P10 = 1; + 116 4 #if HALL_OPEN_LEV_SET + 117 4 CoverStatus = OPEN; + 118 4 #else + CoverStatus = CLOSE; + led_blink_1time_flag = 0; + #endif + 122 4 + 123 4 #ifdef _DEBUG_HALL + + #if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); + #else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); + #endif + + #endif + 132 4 } + 133 3 else + 134 3 { + 135 4 //P10 = 0; + 136 4 #if HALL_OPEN_LEV_SET + 137 4 CoverStatus = CLOSE; + 138 4 led_blink_1time_flag = 0; + 139 4 #else + CoverStatus = OPEN; + #endif + 142 4 + 143 4 #ifdef _DEBUG_HALL + + #if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); + #else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); + #endif + + #endif + 152 4 } + 153 3 + 154 3 CoverEvent_Flg = 1; + 155 3 CoverEvent_Flg_led = 1; + 156 3 LED_On_Timer = 0; + 157 3 //LED_On_Timer1 = 0; + 158 3 Vox_TX_Timer = 0; + 159 3 Hall_Sta_bk = Hall_Sta; + 160 3 } + 161 2 } + 162 1 } + 163 + 164 #endif + 165 + C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 4 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Hall_Handler (BEGIN) + ; SOURCE LINE # 105 + ; SOURCE LINE # 106 + ; SOURCE LINE # 107 +;---- Variable 'Hall_Sta' assigned to Register 'R7' ---- + ; SOURCE LINE # 108 +0000 E5E2 MOV A,CHIP_STA0 +0002 30E425 JNB ACC.4,?C0005 + ; SOURCE LINE # 109 + ; SOURCE LINE # 110 +0005 E5E2 MOV A,CHIP_STA0 +0007 5408 ANL A,#08H +0009 FF MOV R7,A + ; SOURCE LINE # 111 +000A 6500 R XRL A,Hall_Sta_bk +000C 601C JZ ?C0005 + ; SOURCE LINE # 112 + ; SOURCE LINE # 113 +000E E5E2 MOV A,CHIP_STA0 +0010 30E305 JNB ACC.3,?C0003 + ; SOURCE LINE # 114 + ; SOURCE LINE # 117 +0013 750001 R MOV CoverStatus,#01H + ; SOURCE LINE # 132 +0016 8005 SJMP ?C0004 +0018 ?C0003: + ; SOURCE LINE # 134 + ; SOURCE LINE # 137 +0018 E4 CLR A +0019 F500 R MOV CoverStatus,A + ; SOURCE LINE # 138 +001B C200 E CLR led_blink_1time_flag + ; SOURCE LINE # 152 +001D ?C0004: + ; SOURCE LINE # 154 +001D D200 R SETB CoverEvent_Flg + ; SOURCE LINE # 155 +001F D200 R SETB CoverEvent_Flg_led + ; SOURCE LINE # 156 +0021 E4 CLR A +0022 F500 E MOV LED_On_Timer,A + ; SOURCE LINE # 158 +0024 F500 E MOV Vox_TX_Timer,A +0026 F500 E MOV Vox_TX_Timer+01H,A + ; SOURCE LINE # 159 +0028 8F00 R MOV Hall_Sta_bk,R7 + ; SOURCE LINE # 160 + ; SOURCE LINE # 161 + ; SOURCE LINE # 162 +002A ?C0005: +002A 22 RET + ; FUNCTION Hall_Handler (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 43 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + C51 COMPILER V9.57.0.0 HALL 06/14/2024 11:08:36 PAGE 5 + + PDATA SIZE = ---- ---- + DATA SIZE = 2 ---- + IDATA SIZE = ---- ---- + BIT SIZE = 2 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/key.lst b/Project/Listings/key.lst new file mode 100644 index 0000000..949622c --- /dev/null +++ b/Project/Listings/key.lst @@ -0,0 +1,212 @@ +C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE KEY +OBJECT MODULE PLACED IN .\Objects\key.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\key\key.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn + -c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key + -;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v + -ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\key.lst + -) TABS(2) OBJECT(.\Objects\key.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file key.c + 5 * @brief key module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/08/04 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/04 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 #include "key.h" + 21 #include "system.h" + 22 #include "led.h" + 23 #include "sleep.h" + 24 #include "adc.h" + 25 #include "bat.h" + 26 #include "vox_module.h" + 27 + 28 #if 1 + 29 /******************************************************************************\ + 30 Macro definitions + 31 \******************************************************************************/ + 32 + 33 /******************************************************************************\ + 34 Variables definitions + 35 \******************************************************************************/ + 36 + 37 bit Key_Press_short_irq = 0; + 38 bit Key_Press_l_irq = 0; + 39 bit Key_Press_ll_irq = 0; + 40 + 41 bit Key_l_Flag = 0; + 42 + 43 idata KEY_EVENT_E Event_key = 0; + 44 + 45 /******************************************************************************\ + 46 Functions definitions + 47 \******************************************************************************/ + 48 + 49 /* + 50 ******************************************************************************* + 51 * void Key_Init(void) + C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 2 + + 52 * + 53 * Description : Hey Initialization + 54 * + 55 * Arguments : + 56 + 57 * Returns : + 58 + 59 * Notes : + 60 * + 61 ******************************************************************************* + 62 */ + 63 #if 0 + void Key_Init(void) + { + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. + } + #endif + 77 + 78 + 79 /* + 80 ******************************************************************************* + 81 * void Key_Handler(void) + 82 * + 83 * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + - + 84 CoverStatus --- ָ״̬ṩӦKey¼־λӦô + 85 * + 86 * Arguments : NONE + 87 + 88 * Returns : NONE + 89 + 90 * Notes : NONE + 91 * + 92 ******************************************************************************* + 93 */ + 94 + 95 void Key_Handler(void) + 96 { + 97 1 if( Key_l_Flag ) + 98 1 { + 99 2 Key_Press_l_irq = 0; + 100 2 Key_l_Flag = 0; + 101 2 /*todo*/ + 102 2 Event_key = KEY_EVENT_L_2S; + 103 2 /**/ + 104 2 + 105 2 #ifdef _DEBUG_KEY + printf("long press\r\n"); + #endif + 108 2 } + 109 1 + 110 1 if( Key_Press_ll_irq ) + 111 1 { + 112 2 Key_Press_ll_irq = 0; + C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 3 + + 113 2 /*todo*/ + 114 2 Event_key = KEY_EVENT_LL_8S; + 115 2 // Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + 116 2 + 117 2 #ifdef _DEBUG_KEY + printf("supper long press\r\n"); + #endif + 120 2 } + 121 1 + 122 1 if( Key_Press_short_irq ) + 123 1 { + 124 2 Key_Press_short_irq = 0; + 125 2 /*todo*/ + 126 2 Event_key = KEY_EVENT_SHORT; + 127 2 + 128 2 #ifdef _DEBUG_KEY + printf("short press\r\n"); + #endif + 131 2 + 132 2 } + 133 1 } + 134 + 135 + 136 #endif + C51 COMPILER V9.57.0.0 KEY 06/14/2024 11:09:11 PAGE 4 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Key_Handler (BEGIN) + ; SOURCE LINE # 95 + ; SOURCE LINE # 96 + ; SOURCE LINE # 97 +0000 300008 R JNB Key_l_Flag,?C0001 + ; SOURCE LINE # 98 + ; SOURCE LINE # 99 +0003 C200 R CLR Key_Press_l_irq + ; SOURCE LINE # 100 +0005 C200 R CLR Key_l_Flag + ; SOURCE LINE # 102 +0007 7800 R MOV R0,#LOW Event_key +0009 7602 MOV @R0,#02H + ; SOURCE LINE # 108 +000B ?C0001: + ; SOURCE LINE # 110 +000B 300006 R JNB Key_Press_ll_irq,?C0002 + ; SOURCE LINE # 111 + ; SOURCE LINE # 112 +000E C200 R CLR Key_Press_ll_irq + ; SOURCE LINE # 114 +0010 7800 R MOV R0,#LOW Event_key +0012 7603 MOV @R0,#03H + ; SOURCE LINE # 120 +0014 ?C0002: + ; SOURCE LINE # 122 +0014 300006 R JNB Key_Press_short_irq,?C0004 + ; SOURCE LINE # 123 + ; SOURCE LINE # 124 +0017 C200 R CLR Key_Press_short_irq + ; SOURCE LINE # 126 +0019 7800 R MOV R0,#LOW Event_key +001B 7601 MOV @R0,#01H + ; SOURCE LINE # 132 + ; SOURCE LINE # 133 +001D ?C0004: +001D 22 RET + ; FUNCTION Key_Handler (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 30 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = 1 ---- + BIT SIZE = 4 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/led.lst b/Project/Listings/led.lst new file mode 100644 index 0000000..9e6e030 --- /dev/null +++ b/Project/Listings/led.lst @@ -0,0 +1,333 @@ +C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE LED +OBJECT MODULE PLACED IN .\Objects\led.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\led\led.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn + -c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key + -;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v + -ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\led.lst + -) TABS(2) OBJECT(.\Objects\led.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file led.c + 5 * @brief led module + 6 * @ic TP3102 + 7 * + 8 * @version 1.0 + 9 * @date 2022/08/04 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/04 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 + 21 #include "led.h" + 22 + 23 + 24 #ifdef LED_DISPLAY + 25 + 26 /******************************************************************************\ + 27 Macro definitions + 28 \******************************************************************************/ + 29 + 30 /******************************************************************************\ + 31 Variables definitions + 32 \******************************************************************************/ + 33 static idata TS_LED_INFO LED; + 34 + 35 idata uint8_t Display_Sta = LED_OFF; // ʾ״̬ + 36 + 37 /******************************************************************************\ + 38 Functions definitions + 39 \******************************************************************************/ + 40 #if 0 + /* + * : LED_Init + * : LEDʼ + * : NONE + * ֵ : NONE + */ + /******************************************************************************/ + void LED_Init(void) + /******************************************************************************/ + { + SFRADDR = P0_OE; + C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 2 + + SFRDATA |= 0x08; + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; + } + #endif + 60 /* + 61 * : LED_Set + 62 * : LEDʽ + 63 * : Stateʽ / Period:˸(Ƶʣλms) / Times:˸0xffʱһ + - + 64 * ֵ : NONE + 65 */ + 66 /******************************************************************************/ + 67 void LED_Set(uint8_t State,uint8_t Period,uint8_t Times) + 68 /******************************************************************************/ + 69 { + 70 1 LED.State = State; + 71 1 LED.Flash_Duty = Period / 2; + 72 1 LED.Flash_Period = Period; + 73 1 LED.Flash_Times = Times; + 74 1 LED.Timer = 0; + 75 1 } + 76 + 77 /* + 78 * : LED_Service + 79 * : LED100msʱƬ + 80 * : NONE + 81 * ֵ : NONE + 82 */ + 83 /******************************************************************************/ + 84 void LED_Drv(void) + 85 /******************************************************************************/ + 86 { + 87 1 switch(LED.State) + 88 1 { + 89 2 case LED_ON: + 90 2 LEDR_ON(); + 91 2 break; + 92 2 + 93 2 case LED_OFF: + 94 2 LEDR_OFF(); + 95 2 break; + 96 2 + 97 2 case LED_FLASH: + 98 2 if( LED.Timer < LED.Flash_Duty ) + 99 2 { + 100 3 LEDR_ON(); + 101 3 } + 102 2 else + 103 2 { + 104 3 LEDR_OFF(); + 105 3 } + 106 2 + 107 2 if( LED.Timer >= LED.Flash_Period )//LED.Timer[i]ʾۼӵʱ + 108 2 { + 109 3 LED.Timer = 0; + 110 3 + 111 3 if( LED.Flash_Times == 0xff ) + 112 3 { + C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 3 + + 113 4 //LED.State = LED_KEEP_FLASHING; + 114 4 break; + 115 4 } + 116 3 else + 117 3 { + 118 4 if( LED.Flash_Times > 0 ) + 119 4 { + 120 5 LED.Flash_Times--; + 121 5 } + 122 4 + 123 4 if( LED.Flash_Times == 0 ) + 124 4 { + 125 5 LED.State = LED_OFF; + 126 5 } + 127 4 } + 128 3 } + 129 2 + 130 2 break; + 131 2 #if 0 + case LED_KEEP_FLASHING: + if( LED.Timer <= LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + if( LED.Timer >= LED.Flash_Period ) + { + LED.Timer = 0; + } + break; + #endif + 147 2 default: + 148 2 LEDR_OFF(); + 149 2 break; + 150 2 + 151 2 } + 152 1 + 153 1 Display_Sta = LED.State; // ȡǰLED״̬ + 154 1 + 155 1 LED.Timer += LED_PLUS_TIME; + 156 1 } + 157 + 158 #endif + 159 + 160 + C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 4 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION _LED_Set (BEGIN) + ; SOURCE LINE # 67 +;---- Variable 'Period' assigned to Register 'R5' ---- +;---- Variable 'Times' assigned to Register 'R3' ---- +;---- Variable 'State' assigned to Register 'R7' ---- + ; SOURCE LINE # 69 + ; SOURCE LINE # 70 +0000 7800 R MOV R0,#LOW LED +0002 A607 MOV @R0,AR7 + ; SOURCE LINE # 71 +0004 ED MOV A,R5 +0005 C3 CLR C +0006 13 RRC A +0007 08 INC R0 +0008 F6 MOV @R0,A + ; SOURCE LINE # 72 +0009 08 INC R0 +000A A605 MOV @R0,AR5 + ; SOURCE LINE # 73 +000C 08 INC R0 +000D A603 MOV @R0,AR3 + ; SOURCE LINE # 74 +000F E4 CLR A +0010 08 INC R0 +0011 F6 MOV @R0,A + ; SOURCE LINE # 75 +0012 22 RET + ; FUNCTION _LED_Set (END) + + ; FUNCTION LED_Drv (BEGIN) + ; SOURCE LINE # 84 + ; SOURCE LINE # 86 + ; SOURCE LINE # 87 +0000 7800 R MOV R0,#LOW LED +0002 E6 MOV A,@R0 +0003 603D JZ ?C0013 +0005 24FE ADD A,#0FEH +0007 6007 JZ ?C0005 +0009 04 INC A +000A 7036 JNZ ?C0013 + ; SOURCE LINE # 88 + ; SOURCE LINE # 89 +000C ?C0003: + ; SOURCE LINE # 90 +000C D283 SETB pin_LED_1 + ; SOURCE LINE # 91 +000E 8034 SJMP ?C0002 + ; SOURCE LINE # 93 + ; SOURCE LINE # 97 +0010 ?C0005: + ; SOURCE LINE # 98 +0010 7800 R MOV R0,#LOW LED+04H +0012 E6 MOV A,@R0 +0013 FF MOV R7,A +0014 C3 CLR C +0015 7800 R MOV R0,#LOW LED+01H +0017 96 SUBB A,@R0 +0018 5004 JNC ?C0006 + ; SOURCE LINE # 99 + C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 5 + + ; SOURCE LINE # 100 +001A D283 SETB pin_LED_1 + ; SOURCE LINE # 101 +001C 8002 SJMP ?C0007 +001E ?C0006: + ; SOURCE LINE # 103 + ; SOURCE LINE # 104 +001E C283 CLR pin_LED_1 + ; SOURCE LINE # 105 +0020 ?C0007: + ; SOURCE LINE # 107 +0020 EF MOV A,R7 +0021 C3 CLR C +0022 7800 R MOV R0,#LOW LED+02H +0024 96 SUBB A,@R0 +0025 401D JC ?C0002 + ; SOURCE LINE # 108 + ; SOURCE LINE # 109 +0027 E4 CLR A +0028 7800 R MOV R0,#LOW LED+04H +002A F6 MOV @R0,A + ; SOURCE LINE # 111 +002B 18 DEC R0 +002C E6 MOV A,@R0 +002D FF MOV R7,A +002E F4 CPL A +002F 6013 JZ ?C0002 + ; SOURCE LINE # 112 + ; SOURCE LINE # 114 + ; SOURCE LINE # 115 + ; SOURCE LINE # 117 + ; SOURCE LINE # 118 +0031 EF MOV A,R7 +0032 D3 SETB C +0033 9400 SUBB A,#00H +0035 4001 JC ?C0011 + ; SOURCE LINE # 119 + ; SOURCE LINE # 120 +0037 16 DEC @R0 + ; SOURCE LINE # 121 +0038 ?C0011: + ; SOURCE LINE # 123 +0038 7800 R MOV R0,#LOW LED+03H +003A E6 MOV A,@R0 +003B 7007 JNZ ?C0002 + ; SOURCE LINE # 124 + ; SOURCE LINE # 125 +003D 7800 R MOV R0,#LOW LED +003F F6 MOV @R0,A + ; SOURCE LINE # 126 + ; SOURCE LINE # 127 + ; SOURCE LINE # 128 + ; SOURCE LINE # 130 +0040 8002 SJMP ?C0002 + ; SOURCE LINE # 147 +0042 ?C0013: + ; SOURCE LINE # 148 +0042 C283 CLR pin_LED_1 + ; SOURCE LINE # 149 + ; SOURCE LINE # 151 +0044 ?C0002: + ; SOURCE LINE # 153 + C51 COMPILER V9.57.0.0 LED 06/14/2024 11:08:36 PAGE 6 + +0044 7800 R MOV R0,#LOW LED +0046 E6 MOV A,@R0 +0047 7800 R MOV R0,#LOW Display_Sta +0049 F6 MOV @R0,A + ; SOURCE LINE # 155 +004A 18 DEC R0 +004B 06 INC @R0 + ; SOURCE LINE # 156 +004C 22 RET + ; FUNCTION LED_Drv (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 96 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = 6 ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/main.lst b/Project/Listings/main.lst new file mode 100644 index 0000000..6a98b1a --- /dev/null +++ b/Project/Listings/main.lst @@ -0,0 +1,124 @@ +C51 COMPILER V9.57.0.0 MAIN 06/14/2024 11:08:35 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE MAIN +OBJECT MODULE PLACED IN .\Objects\main.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\main.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrInc\a + -dc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;.. + -\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox; + -..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\main.lst) + -TABS(2) OBJECT(.\Objects\main.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file main.c + 5 * @brief main module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/07/12 17:35:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/07/12 Alex build this file + 18 ****************************************************************************** + 19 */ + 20 /*_____ I N C L U D E S ____________________________________________________*/ + 21 #include "define.h" + 22 #include "userapp.h" + 23 #include "watchdog.h" + 24 #include "sys_tim.h" + 25 #include "system.h" + 26 #include "led.h" + 27 #include "charger_module.h" + 28 #include "adc.h" + 29 #include "vox_module.h" + 30 + 31 + 32 /******************************************************************************\ + 33 Macro definitions + 34 \******************************************************************************/ + 35 + 36 /******************************************************************************\ + 37 Variables definitions + 38 \******************************************************************************/ + 39 + 40 #ifdef _DEBUG_MAIN + const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ + #endif + 46 + 47 /******************************************************************************\ + 48 Functions definitions + 49 \******************************************************************************/ + 50 + 51 void main(void ) + C51 COMPILER V9.57.0.0 MAIN 06/14/2024 11:08:35 PAGE 2 + + 52 { + 53 1 System_Init(); //ϵͳʼ + 54 1 + 55 1 #ifdef _DEBUG_MAIN + printf("System Init(Ver:%s)\r\n",Ver); + #endif + 58 1 + 59 1 while(1) + 60 1 { + 61 2 + 62 2 #if WTG_ENABLE + 63 2 WDT = 1; + 64 2 SWDT = 1; + 65 2 #endif + 66 2 Sys_Tim_Handler(); //ʱ + 67 2 + 68 2 UserAPP(); + 69 2 } + 70 1 } + C51 COMPILER V9.57.0.0 MAIN 06/14/2024 11:08:35 PAGE 3 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION main (BEGIN) + ; SOURCE LINE # 51 + ; SOURCE LINE # 52 + ; SOURCE LINE # 53 +0000 120000 E LCALL System_Init +0003 ?C0001: + ; SOURCE LINE # 59 + ; SOURCE LINE # 60 + ; SOURCE LINE # 63 +0003 D2AE SETB WDT + ; SOURCE LINE # 64 +0005 D2BE SETB SWDT + ; SOURCE LINE # 66 +0007 120000 E LCALL Sys_Tim_Handler + ; SOURCE LINE # 68 +000A 120000 E LCALL UserAPP + ; SOURCE LINE # 69 +000D 80F4 SJMP ?C0001 + ; FUNCTION main (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 15 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/mcu.m51 b/Project/Listings/mcu.m51 new file mode 100644 index 0000000..636a8ca --- /dev/null +++ b/Project/Listings/mcu.m51 @@ -0,0 +1,1826 @@ +BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22.2.0, INVOKED BY: +D:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\STARTUP.obj, .\Objects\main.obj, .\Objects\adc.obj, .\Objects\charger_module.obj, +>> .\Objects\discharge_module.obj, .\Objects\gpio.obj, .\Objects\hall.obj, .\Objects\key.obj, .\Objects\led.obj, .\Objec +>> ts\sleep.obj, .\Objects\system.obj, .\Objects\uart.obj, .\Objects\userapp.obj, .\Objects\vox_module.obj, .\Objects\wa +>> tchdog.obj, .\Objects\bat.obj, .\Objects\sys_tim.obj TO .\Objects\mcu PRINT (.\Listings\mcu.m51) RAMSIZE (256) + + +MEMORY MODEL: SMALL + + +INPUT MODULES INCLUDED: + .\Objects\STARTUP.obj (?C_STARTUP) + .\Objects\main.obj (MAIN) + .\Objects\adc.obj (ADC) + .\Objects\charger_module.obj (CHARGER_MODULE) + .\Objects\discharge_module.obj (DISCHARGE_MODULE) + .\Objects\gpio.obj (GPIO) + .\Objects\hall.obj (HALL) + .\Objects\key.obj (KEY) + .\Objects\led.obj (LED) + .\Objects\sleep.obj (SLEEP) + .\Objects\system.obj (SYSTEM) + .\Objects\uart.obj (UART) + .\Objects\userapp.obj (USERAPP) + .\Objects\vox_module.obj (VOX_MODULE) + .\Objects\watchdog.obj (WATCHDOG) + .\Objects\bat.obj (BAT) + .\Objects\sys_tim.obj (SYS_TIM) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C_INIT) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?COPY) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDPTR) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?ULDIV) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?PLDIIDATA) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CCASE) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?LIMUL) + + +LINK MAP OF MODULE: .\Objects\mcu (?C_STARTUP) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0014H UNIT ?DT?BAT + DATA 001CH 0002H UNIT ?DT?HALL + DATA 001EH 0001H UNIT ?DT?SLEEP + DATA 001FH 0001H UNIT ?DT?USERAPP + BIT 0020H.0 0001H.2 UNIT ?BI?VOX_MODULE + BIT 0021H.2 0000H.6 UNIT ?BI?SYS_TIM + BIT 0022H.0 0000H.4 UNIT ?BI?KEY + BIT 0022H.4 0000H.3 UNIT ?BI?CHARGER_MODULE + BIT 0022H.7 0000H.2 UNIT ?BI?DISCHARGE_MODULE + BIT 0023H.1 0000H.2 UNIT ?BI?HALL + BIT 0023H.3 0000H.2 UNIT ?BI?UART + BIT 0023H.5 0000H.1 UNIT ?BI?SLEEP + BIT 0023H.6 0000H.1 UNIT ?BI?USERAPP + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 2 + + + BIT 0023H.7 0000H.1 UNIT ?BI?BAT + DATA 0024H 001BH UNIT _DATA_GROUP_ + DATA 003FH 000AH UNIT ?DT?VOX_MODULE + DATA 0049H 0008H UNIT ?DT?SYS_TIM + DATA 0051H 0005H UNIT ?DT?UART + IDATA 0056H 0032H UNIT ?ID?VOX_MODULE + IDATA 0088H 000BH UNIT ?ID?UART + IDATA 0093H 0006H UNIT ?ID?LED + IDATA 0099H 0002H UNIT ?ID?ADC + IDATA 009BH 0002H UNIT ?ID?BAT + IDATA 009DH 0001H UNIT ?ID?KEY + IDATA 009EH 0001H UNIT ?STACK + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 0003H ABSOLUTE + CODE 0003H 0003H ABSOLUTE + CODE 0006H 0001H INBLOCK ?PR?EX0_ISR?SYSTEM + 0007H 0004H *** GAP *** + CODE 000BH 0003H ABSOLUTE + CODE 000EH 0013H INBLOCK ?PR?_LED_SET?LED + 0021H 0002H *** GAP *** + CODE 0023H 0003H ABSOLUTE + CODE 0026H 0020H INBLOCK ?PR?VOX_MODULE + 0046H 0005H *** GAP *** + CODE 004BH 0003H ABSOLUTE + CODE 004EH 000BH UNIT ?CO?VOX_MODULE + 0059H 0002H *** GAP *** + CODE 005BH 0003H ABSOLUTE + CODE 005EH 0240H UNIT ?C?LIB_CODE + CODE 029EH 01F1H INBLOCK ?PR?VOX_DET_MACHINE?VOX_MODULE + CODE 048FH 0160H INBLOCK ?PR?_HANDLETXCOMMAND?VOX_MODULE + CODE 05EFH 00F1H UNIT ?C_INITSEG + CODE 06E0H 00A9H INBLOCK ?PR?LED_DISPLAY_APP?USERAPP + CODE 0789H 0074H INBLOCK ?PR?PMU_NTC_CONTROL?CHARGER_MODULE + 07FDH 0003H *** GAP *** + CODE 0800H 0098H INBLOCK ?PR?_HANDLERXMSG?VOX_MODULE + CODE 0898H 0092H UNIT ?C_C51STARTUP + CODE 092AH 008DH INBLOCK ?PR?UART0_INTERRUPT?UART + CODE 09B7H 008AH INBLOCK ?PR?SYSTEM_INIT?SYSTEM + CODE 0A41H 006DH INBLOCK ?PR?USERAPP?USERAPP + CODE 0AAEH 006DH INBLOCK ?PR?_CALCHECKCRC16?VOX_MODULE + CODE 0B1BH 0069H INBLOCK ?PR?CHECK_BAT_LEVEL?BAT + CODE 0B84H 005BH INBLOCK ?PR?TIM0_INTERRUPT?SYS_TIM + CODE 0BDFH 0055H INBLOCK ?PR?CHARGER_HANDLER?CHARGER_MODULE + CODE 0C34H 0055H INBLOCK ?PR?SYS_TIM_HANDLER?SYS_TIM + CODE 0C89H 004FH INBLOCK ?PR?HANDLEVOXCOMMMSG?VOX_MODULE + CODE 0CD8H 004DH INBLOCK ?PR?LED_DRV?LED + CODE 0D25H 0046H INBLOCK ?PR?DISCHARGE_HANDLER?DISCHARGE_MODULE + CODE 0D6BH 0044H INBLOCK ?PR?_ADC_CHN_DATA?ADC + CODE 0DAFH 0033H INBLOCK ?PR?VBAT_VALUE?ADC + CODE 0DE2H 0033H INBLOCK ?PR?ADC_NTC_VALUE?ADC + CODE 0E15H 002CH INBLOCK ?PR?_UART0SENDPACKET?UART + CODE 0E41H 002BH INBLOCK ?PR?HALL_HANDLER?HALL + CODE 0E6CH 001EH INBLOCK ?PR?KEY_HANDLER?KEY + CODE 0E8AH 0013H INBLOCK ?PR?UART + CODE 0E9DH 0011H INBLOCK ?PR?CHECK_REQUIRE_SLEEP?SLEEP + CODE 0EAEH 0010H INBLOCK ?PR?_VOX_EN_TYPE?VOX_MODULE + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 3 + + + CODE 0EBEH 000FH INBLOCK ?PR?MAIN?MAIN + CODE 0ECDH 000BH INBLOCK ?PR?BAT + CODE 0ED8H 0006H INBLOCK ?PR?EX2_ISR?SYSTEM + CODE 0EDEH 0006H INBLOCK ?PR?EX4_ISR?SYSTEM + + + +OVERLAY MAP OF MODULE: .\Objects\mcu (?C_STARTUP) + + +SEGMENT DATA_GROUP + +--> CALLED SEGMENT START LENGTH +-------------------------------------------------------------- +?C_C51STARTUP ----- ----- + +--> ?PR?MAIN?MAIN + +--> ?C_INITSEG + +?PR?MAIN?MAIN ----- ----- + +--> ?PR?SYSTEM_INIT?SYSTEM + +--> ?PR?SYS_TIM_HANDLER?SYS_TIM + +--> ?PR?USERAPP?USERAPP + +?PR?USERAPP?USERAPP ----- ----- + +--> ?PR?HALL_HANDLER?HALL + +--> ?PR?DISCHARGE_HANDLER?DISCHARGE_MODULE + +--> ?PR?LED_DRV?LED + +--> ?PR?KEY_HANDLER?KEY + +--> ?PR?CHARGER_HANDLER?CHARGER_MODULE + +--> ?PR?VBAT_VALUE?ADC + +--> ?PR?VOX_DET_MACHINE?VOX_MODULE + +--> ?PR?LED_DISPLAY_APP?USERAPP + +--> ?PR?CHECK_BAT_LEVEL?BAT + +--> ?PR?HANDLEVOXCOMMMSG?VOX_MODULE + +--> ?PR?CHECK_REQUIRE_SLEEP?SLEEP + +?PR?CHARGER_HANDLER?CHARGER_MODULE ----- ----- + +--> ?PR?PMU_NTC_CONTROL?CHARGER_MODULE + +?PR?PMU_NTC_CONTROL?CHARGER_MODULE 0024H 0001H + +--> ?PR?ADC_NTC_VALUE?ADC + +?PR?ADC_NTC_VALUE?ADC 0025H 0002H + +--> ?PR?_ADC_CHN_DATA?ADC + +?PR?_ADC_CHN_DATA?ADC 0027H 0002H + +?PR?VBAT_VALUE?ADC 0024H 0002H + +--> ?PR?_ADC_CHN_DATA?ADC + +?PR?VOX_DET_MACHINE?VOX_MODULE ----- ----- + +--> ?PR?_VOX_EN_TYPE?VOX_MODULE + +--> ?PR?_HANDLETXCOMMAND?VOX_MODULE + +--> ?PR?VOX_MODULE + +?PR?_HANDLETXCOMMAND?VOX_MODULE 0024H 0011H + +--> ?CO?VOX_MODULE + +--> ?PR?_CALCHECKCRC16?VOX_MODULE + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 4 + + + +--> ?PR?_UART0SENDPACKET?UART + +?PR?_CALCHECKCRC16?VOX_MODULE 0035H 000AH + +?PR?_UART0SENDPACKET?UART 0035H 0005H + +?PR?LED_DISPLAY_APP?USERAPP ----- ----- + +--> ?PR?_LED_SET?LED + +?PR?CHECK_BAT_LEVEL?BAT ----- ----- + +--> ?PR?BAT + +?PR?HANDLEVOXCOMMMSG?VOX_MODULE 0024H 0003H + +--> ?PR?_CALCHECKCRC16?VOX_MODULE + +--> ?PR?_HANDLERXMSG?VOX_MODULE + +?PR?_HANDLERXMSG?VOX_MODULE ----- ----- + +--> ?PR?VOX_MODULE + +*** NEW ROOT *************************************************** + +?PR?UART0_INTERRUPT?UART ----- ----- + +--> ?PR?UART + + + +SYMBOL TABLE OF MODULE: .\Objects\mcu (?C_STARTUP) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE ?C_STARTUP + C:0898H SEGMENT ?C_C51STARTUP + I:009EH SEGMENT ?STACK + C:0000H PUBLIC ?C_STARTUP + D:00E0H SYMBOL ACC + D:00F0H SYMBOL B + D:008EH SYMBOL CKCON + D:00D2H SYMBOL CLKPRE + D:0083H SYMBOL DPH + D:0082H SYMBOL DPL + N:0000H SYMBOL IBPSTACK + N:0100H SYMBOL IBPSTACKTOP + N:0100H SYMBOL IDATALEN + C:08A1H SYMBOL IDATALOOP + N:0000H SYMBOL PBPSTACK + N:0100H SYMBOL PBPSTACKTOP + D:0087H SYMBOL PCON + N:0000H SYMBOL PDATALEN + N:0000H SYMBOL PDATASTART + N:0000H SYMBOL PPAGE + N:0000H SYMBOL PPAGEENABLE + D:00A0H SYMBOL PPAGE_SFR + D:0081H SYMBOL SP + C:0898H SYMBOL STARTUP1 + N:0000H SYMBOL XBPSTACK + N:0000H SYMBOL XBPSTACKTOP + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 5 + + + N:0000H SYMBOL XDATALEN + N:0000H SYMBOL XDATASTART + C:0000H LINE# 129 + C:0898H LINE# 136 + C:089BH LINE# 137 + C:089EH LINE# 140 + C:08A0H LINE# 141 + C:08A1H LINE# 142 + C:08A2H LINE# 143 + C:08A4H LINE# 192 + C:08A7H LINE# 203 + ------- ENDMOD ?C_STARTUP + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:0EBEH PUBLIC main + B:00B8H.6 PUBLIC SWDT + B:00A8H.6 PUBLIC WDT + ------- PROC MAIN + C:0EBEH LINE# 51 + C:0EBEH LINE# 52 + C:0EBEH LINE# 53 + C:0EC1H LINE# 59 + C:0EC1H LINE# 60 + C:0EC1H LINE# 63 + C:0EC3H LINE# 64 + C:0EC5H LINE# 66 + C:0EC8H LINE# 68 + C:0ECBH LINE# 69 + ------- ENDPROC MAIN + ------- ENDMOD MAIN + + ------- MODULE ADC + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00FFH PUBLIC SFRDATA + D:00FEH PUBLIC SFRADDR + C:0D6BH PUBLIC _ADC_Chn_Data + D:00A5H PUBLIC ADC_CTL1 + D:00A2H PUBLIC ADC_DATH + D:00A1H PUBLIC ADC_DATL + C:0DE2H PUBLIC ADC_NTC_Value + C:0DAFH PUBLIC Vbat_Value + I:0099H PUBLIC Vbat_Adc + ------- PROC _ADC_CHN_DATA + D:0005H SYMBOL adc_chn + ------- DO + D:0004H SYMBOL index + D:0002H SYMBOL adc_data + D:0027H SYMBOL adc_plus_data + ------- ENDDO + C:0D6BH LINE# 58 + C:0D6DH LINE# 59 + C:0D6DH LINE# 60 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 6 + + + C:0D6FH LINE# 61 + C:0D71H LINE# 62 + C:0D75H LINE# 64 + C:0D78H LINE# 65 + C:0D7BH LINE# 67 + C:0D7BH LINE# 68 + C:0D7BH LINE# 69 + C:0D83H LINE# 71 + C:0D88H LINE# 73 + C:0D8CH LINE# 75 + C:0D92H LINE# 77 + C:0D9CH LINE# 82 + C:0DA0H LINE# 84 + C:0DADH LINE# 94 + C:0DAEH LINE# 95 + ------- ENDPROC _ADC_CHN_DATA + ------- PROC VBAT_VALUE + ------- DO + D:0024H SYMBOL n_Vbat_Data + ------- ENDDO + C:0DAFH LINE# 111 + C:0DAFH LINE# 112 + C:0DAFH LINE# 113 + C:0DB4H LINE# 116 + C:0DBDH LINE# 124 + C:0DE1H LINE# 130 + C:0DE1H LINE# 131 + ------- ENDPROC VBAT_VALUE + ------- PROC ADC_NTC_VALUE + ------- DO + D:0025H SYMBOL adc_data + ------- ENDDO + C:0DE2H LINE# 149 + C:0DE2H LINE# 150 + C:0DE2H LINE# 151 + C:0DE7H LINE# 154 + C:0DF0H LINE# 161 + C:0E14H LINE# 167 + C:0E14H LINE# 168 + ------- ENDPROC ADC_NTC_VALUE + ------- ENDMOD ADC + + ------- MODULE CHARGER_MODULE + C:0000H SYMBOL _ICE_DUMMY_ + C:0789H PUBLIC PMU_NTC_Control + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00B3H PUBLIC CHG_CTL + D:00F2H PUBLIC IRQ_FLAG9 + D:00E6H PUBLIC CHIP_STA4 + B:0022H.4 PUBLIC Charger_Done + B:0022H.5 PUBLIC NTC_High_Pro_Flag + D:00F3H PUBLIC IRQ_FLAG10 + C:0BDFH PUBLIC Charger_Handler + B:0022H.6 PUBLIC NTC_Low_Pro_Flag + ------- PROC PMU_NTC_CONTROL + ------- DO + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 7 + + + D:0006H SYMBOL NTC_Adc + D:0024H SYMBOL NTC_Flag + ------- ENDDO + C:0789H LINE# 134 + C:0789H LINE# 135 + C:0789H LINE# 136 + C:078CH LINE# 137 + C:078FH LINE# 139 + C:0792H LINE# 141 + C:079BH LINE# 142 + C:079BH LINE# 143 + C:079EH LINE# 144 + C:079EH LINE# 146 + C:07A3H LINE# 147 + C:07A3H LINE# 148 + C:07B4H LINE# 149 + C:07B4H LINE# 150 + C:07B7H LINE# 151 + C:07B7H LINE# 152 + C:07BFH LINE# 153 + C:07BFH LINE# 154 + C:07C1H LINE# 155 + C:07C4H LINE# 156 + C:07C6H LINE# 158 + C:07C6H LINE# 159 + C:07C9H LINE# 160 + C:07C9H LINE# 161 + C:07C9H LINE# 163 + C:07CCH LINE# 164 + C:07CCH LINE# 165 + C:07D5H LINE# 166 + C:07D5H LINE# 167 + C:07D7H LINE# 168 + C:07DAH LINE# 169 + C:07DCH LINE# 177 + C:07DCH LINE# 179 + C:07E5H LINE# 180 + C:07E5H LINE# 181 + C:07E7H LINE# 182 + C:07E9H LINE# 184 + C:07F2H LINE# 185 + C:07F2H LINE# 186 + C:07F4H LINE# 187 + C:07F4H LINE# 189 + C:07F7H LINE# 191 + C:07FAH LINE# 192 + C:07FAH LINE# 193 + C:07FAH LINE# 195 + C:07FCH LINE# 196 + ------- ENDPROC PMU_NTC_CONTROL + ------- PROC CHARGER_HANDLER + C:0BDFH LINE# 216 + C:0BDFH LINE# 217 + C:0BDFH LINE# 219 + C:0BE4H LINE# 220 + C:0BE4H LINE# 221 + C:0BE7H LINE# 222 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 8 + + + C:0BEAH LINE# 223 + C:0BEDH LINE# 225 + C:0BEDH LINE# 228 + C:0BF3H LINE# 229 + C:0BF3H LINE# 230 + C:0BF6H LINE# 231 + C:0BFCH LINE# 232 + C:0BFCH LINE# 233 + C:0BFFH LINE# 234 + C:0C02H LINE# 235 + C:0C03H LINE# 237 + C:0C03H LINE# 239 + C:0C03H LINE# 240 + C:0C09H LINE# 241 + C:0C09H LINE# 242 + C:0C0CH LINE# 243 + C:0C0CH LINE# 244 + C:0C0CH LINE# 248 + C:0C12H LINE# 249 + C:0C12H LINE# 251 + C:0C12H LINE# 254 + C:0C17H LINE# 255 + C:0C17H LINE# 261 + C:0C23H LINE# 262 + C:0C23H LINE# 264 + C:0C26H LINE# 268 + C:0C28H LINE# 270 + C:0C28H LINE# 271 + C:0C2BH LINE# 275 + C:0C2BH LINE# 276 + C:0C2DH LINE# 279 + C:0C2EH LINE# 281 + C:0C2EH LINE# 282 + C:0C31H LINE# 283 + C:0C33H LINE# 284 + C:0C33H LINE# 286 + ------- ENDPROC CHARGER_HANDLER + ------- ENDMOD CHARGER_MODULE + + ------- MODULE DISCHARGE_MODULE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:0D25H PUBLIC DisCharge_Handler + D:00E8H PUBLIC IRQ_FLAG0 + D:00E2H PUBLIC CHIP_STA0 + D:00E5H PUBLIC CHIP_STA3 + D:00E6H PUBLIC CHIP_STA4 + D:00B5H PUBLIC BST_EN + B:0022H.7 PUBLIC gBoost_Prepared_Flag + B:0023H.0 PUBLIC gBoost_UVLO_Flag + ------- PROC DISCHARGE_HANDLER + C:0D25H LINE# 118 + C:0D25H LINE# 119 + C:0D25H LINE# 125 + C:0D2AH LINE# 126 + C:0D2AH LINE# 127 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 9 + + + C:0D2DH LINE# 129 + C:0D2DH LINE# 132 + C:0D32H LINE# 133 + C:0D32H LINE# 134 + C:0D34H LINE# 135 + C:0D37H LINE# 137 + C:0D37H LINE# 140 + C:0D3CH LINE# 141 + C:0D3CH LINE# 145 + C:0D3EH LINE# 148 + C:0D41H LINE# 149 + C:0D41H LINE# 150 + C:0D43H LINE# 151 + C:0D46H LINE# 153 + C:0D49H LINE# 154 + C:0D4AH LINE# 156 + C:0D4AH LINE# 158 + C:0D4CH LINE# 167 + C:0D4FH LINE# 168 + C:0D4FH LINE# 169 + C:0D54H LINE# 170 + C:0D54H LINE# 171 + C:0D60H LINE# 172 + C:0D60H LINE# 173 + C:0D62H LINE# 174 + C:0D64H LINE# 175 + C:0D65H LINE# 177 + C:0D65H LINE# 178 + C:0D68H LINE# 179 + C:0D6AH LINE# 180 + C:0D6AH LINE# 181 + C:0D6AH LINE# 182 + C:0D6AH LINE# 186 + ------- ENDPROC DISCHARGE_HANDLER + ------- ENDMOD DISCHARGE_MODULE + + ------- MODULE GPIO + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + ------- ENDMOD GPIO + + ------- MODULE HALL + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + B:0023H.1 PUBLIC CoverEvent_Flg + D:001CH PUBLIC CoverStatus + B:0023H.2 PUBLIC CoverEvent_Flg_led + D:00E2H PUBLIC CHIP_STA0 + C:0E41H PUBLIC Hall_Handler + D:001DH PUBLIC Hall_Sta_bk + ------- PROC HALL_HANDLER + ------- DO + D:0007H SYMBOL Hall_Sta + ------- ENDDO + C:0E41H LINE# 105 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 10 + + + C:0E41H LINE# 106 + C:0E41H LINE# 107 + C:0E41H LINE# 108 + C:0E46H LINE# 109 + C:0E46H LINE# 110 + C:0E4BH LINE# 111 + C:0E4FH LINE# 112 + C:0E4FH LINE# 113 + C:0E54H LINE# 114 + C:0E54H LINE# 117 + C:0E57H LINE# 132 + C:0E59H LINE# 134 + C:0E59H LINE# 137 + C:0E5CH LINE# 138 + C:0E5EH LINE# 152 + C:0E5EH LINE# 154 + C:0E60H LINE# 155 + C:0E62H LINE# 156 + C:0E65H LINE# 158 + C:0E69H LINE# 159 + C:0E6BH LINE# 160 + C:0E6BH LINE# 161 + C:0E6BH LINE# 162 + ------- ENDPROC HALL_HANDLER + ------- ENDMOD HALL + + ------- MODULE KEY + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + B:0022H.0 PUBLIC Key_Press_ll_irq + B:0022H.1 PUBLIC Key_Press_l_irq + I:009DH PUBLIC Event_key + C:0E6CH PUBLIC Key_Handler + B:0022H.2 PUBLIC Key_l_Flag + B:0022H.3 PUBLIC Key_Press_short_irq + ------- PROC KEY_HANDLER + C:0E6CH LINE# 95 + C:0E6CH LINE# 96 + C:0E6CH LINE# 97 + C:0E6FH LINE# 98 + C:0E6FH LINE# 99 + C:0E71H LINE# 100 + C:0E73H LINE# 102 + C:0E77H LINE# 108 + C:0E77H LINE# 110 + C:0E7AH LINE# 111 + C:0E7AH LINE# 112 + C:0E7CH LINE# 114 + C:0E80H LINE# 120 + C:0E80H LINE# 122 + C:0E83H LINE# 123 + C:0E83H LINE# 124 + C:0E85H LINE# 126 + C:0E89H LINE# 132 + C:0E89H LINE# 133 + ------- ENDPROC KEY_HANDLER + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 11 + + + ------- ENDMOD KEY + + ------- MODULE LED + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + B:0080H.3 PUBLIC pin_LED_1 + I:0093H SYMBOL LED + C:000EH PUBLIC _LED_Set + C:0CD8H PUBLIC LED_Drv + I:0098H PUBLIC Display_Sta + ------- PROC _LED_SET + D:0007H SYMBOL State + D:0005H SYMBOL Period + D:0003H SYMBOL Times + C:000EH LINE# 67 + C:000EH LINE# 69 + C:000EH LINE# 70 + C:0012H LINE# 71 + C:0017H LINE# 72 + C:001AH LINE# 73 + C:001DH LINE# 74 + C:0020H LINE# 75 + ------- ENDPROC _LED_SET + ------- PROC LED_DRV + C:0CD8H LINE# 84 + C:0CD8H LINE# 86 + C:0CD8H LINE# 87 + C:0CE4H LINE# 88 + C:0CE4H LINE# 89 + C:0CE4H LINE# 90 + C:0CE6H LINE# 91 + C:0CE8H LINE# 93 + C:0CE8H LINE# 97 + C:0CE8H LINE# 98 + C:0CF2H LINE# 99 + C:0CF2H LINE# 100 + C:0CF4H LINE# 101 + C:0CF6H LINE# 103 + C:0CF6H LINE# 104 + C:0CF8H LINE# 105 + C:0CF8H LINE# 107 + C:0CFFH LINE# 108 + C:0CFFH LINE# 109 + C:0D03H LINE# 111 + C:0D09H LINE# 112 + C:0D09H LINE# 114 + C:0D09H LINE# 115 + C:0D09H LINE# 117 + C:0D09H LINE# 118 + C:0D0FH LINE# 119 + C:0D0FH LINE# 120 + C:0D10H LINE# 121 + C:0D10H LINE# 123 + C:0D15H LINE# 124 + C:0D15H LINE# 125 + C:0D18H LINE# 126 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 12 + + + C:0D18H LINE# 127 + C:0D18H LINE# 128 + C:0D18H LINE# 130 + C:0D1AH LINE# 147 + C:0D1AH LINE# 148 + C:0D1CH LINE# 149 + C:0D1CH LINE# 151 + C:0D1CH LINE# 153 + C:0D22H LINE# 155 + C:0D24H LINE# 156 + ------- ENDPROC LED_DRV + ------- ENDMOD LED + + ------- MODULE SLEEP + C:0000H SYMBOL _ICE_DUMMY_ + C:0E9DH PUBLIC Check_Require_Sleep + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + B:0023H.5 PUBLIC Enter_Sleep_Cnt_Restart_Flag + D:00E6H PUBLIC CHIP_STA4 + D:001EH PUBLIC Decnt_SleepDelay + ------- PROC CHECK_REQUIRE_SLEEP + C:0E9DH LINE# 57 + C:0E9DH LINE# 58 + C:0E9DH LINE# 59 + C:0EA8H LINE# 60 + C:0EA8H LINE# 64 + C:0EAAH LINE# 66 + C:0EACH LINE# 67 + C:0EACH LINE# 69 + C:0EADH LINE# 70 + ------- ENDPROC CHECK_REQUIRE_SLEEP + ------- ENDMOD SLEEP + + ------- MODULE SYSTEM + C:0000H SYMBOL _ICE_DUMMY_ + C:0ED8H PUBLIC EX2_isr + C:09B7H PUBLIC System_Init + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:0EDEH PUBLIC EX4_isr + B:00D8H.7 PUBLIC BD + D:00FFH PUBLIC SFRDATA + D:00FEH PUBLIC SFRADDR + B:0080H.3 PUBLIC pin_LED_1 + D:00B3H PUBLIC CHG_CTL + D:00E8H PUBLIC IRQ_FLAG0 + D:00EBH PUBLIC IRQ_FLAG3 + D:00F2H PUBLIC IRQ_FLAG9 + D:00BAH PUBLIC S0RELH + D:0087H PUBLIC PCON + D:00AAH PUBLIC S0RELL + D:0089H PUBLIC TMOD + D:00D2H PUBLIC CLKPRE + B:00A8H.4 PUBLIC ES0 + B:00A8H.1 PUBLIC ET0 + D:00F3H PUBLIC IRQ_FLAG10 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 13 + + + B:0098H.0 PUBLIC RI0 + D:008CH PUBLIC TH0 + B:00A8H.0 PUBLIC EX0 + B:0098H.1 PUBLIC TI0 + B:00B8H.1 PUBLIC EX2 + D:008AH PUBLIC TL0 + B:00B8H.3 PUBLIC EX4 + B:00A8H.7 PUBLIC EAL + D:0086H PUBLIC WDTREL + B:0088H.4 PUBLIC TR0 + D:0098H PUBLIC S0CON + D:00B7H PUBLIC VOX_CTL0 + C:0006H PUBLIC EX0_isr + ------- PROC SYSTEM_INIT + C:09B7H LINE# 67 + C:09B7H LINE# 68 + C:09B7H LINE# 69 + C:09BAH LINE# 72 + C:09BDH LINE# 73 + C:09C0H LINE# 76 + C:09C3H LINE# 77 + C:09C6H LINE# 81 + C:09C8H LINE# 82 + C:09CBH LINE# 85 + C:09CEH LINE# 86 + C:09D1H LINE# 88 + C:09D3H LINE# 89 + C:09D6H LINE# 92 + C:09D9H LINE# 93 + C:09DCH LINE# 95 + C:09DFH LINE# 97 + C:09E1H LINE# 98 + C:09E3H LINE# 99 + C:09E5H LINE# 105 + C:09E8H LINE# 115 + C:09EBH LINE# 117 + C:09EEH LINE# 118 + C:09F1H LINE# 120 + C:09F3H LINE# 121 + C:09F5H LINE# 143 + C:09F8H LINE# 144 + C:09FBH LINE# 151 + C:09FEH LINE# 152 + C:0A01H LINE# 154 + C:0A03H LINE# 159 + C:0A05H LINE# 166 + C:0A08H LINE# 167 + C:0A0BH LINE# 169 + C:0A0EH LINE# 170 + C:0A11H LINE# 175 + C:0A14H LINE# 176 + C:0A17H LINE# 178 + C:0A1AH LINE# 179 + C:0A1DH LINE# 182 + C:0A1FH LINE# 183 + C:0A21H LINE# 184 + C:0A23H LINE# 186 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 14 + + + C:0A25H LINE# 188 + C:0A28H LINE# 189 + C:0A2BH LINE# 190 + C:0A2EH LINE# 194 + C:0A31H LINE# 195 + C:0A34H LINE# 197 + C:0A37H LINE# 199 + C:0A3AH LINE# 200 + C:0A3DH LINE# 205 + C:0A40H LINE# 208 + ------- ENDPROC SYSTEM_INIT + ------- PROC EX0_ISR + C:0006H LINE# 224 + C:0006H LINE# 227 + ------- ENDPROC EX0_ISR + ------- PROC EX2_ISR + C:0ED8H LINE# 244 + C:0ED8H LINE# 246 + C:0EDBH LINE# 250 + C:0EDBH LINE# 251 + C:0EDDH LINE# 252 + C:0EDDH LINE# 254 + ------- ENDPROC EX2_ISR + ------- PROC EX4_ISR + C:0EDEH LINE# 270 + C:0EDEH LINE# 273 + C:0EE1H LINE# 278 + C:0EE1H LINE# 279 + C:0EE3H LINE# 280 + C:0EE3H LINE# 283 + ------- ENDPROC EX4_ISR + ------- ENDMOD SYSTEM + + ------- MODULE UART + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + I:0088H PUBLIC RX0_Buffer + C:092AH PUBLIC uart0_Interrupt + C:0E15H PUBLIC _Uart0SendPacket + D:00E0H PUBLIC ACC + B:0098H.0 PUBLIC RI0 + B:0098H.1 PUBLIC TI0 + D:0099H PUBLIC S0BUF + B:0023H.3 PUBLIC busy0 + B:0023H.4 PUBLIC Uart0_RX_Finish_Flag + C:0E8AH SYMBOL Com0015 + C:0E8AH SYMBOL L?0022 + C:0E96H SYMBOL L?0023 + C:0E96H SYMBOL L?0024 + ------- PROC COM0015 + ------- ENDPROC COM0015 + ------- PROC _UART0SENDPACKET + D:0035H SYMBOL Length + D:0037H SYMBOL TransBuf + ------- DO + D:0007H SYMBOL i + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 15 + + + ------- ENDDO + C:0E15H LINE# 157 + C:0E1FH LINE# 158 + C:0E1FH LINE# 159 + C:0E21H LINE# 160 + C:0E2AH LINE# 161 + C:0E2AH LINE# 164 + C:0E2DH LINE# 165 + C:0E39H LINE# 166 + C:0E3BH LINE# 167 + C:0E3DH LINE# 168 + C:0E40H LINE# 169 + ------- ENDPROC _UART0SENDPACKET + ------- PROC UART0_INTERRUPT + ------- DO + D:0051H SYMBOL Rx0Status + D:0052H SYMBOL RX0_Cnt + D:0054H SYMBOL RX0DataLen + ------- ENDDO + C:092AH LINE# 192 + C:0939H LINE# 207 + C:093CH LINE# 208 + C:093CH LINE# 209 + C:093EH LINE# 210 + C:0940H LINE# 211 + C:0940H LINE# 214 + C:0943H LINE# 215 + C:0943H LINE# 216 + C:0945H LINE# 322 + C:094DH LINE# 323 + C:094DH LINE# 324 + C:094DH LINE# 326 + C:0952H LINE# 327 + C:0952H LINE# 328 + C:0955H LINE# 330 + C:0958H LINE# 332 + C:0958H LINE# 334 + C:095FH LINE# 335 + C:0961H LINE# 337 + C:0961H LINE# 338 + C:0964H LINE# 340 + C:0967H LINE# 341 + C:0967H LINE# 342 + C:0969H LINE# 344 + C:0969H LINE# 346 + C:0969H LINE# 348 + C:0970H LINE# 350 + C:0976H LINE# 351 + C:0976H LINE# 352 + C:098BH LINE# 353 + C:098BH LINE# 355 + C:09A2H LINE# 356 + C:09A2H LINE# 357 + C:09A5H LINE# 358 + C:09A8H LINE# 359 + C:09AAH LINE# 360 + C:09AAH LINE# 361 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 16 + + + C:09AAH LINE# 368 + C:09AAH LINE# 369 + ------- ENDPROC UART0_INTERRUPT + ------- ENDMOD UART + + ------- MODULE USERAPP + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:0A41H PUBLIC UserAPP + D:00FFH PUBLIC SFRDATA + D:00FEH PUBLIC SFRADDR + C:06E0H PUBLIC LED_Display_App + D:00E6H PUBLIC CHIP_STA4 + D:0087H PUBLIC PCON + B:00A8H.4 PUBLIC ES0 + B:00A8H.1 PUBLIC ET0 + B:00B8H.1 PUBLIC EX2 + B:00B8H.3 PUBLIC EX4 + D:001FH PUBLIC LED_On_Timer + B:0023H.6 PUBLIC led_blink_1time_flag + ------- PROC LED_DISPLAY_APP + C:06E0H LINE# 75 + C:06E0H LINE# 76 + C:06E0H LINE# 164 + C:06E5H LINE# 165 + C:06E5H LINE# 166 + C:06E8H LINE# 167 + C:06E8H LINE# 168 + C:06E8H LINE# 169 + C:06EAH LINE# 171 + C:06EAH LINE# 172 + C:06F2H LINE# 173 + C:06F2H LINE# 174 + C:06F5H LINE# 175 + C:06F5H LINE# 176 + C:06F7H LINE# 177 + C:06FBH LINE# 178 + C:06FDH LINE# 180 + C:06FDH LINE# 181 + C:06FDH LINE# 183 + C:0706H LINE# 184 + C:0706H LINE# 185 + C:070CH LINE# 186 + C:070CH LINE# 187 + C:070CH LINE# 188 + C:070EH LINE# 190 + C:070EH LINE# 191 + C:0711H LINE# 192 + C:0711H LINE# 193 + C:0714H LINE# 194 + C:0714H LINE# 195 + C:071DH LINE# 196 + C:071FH LINE# 197 + C:071FH LINE# 198 + C:0720H LINE# 200 + C:0720H LINE# 202 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 17 + + + C:072EH LINE# 203 + C:072EH LINE# 204 + C:0739H LINE# 205 + C:0739H LINE# 206 + C:0740H LINE# 207 + C:0740H LINE# 208 + C:0749H LINE# 209 + C:0749H LINE# 210 + C:074CH LINE# 211 + C:074EH LINE# 213 + C:074FH LINE# 215 + C:075BH LINE# 216 + C:075BH LINE# 217 + C:0762H LINE# 218 + C:0762H LINE# 219 + C:0764H LINE# 220 + C:0769H LINE# 221 + C:076BH LINE# 223 + C:076BH LINE# 224 + C:076FH LINE# 225 + C:076FH LINE# 226 + C:076FH LINE# 227 + C:0771H LINE# 229 + C:0771H LINE# 230 + C:0778H LINE# 231 + C:0778H LINE# 232 + C:077AH LINE# 233 + C:077FH LINE# 234 + C:0781H LINE# 236 + C:0781H LINE# 237 + C:0788H LINE# 238 + C:0788H LINE# 239 + C:0788H LINE# 240 + C:0788H LINE# 241 + C:0788H LINE# 242 + ------- ENDPROC LED_DISPLAY_APP + ------- PROC USERAPP + C:0A41H LINE# 253 + C:0A41H LINE# 254 + C:0A41H LINE# 255 + C:0A44H LINE# 256 + C:0A44H LINE# 257 + C:0A46H LINE# 261 + C:0A49H LINE# 265 + C:0A4CH LINE# 268 + C:0A4CH LINE# 272 + C:0A4FH LINE# 273 + C:0A4FH LINE# 274 + C:0A51H LINE# 275 + C:0A54H LINE# 276 + C:0A54H LINE# 280 + C:0A57H LINE# 281 + C:0A57H LINE# 282 + C:0A59H LINE# 284 + C:0A5CH LINE# 287 + C:0A5FH LINE# 291 + C:0A69H LINE# 295 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 18 + + + C:0A6CH LINE# 299 + C:0A6FH LINE# 303 + C:0A72H LINE# 307 + C:0A75H LINE# 309 + C:0A75H LINE# 311 + C:0A78H LINE# 312 + C:0A78H LINE# 313 + C:0A7AH LINE# 321 + C:0A81H LINE# 322 + C:0A81H LINE# 323 + C:0A83H LINE# 326 + C:0A86H LINE# 327 + C:0A86H LINE# 328 + C:0A88H LINE# 329 + C:0A88H LINE# 330 + C:0A8AH LINE# 333 + C:0A8AH LINE# 335 + C:0A8FH LINE# 336 + C:0A8FH LINE# 348 + C:0A91H LINE# 350 + C:0A93H LINE# 351 + C:0A95H LINE# 352 + C:0A97H LINE# 357 + C:0A9AH LINE# 358 + C:0A9DH LINE# 360 + C:0AA0H LINE# 364 + C:0AA2H LINE# 366 + C:0AA4H LINE# 367 + C:0AA6H LINE# 368 + C:0AA8H LINE# 372 + C:0AA8H LINE# 373 + C:0AAAH LINE# 375 + C:0AAAH LINE# 376 + C:0AADH LINE# 377 + C:0AADH LINE# 379 + C:0AADH LINE# 380 + ------- ENDPROC USERAPP + ------- ENDMOD USERAPP + + ------- MODULE VOX_MODULE + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + I:0056H PUBLIC Bes_Chg_Full + D:00FFH PUBLIC SFRDATA + D:00FEH PUBLIC SFRADDR + I:0058H PUBLIC Bes_Set_SN_State + B:0020H.0 PUBLIC EarPhone_ShutDown_Flag + D:00E8H PUBLIC IRQ_FLAG0 + D:00E3H PUBLIC CHIP_STA1 + B:0020H.1 PUBLIC Boost_Vout_Change_Flag + D:00E6H PUBLIC CHIP_STA4 + D:003FH PUBLIC SN_Num_Start + D:0040H PUBLIC Vox_TX_Timer + I:005AH PUBLIC SN_Num + D:0042H PUBLIC Vox_Output_Short_Debounce + I:0070H PUBLIC Vox_Get_BES_Addr_Flag + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 19 + + + I:0072H PUBLIC BES_Addr + B:0020H.2 PUBLIC Cover_Close_Flag + I:0078H PUBLIC Tws_Paired_Record + D:0043H PUBLIC Box_To_Bes_Comm_Cnt + I:007AH PUBLIC Random_Data + B:0020H.3 PUBLIC gShip_Mode_Flag + C:004EH SYMBOL _?ix1000 + C:0800H PUBLIC _HandleRxMsg + D:0044H PUBLIC Box_To_Bes_Comm_Debounce + I:0082H PUBLIC Bes_OTA_State + D:0045H PUBLIC Boost_Open_Atleast_Tim_Cnt + C:0C89H PUBLIC HandleVoxCommMsg + D:0047H PUBLIC Vox_Pairing_State + B:0020H.4 PUBLIC Cover_Open_Flag + C:029EH PUBLIC Vox_Det_Machine + B:0020H.5 PUBLIC BES_Rst_Puls_Flag + B:0020H.6 PUBLIC Boost_Open_Flag + D:00B5H PUBLIC BST_EN + C:048FH PUBLIC _HandleTxCommand + B:0020H.7 PUBLIC SN_Num_Exchg_Flag + B:0021H.0 PUBLIC BES_Addr_Exchg_Flag + D:00B7H PUBLIC VOX_CTL0 + I:0084H PUBLIC Bes_Bet_Level + C:0AAEH PUBLIC _CalCheckCrc16 + C:0EAEH PUBLIC _VOX_EN_Type + B:0080H.2 PUBLIC COM_CTRL + I:0086H PUBLIC Phone_Paired_Record + B:0021H.1 PUBLIC Vox_Vout_Enable + C:0026H SYMBOL Com008B + C:0026H SYMBOL L?0140 + C:0032H SYMBOL L?0141 + C:003CH SYMBOL L?0142 + ------- PROC COM008B + ------- ENDPROC COM008B + ------- PROC _VOX_EN_TYPE + D:0007H SYMBOL VOX_Enable_Mode + C:0EAEH LINE# 127 + C:0EAEH LINE# 128 + C:0EAEH LINE# 129 + C:0EB0H LINE# 132 + C:0EB3H LINE# 133 + C:0EB3H LINE# 134 + C:0EB6H LINE# 136 + C:0EB9H LINE# 137 + C:0EBAH LINE# 139 + C:0EBAH LINE# 140 + C:0EBDH LINE# 141 + C:0EBDH LINE# 165 + ------- ENDPROC _VOX_EN_TYPE + C:0485H SYMBOL L?0143 + ------- PROC VOX_DET_MACHINE + C:029EH LINE# 187 + C:029EH LINE# 188 + C:029EH LINE# 190 + C:02A4H LINE# 191 + C:02A4H LINE# 192 + C:02A6H LINE# 193 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 20 + + + C:02ADH LINE# 194 + C:02ADH LINE# 195 + C:02B0H LINE# 196 + C:02B3H LINE# 197 + C:02B5H LINE# 199 + C:02B5H LINE# 200 + C:02B5H LINE# 202 + C:02B8H LINE# 203 + C:02B8H LINE# 207 + C:02BBH LINE# 209 + C:02BBH LINE# 210 + C:02BEH LINE# 211 + C:02BEH LINE# 212 + C:02C1H LINE# 213 + C:02C4H LINE# 215 + C:02C4H LINE# 217 + C:02C7H LINE# 218 + C:02C9H LINE# 219 + C:02CBH LINE# 220 + C:02CDH LINE# 221 + C:02D1H LINE# 223 + C:02D5H LINE# 224 + C:02D5H LINE# 225 + C:02D7H LINE# 226 + C:02D9H LINE# 227 + C:02DBH LINE# 228 + C:02DDH LINE# 229 + C:02DFH LINE# 230 + C:02E1H LINE# 232 + C:02E4H LINE# 233 + C:02E6H LINE# 235 + C:02E6H LINE# 236 + C:02E8H LINE# 237 + C:02EAH LINE# 240 + C:02F5H LINE# 241 + C:02F5H LINE# 242 + C:02FAH LINE# 243 + C:0302H LINE# 244 + C:0304H LINE# 246 + C:0304H LINE# 247 + C:0307H LINE# 248 + C:0309H LINE# 249 + C:030BH LINE# 250 + C:030DH LINE# 251 + C:0311H LINE# 252 + C:0311H LINE# 253 + C:0311H LINE# 254 + C:0313H LINE# 256 + C:0313H LINE# 257 + C:0318H LINE# 258 + C:0318H LINE# 259 + C:0318H LINE# 262 + C:031BH LINE# 263 + C:031BH LINE# 265 + C:0326H LINE# 267 + C:0326H LINE# 268 + C:032BH LINE# 269 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 21 + + + C:032BH LINE# 278 + C:032DH LINE# 282 + C:032FH LINE# 284 + C:032FH LINE# 293 + C:0336H LINE# 297 + C:0336H LINE# 299 + C:033EH LINE# 300 + C:0340H LINE# 303 + C:0340H LINE# 304 + C:0345H LINE# 305 + C:0345H LINE# 307 + C:0345H LINE# 310 + C:034DH LINE# 311 + C:034DH LINE# 313 + C:0358H LINE# 314 + C:0358H LINE# 315 + C:035DH LINE# 316 + C:035DH LINE# 317 + C:0360H LINE# 318 + C:0360H LINE# 320 + C:0362H LINE# 322 + C:0364H LINE# 324 + C:0368H LINE# 325 + C:0368H LINE# 334 + C:036AH LINE# 338 + C:036AH LINE# 339 + C:036CH LINE# 341 + C:036CH LINE# 342 + C:036FH LINE# 343 + C:036FH LINE# 345 + C:0373H LINE# 347 + C:0375H LINE# 349 + C:0379H LINE# 350 + C:0379H LINE# 359 + C:0380H LINE# 363 + C:0380H LINE# 364 + C:0380H LINE# 366 + C:0388H LINE# 367 + C:0389H LINE# 369 + C:0389H LINE# 370 + C:038CH LINE# 371 + C:038CH LINE# 372 + C:038EH LINE# 373 + C:0390H LINE# 374 + C:0392H LINE# 375 + C:0395H LINE# 376 + C:0397H LINE# 377 + C:0399H LINE# 379 + C:039EH LINE# 380 + C:039EH LINE# 381 + C:03A9H LINE# 382 + C:03A9H LINE# 383 + C:03B4H LINE# 384 + C:03B4H LINE# 385 + C:03B6H LINE# 386 + C:03BBH LINE# 387 + C:03BBH LINE# 388 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 22 + + + C:03BBH LINE# 392 + C:03BEH LINE# 393 + C:03BEH LINE# 394 + C:03C9H LINE# 395 + C:03C9H LINE# 396 + C:03CEH LINE# 397 + C:03CEH LINE# 398 + C:03D0H LINE# 399 + C:03D2H LINE# 401 + C:03D2H LINE# 402 + C:03D9H LINE# 403 + C:03D9H LINE# 405 + C:03E1H LINE# 406 + C:03E3H LINE# 408 + C:03E3H LINE# 409 + C:03E5H LINE# 410 + C:03E7H LINE# 412 + C:03ECH LINE# 413 + C:03ECH LINE# 414 + C:03ECH LINE# 416 + C:03EFH LINE# 417 + C:03EFH LINE# 418 + C:03F6H LINE# 419 + C:03F6H LINE# 421 + C:03F8H LINE# 423 + C:03FBH LINE# 424 + C:03FDH LINE# 425 + C:03FFH LINE# 427 + C:03FFH LINE# 428 + C:0406H LINE# 429 + C:0406H LINE# 430 + C:0406H LINE# 431 + C:0406H LINE# 432 + C:0406H LINE# 433 + C:0409H LINE# 434 + C:040CH LINE# 437 + C:040CH LINE# 439 + C:040CH LINE# 440 + C:0411H LINE# 441 + C:0411H LINE# 442 + C:0415H LINE# 443 + C:0415H LINE# 444 + C:0415H LINE# 445 + C:0415H LINE# 446 + C:0415H LINE# 447 + C:0418H LINE# 448 + C:041CH LINE# 451 + C:041CH LINE# 453 + C:041CH LINE# 455 + C:041EH LINE# 457 + C:0421H LINE# 458 + C:0421H LINE# 459 + C:0423H LINE# 461 + C:0428H LINE# 462 + C:0428H LINE# 464 + C:042FH LINE# 466 + C:042FH LINE# 467 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 23 + + + C:042FH LINE# 468 + C:042FH LINE# 470 + C:0436H LINE# 471 + C:0436H LINE# 472 + C:0438H LINE# 473 + C:043BH LINE# 474 + C:043DH LINE# 476 + C:043DH LINE# 477 + C:043FH LINE# 478 + C:043FH LINE# 479 + C:043FH LINE# 481 + C:0442H LINE# 482 + C:0442H LINE# 483 + C:044AH LINE# 484 + C:0453H LINE# 485 + C:0453H LINE# 486 + C:0455H LINE# 488 + C:0458H LINE# 489 + C:045AH LINE# 490 + C:045CH LINE# 492 + C:0463H LINE# 496 + C:0463H LINE# 497 + C:0463H LINE# 592 + C:0466H LINE# 593 + C:0466H LINE# 594 + C:046DH LINE# 595 + C:046DH LINE# 596 + C:0470H LINE# 597 + C:0473H LINE# 598 + C:0475H LINE# 599 + C:0476H LINE# 601 + C:0476H LINE# 602 + C:0478H LINE# 603 + C:047BH LINE# 604 + C:047EH LINE# 605 + C:0481H LINE# 606 + C:0484H LINE# 607 + C:0484H LINE# 608 + C:0484H LINE# 609 + C:0484H LINE# 610 + C:0484H LINE# 611 + C:0484H LINE# 612 + ------- ENDPROC VOX_DET_MACHINE + ------- PROC _CALCHECKCRC16 + D:0035H SYMBOL pucFrame + D:0038H SYMBOL usLen + ------- DO + D:0004H SYMBOL wCRCin + D:003AH SYMBOL wCPoly + D:003CH SYMBOL wChar + D:003DH SYMBOL i + ------- ENDDO + C:0AAEH LINE# 660 + C:0AB8H LINE# 661 + C:0AB8H LINE# 662 + C:0ABBH LINE# 663 + C:0AC1H LINE# 664 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 24 + + + C:0AC3H LINE# 667 + C:0AD0H LINE# 668 + C:0AD0H LINE# 670 + C:0ADEH LINE# 672 + C:0AE2H LINE# 674 + C:0AF2H LINE# 675 + C:0AF2H LINE# 676 + C:0AF6H LINE# 677 + C:0AF6H LINE# 678 + C:0B03H LINE# 679 + C:0B05H LINE# 681 + C:0B05H LINE# 682 + C:0B0CH LINE# 683 + C:0B0CH LINE# 684 + C:0B16H LINE# 685 + C:0B16H LINE# 687 + C:0B1AH LINE# 688 + ------- ENDPROC _CALCHECKCRC16 + ------- PROC _HANDLETXCOMMAND + D:0024H SYMBOL TxCommand + D:0025H SYMBOL nVox_Chn_Select + ------- DO + D:0026H SYMBOL tx_pData + D:0007H SYMBOL i + D:0031H SYMBOL Checksum + D:0033H SYMBOL DataLen + ------- ENDDO + C:048FH LINE# 711 + C:0493H LINE# 712 + C:0493H LINE# 850 + C:04A6H LINE# 851 + C:04A7H LINE# 852 + C:04ABH LINE# 853 + C:04AFH LINE# 855 + C:04B2H LINE# 858 + C:04B5H LINE# 866 + C:04B8H LINE# 867 + C:04BAH LINE# 874 + C:04BDH LINE# 876 + C:04E1H LINE# 877 + C:04E1H LINE# 878 + C:04E1H LINE# 885 + C:04E1H LINE# 887 + C:04E4H LINE# 888 + C:04E7H LINE# 890 + C:04E8H LINE# 891 + C:04E8H LINE# 892 + C:04F4H LINE# 893 + C:04F8H LINE# 895 + C:04FAH LINE# 896 + C:04FAH LINE# 897 + C:0506H LINE# 898 + C:050CH LINE# 900 + C:050CH LINE# 902 + C:050CH LINE# 904 + C:050FH LINE# 905 + C:0512H LINE# 907 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 25 + + + C:0517H LINE# 909 + C:0519H LINE# 911 + C:0519H LINE# 913 + C:0519H LINE# 914 + C:0519H LINE# 916 + C:0519H LINE# 918 + C:051CH LINE# 921 + C:051EH LINE# 922 + C:0520H LINE# 924 + C:0520H LINE# 926 + C:0523H LINE# 927 + C:0526H LINE# 935 + C:0529H LINE# 936 + C:052BH LINE# 937 + C:052EH LINE# 939 + C:0537H LINE# 941 + C:053CH LINE# 942 + C:053CH LINE# 943 + C:053EH LINE# 944 + C:0540H LINE# 946 + C:0545H LINE# 947 + C:0545H LINE# 948 + C:054AH LINE# 949 + C:054AH LINE# 951 + C:054DH LINE# 952 + C:054FH LINE# 954 + C:054FH LINE# 956 + C:0552H LINE# 957 + C:0555H LINE# 959 + C:0558H LINE# 961 + C:0559H LINE# 962 + C:0559H LINE# 963 + C:056DH LINE# 964 + C:056DH LINE# 965 + C:0573H LINE# 966 + C:0575H LINE# 968 + C:0575H LINE# 969 + C:0583H LINE# 970 + C:0583H LINE# 971 + C:0587H LINE# 973 + C:058DH LINE# 975 + C:058FH LINE# 977 + C:058FH LINE# 979 + C:0592H LINE# 980 + C:0595H LINE# 982 + C:0598H LINE# 983 + C:059AH LINE# 985 + C:059AH LINE# 987 + C:059DH LINE# 991 + C:059DH LINE# 992 + C:059DH LINE# 993 + C:059DH LINE# 995 + C:05ADH LINE# 996 + C:05BDH LINE# 997 + C:05C5H LINE# 998 + C:05CEH LINE# 1000 + C:05D0H LINE# 1002 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 26 + + + C:05D3H LINE# 1003 + C:05D6H LINE# 1006 + C:05E8H LINE# 1009 + C:05EBH LINE# 1010 + C:05EEH LINE# 1014 + ------- ENDPROC _HANDLETXCOMMAND + ------- PROC _HANDLERXMSG + D:0007H SYMBOL RxCommand + ------- DO + D:0006H SYMBOL i + D:0005H SYMBOL CMD_Type + ------- ENDDO + C:0800H LINE# 1036 + C:0800H LINE# 1037 + C:0800H LINE# 1038 + C:0800H LINE# 1087 + C:0800H LINE# 1089 + C:0807H LINE# 1090 + C:080DH LINE# 1091 + C:080DH LINE# 1093 + C:080DH LINE# 1095 + C:080DH LINE# 1096 + C:081DH LINE# 1097 + C:081DH LINE# 1098 + C:081DH LINE# 1100 + C:0828H LINE# 1101 + C:0828H LINE# 1102 + C:0834H LINE# 1103 + C:0837H LINE# 1105 + C:0837H LINE# 1107 + C:0837H LINE# 1109 + C:0837H LINE# 1111 + C:0837H LINE# 1112 + C:083DH LINE# 1113 + C:083DH LINE# 1114 + C:0840H LINE# 1115 + C:0841H LINE# 1117 + C:0841H LINE# 1118 + C:0844H LINE# 1119 + C:0844H LINE# 1121 + C:0845H LINE# 1123 + C:0845H LINE# 1125 + C:0845H LINE# 1126 + C:0845H LINE# 1128 + C:084CH LINE# 1129 + C:084CH LINE# 1130 + C:084FH LINE# 1131 + C:0855H LINE# 1132 + C:085AH LINE# 1133 + C:085EH LINE# 1134 + C:0864H LINE# 1135 + C:086AH LINE# 1136 + C:086BH LINE# 1138 + C:086BH LINE# 1139 + C:086EH LINE# 1140 + C:0874H LINE# 1141 + C:0879H LINE# 1142 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 27 + + + C:087DH LINE# 1143 + C:0883H LINE# 1144 + C:0889H LINE# 1145 + C:0889H LINE# 1147 + C:088AH LINE# 1149 + C:088AH LINE# 1151 + C:0890H LINE# 1152 + C:0890H LINE# 1153 + C:0893H LINE# 1154 + C:0894H LINE# 1156 + C:0894H LINE# 1157 + C:0897H LINE# 1158 + C:0897H LINE# 1160 + C:0897H LINE# 1162 + C:0897H LINE# 1164 + C:0897H LINE# 1165 + C:0897H LINE# 1167 + C:0897H LINE# 1168 + C:0897H LINE# 1169 + C:0897H LINE# 1170 + C:0897H LINE# 1171 + C:0897H LINE# 1176 + ------- ENDPROC _HANDLERXMSG + ------- PROC HANDLEVOXCOMMMSG + ------- DO + D:0004H SYMBOL CrcCheckSum + D:0024H SYMBOL Data_Len + D:0026H SYMBOL i + ------- ENDDO + C:0C89H LINE# 1193 + C:0C89H LINE# 1194 + C:0C89H LINE# 1206 + C:0C8AH LINE# 1207 + C:0C8EH LINE# 1211 + C:0C90H LINE# 1214 + C:0C93H LINE# 1215 + C:0C93H LINE# 1216 + C:0C95H LINE# 1235 + C:0CAAH LINE# 1237 + C:0CBAH LINE# 1239 + C:0CD0H LINE# 1240 + C:0CD0H LINE# 1241 + C:0CD7H LINE# 1242 + C:0CD7H LINE# 1244 + C:0CD7H LINE# 1246 + C:0CD7H LINE# 1250 + C:0CD7H LINE# 1252 + ------- ENDPROC HANDLEVOXCOMMMSG + ------- ENDMOD VOX_MODULE + + ------- MODULE WATCHDOG + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + ------- ENDMOD WATCHDOG + + ------- MODULE BAT + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 28 + + + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + C:0B1BH PUBLIC check_bat_level + I:009BH PUBLIC offset_bat_level + D:00E6H PUBLIC CHIP_STA4 + B:0023H.7 PUBLIC F_batlevel_low + I:009CH PUBLIC bat_level + D:0008H PUBLIC Boost_batlevel_Threshold + C:0ECDH SYMBOL Com0010 + C:0ECDH SYMBOL L?0017 + ------- PROC COM0010 + ------- ENDPROC COM0010 + ------- PROC CHECK_BAT_LEVEL + ------- DO + D:0007H SYMBOL i + ------- ENDDO + C:0B1BH LINE# 70 + C:0B1BH LINE# 71 + C:0B1BH LINE# 72 + C:0B1DH LINE# 75 + C:0B1DH LINE# 76 + C:0B1DH LINE# 85 + C:0B22H LINE# 86 + C:0B22H LINE# 87 + C:0B35H LINE# 88 + C:0B37H LINE# 89 + C:0B37H LINE# 91 + C:0B37H LINE# 92 + C:0B45H LINE# 93 + C:0B45H LINE# 94 + C:0B45H LINE# 95 + C:0B45H LINE# 96 + C:0B45H LINE# 98 + C:0B49H LINE# 101 + C:0B52H LINE# 102 + C:0B52H LINE# 103 + C:0B54H LINE# 104 + C:0B56H LINE# 106 + C:0B56H LINE# 107 + C:0B59H LINE# 108 + C:0B59H LINE# 111 + C:0B68H LINE# 112 + C:0B68H LINE# 114 + C:0B6CH LINE# 115 + C:0B6FH LINE# 116 + C:0B6FH LINE# 127 + C:0B78H LINE# 128 + C:0B78H LINE# 129 + C:0B7AH LINE# 130 + C:0B7BH LINE# 131 + C:0B81H LINE# 132 + C:0B81H LINE# 133 + C:0B83H LINE# 134 + C:0B83H LINE# 135 + ------- ENDPROC CHECK_BAT_LEVEL + ------- ENDMOD BAT + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 29 + + + + ------- MODULE SYS_TIM + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + B:0021H.2 PUBLIC F_sys_tim_100ms + D:0049H PUBLIC cnt_sys_tim_100ms + B:0021H.3 PUBLIC F_sys_tim_250ms + D:004AH PUBLIC cnt_sys_tim_250ms + B:0021H.4 PUBLIC F_sys_tim_5ms + D:004BH PUBLIC cnt_sys_tim_5ms + C:0B84H PUBLIC tim0_Interrupt + B:0021H.5 PUBLIC F_sys_tim_1s + D:004CH PUBLIC cnt_sys_tim_1s + D:008CH PUBLIC TH0 + D:008AH PUBLIC TL0 + B:0021H.6 PUBLIC BES_Puls_Start + B:0021H.7 PUBLIC F_sys_tim_10ms + D:004DH PUBLIC cnt_sys_tim_10ms + D:004EH PUBLIC cnt_sys_tim0_5ms + D:004FH PUBLIC BES_Puls_Cnt + C:0C34H PUBLIC Sys_Tim_Handler + D:0050H PUBLIC F_sys_tim0_tick + B:0080H.2 PUBLIC COM_CTRL + ------- PROC SYS_TIM_HANDLER + C:0C34H LINE# 80 + C:0C34H LINE# 81 + C:0C34H LINE# 82 + C:0C38H LINE# 84 + C:0C3BH LINE# 88 + C:0C3DH LINE# 89 + C:0C44H LINE# 90 + C:0C44H LINE# 91 + C:0C47H LINE# 92 + C:0C49H LINE# 93 + C:0C49H LINE# 96 + C:0C4BH LINE# 97 + C:0C52H LINE# 98 + C:0C52H LINE# 99 + C:0C55H LINE# 100 + C:0C57H LINE# 102 + C:0C57H LINE# 105 + C:0C59H LINE# 106 + C:0C60H LINE# 107 + C:0C60H LINE# 108 + C:0C63H LINE# 109 + C:0C65H LINE# 110 + C:0C65H LINE# 113 + C:0C67H LINE# 114 + C:0C6EH LINE# 115 + C:0C6EH LINE# 116 + C:0C71H LINE# 117 + C:0C73H LINE# 120 + C:0C75H LINE# 121 + C:0C7BH LINE# 122 + C:0C7BH LINE# 123 + C:0C7EH LINE# 124 + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 30 + + + C:0C80H LINE# 126 + C:0C88H LINE# 128 + C:0C88H LINE# 129 + C:0C88H LINE# 130 + ------- ENDPROC SYS_TIM_HANDLER + ------- PROC TIM0_INTERRUPT + C:0B84H LINE# 166 + C:0B88H LINE# 169 + C:0B8EH LINE# 170 + C:0B94H LINE# 172 + C:0B97H LINE# 177 + C:0B99H LINE# 178 + C:0BA0H LINE# 179 + C:0BA0H LINE# 180 + C:0BA3H LINE# 183 + C:0BA6H LINE# 184 + C:0BA6H LINE# 185 + C:0BADH LINE# 186 + C:0BADH LINE# 187 + C:0BAFH LINE# 188 + C:0BB1H LINE# 190 + C:0BB1H LINE# 191 + C:0BB6H LINE# 192 + C:0BB6H LINE# 194 + C:0BB9H LINE# 195 + C:0BB9H LINE# 196 + C:0BBBH LINE# 197 + C:0BBDH LINE# 199 + C:0BBDH LINE# 200 + C:0BBFH LINE# 201 + C:0BBFH LINE# 202 + C:0BC1H LINE# 204 + C:0BC1H LINE# 206 + C:0BC6H LINE# 207 + C:0BC6H LINE# 208 + C:0BC8H LINE# 209 + C:0BCAH LINE# 211 + C:0BCAH LINE# 212 + C:0BCCH LINE# 213 + C:0BCCH LINE# 214 + C:0BCCH LINE# 215 + C:0BCCH LINE# 217 + C:0BCEH LINE# 219 + C:0BD5H LINE# 220 + C:0BD5H LINE# 221 + C:0BD7H LINE# 222 + C:0BDAH LINE# 223 + C:0BDAH LINE# 224 + C:0BDAH LINE# 225 + C:0BDAH LINE# 227 + ------- ENDPROC TIM0_INTERRUPT + ------- ENDMOD SYS_TIM + + ------- MODULE ?C?COPY + C:012EH PUBLIC ?C?COPY + ------- ENDMOD ?C?COPY + + BL51 BANKED LINKER/LOCATER V6.22.2.0 06/14/2024 11:10:29 PAGE 31 + + + ------- MODULE ?C?CLDPTR + C:0154H PUBLIC ?C?CLDPTR + ------- ENDMOD ?C?CLDPTR + + ------- MODULE ?C?ULDIV + C:01A9H PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?PLDIIDATA + C:023BH PUBLIC ?C?PLDIIDATA + ------- ENDMOD ?C?PLDIIDATA + + ------- MODULE ?C?CCASE + C:024BH PUBLIC ?C?CCASE + ------- ENDMOD ?C?CCASE + + ------- MODULE ?C?LIMUL + C:0271H PUBLIC ?C?LIMUL + ------- ENDMOD ?C?LIMUL + +Program Size: data=159.0 xdata=0 code=3796 +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/sleep.lst b/Project/Listings/sleep.lst new file mode 100644 index 0000000..958cf2b --- /dev/null +++ b/Project/Listings/sleep.lst @@ -0,0 +1,132 @@ +C51 COMPILER V9.57.0.0 SLEEP 06/14/2024 11:08:37 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE SLEEP +OBJECT MODULE PLACED IN .\Objects\sleep.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\sleep\sleep.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\U + -srInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc + -\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrI + -nc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\sle + -ep.lst) TABS(2) OBJECT(.\Objects\sleep.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file sleep.c + 5 * @brief sleep module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2023/03/22 17:35:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2023/03/22 Alex build this file + 18 ****************************************************************************** + 19 */ + 20 #include "sleep.h" + 21 #include "system.h" + 22 #include "vox_module.h" + 23 + 24 #if SLEEP_ENABLE + 25 + 26 /******************************************************************************\ + 27 Macro definitions + 28 \******************************************************************************/ + 29 + 30 /******************************************************************************\ + 31 Variables definitions + 32 \******************************************************************************/ + 33 + 34 uint8_t Decnt_SleepDelay = 0; + 35 + 36 bit Enter_Sleep_Cnt_Restart_Flag = 0; + 37 + 38 /******************************************************************************\ + 39 Functions definitions + 40 \******************************************************************************/ + 41 + 42 + 43 /* + 44 ******************************************************************************* + 45 * bool Check_Require_Sleep(void ) + 46 * + 47 * Description : ѯ߻Դ־λ + 48 * + 49 * Arguments : None + 50 + 51 * Returns : None + C51 COMPILER V9.57.0.0 SLEEP 06/14/2024 11:08:37 PAGE 2 + + 52 + 53 * Notes : bool Flag + 54 * + 55 ******************************************************************************* + 56 */ + 57 bit Check_Require_Sleep(void ) + 58 { + 59 1 if( ( CHIP_STA4 & 0x80 ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS Power Go + -odڡжϡڳ״̬£Boostϵͳģʽ */ + 60 1 { + 61 2 #ifdef _DEBUG_SLEEP + printf("Protect\r\n"); + #endif + 64 2 Enter_Sleep_Cnt_Restart_Flag = 0; + 65 2 /*Ӧıжϻ¼*/ + 66 2 return false; + 67 2 } + 68 1 + 69 1 return true; + 70 1 } + 71 + 72 #endif + 73 + C51 COMPILER V9.57.0.0 SLEEP 06/14/2024 11:08:37 PAGE 3 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Check_Require_Sleep (BEGIN) + ; SOURCE LINE # 57 + ; SOURCE LINE # 58 + ; SOURCE LINE # 59 +0000 E5E6 MOV A,CHIP_STA4 +0002 20E706 JB ACC.7,?C0002 +0005 200003 E JB Vox_Vout_Enable,?C0002 +0008 300004 R JNB Enter_Sleep_Cnt_Restart_Flag,?C0001 +000B ?C0002: + ; SOURCE LINE # 60 + ; SOURCE LINE # 64 +000B C200 R CLR Enter_Sleep_Cnt_Restart_Flag + ; SOURCE LINE # 66 +000D C3 CLR C +000E 22 RET + ; SOURCE LINE # 67 +000F ?C0001: + ; SOURCE LINE # 69 +000F D3 SETB C + ; SOURCE LINE # 70 +0010 ?C0003: +0010 22 RET + ; FUNCTION Check_Require_Sleep (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 17 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 1 ---- + IDATA SIZE = ---- ---- + BIT SIZE = 1 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/sys_tim.lst b/Project/Listings/sys_tim.lst new file mode 100644 index 0000000..d1d2be6 --- /dev/null +++ b/Project/Listings/sys_tim.lst @@ -0,0 +1,541 @@ +C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE SYS_TIM +OBJECT MODULE PLACED IN .\Objects\sys_tim.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\timer\sys_tim.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(.. + -\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrI + -nc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\Us + -rInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\s + -ys_tim.lst) TABS(2) OBJECT(.\Objects\sys_tim.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file sys_tim.c + 5 * @brief Timer module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/09/05 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/09/05 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 + 21 #include "sys_tim.h" + 22 #include "vox_module.h" + 23 #include "system.h" + 24 #include "charger_module.h" + 25 #include "led.h" + 26 + 27 /******************************************************************************\ + 28 Macro definitions + 29 \******************************************************************************/ + 30 + 31 /******************************************************************************\ + 32 Variables definitions + 33 \******************************************************************************/ + 34 uint8_t cnt_sys_tim_5ms = 0; + 35 uint8_t cnt_sys_tim_10ms = 0; + 36 uint8_t cnt_sys_tim_250ms = 0; + 37 uint8_t cnt_sys_tim_100ms = 0; + 38 uint8_t cnt_sys_tim_1s = 0; + 39 + 40 bit F_sys_tim_5ms = 0; + 41 bit F_sys_tim_10ms = 0; + 42 bit F_sys_tim_250ms = 0; + 43 bit F_sys_tim_100ms = 0; + 44 bit F_sys_tim_1s = 0; + 45 + 46 uint8_t F_sys_tim0_tick = 0; + 47 + 48 uint8_t cnt_sys_tim0_5ms = 0; + 49 bit BES_Puls_Start = 0; //BES Resetź + 50 + 51 #if TIMER1_ENABLE + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 2 + + bit F_sys_tim1_tick = 0; + + #endif + 55 + 56 #ifdef VOX_TX_RST_PATTERN + 57 uint8_t BES_Puls_Cnt = 0; //BES Reset + 58 //bit BES_Puls_Start = 0; //BES Resetź + 59 #endif + 60 + 61 /******************************************************************************\ + 62 Functions definitions + 63 \******************************************************************************/ + 64 + 65 + 66 /* + 67 ******************************************************************************* + 68 * void Sys_Tim_Handler(void ) + 69 * + 70 * Description : Timer Handle + 71 * + 72 * Arguments : NONE + 73 + 74 * Returns : NONE + 75 + 76 * Notes : NONE + 77 * + 78 ******************************************************************************* + 79 */ + 80 void Sys_Tim_Handler(void) + 81 { + 82 1 if(F_sys_tim0_tick == 0) + 83 1 return; + 84 1 F_sys_tim0_tick = 0; + 85 1 //system tick + 86 1 + 87 1 //---------------5ms---------------------------------------- + 88 1 cnt_sys_tim_5ms++; + 89 1 if(cnt_sys_tim_5ms >= 5) + 90 1 { + 91 2 cnt_sys_tim_5ms = 0; + 92 2 F_sys_tim_5ms = 1; + 93 2 } + 94 1 + 95 1 //---------------10ms---------------------------------------- + 96 1 cnt_sys_tim_10ms++; + 97 1 if(cnt_sys_tim_10ms >= 10) + 98 1 { + 99 2 cnt_sys_tim_10ms = 0; + 100 2 F_sys_tim_10ms = 1; + 101 2 + 102 2 } + 103 1 + 104 1 //---------------100ms---------------------------------------- + 105 1 cnt_sys_tim_100ms++; + 106 1 if(cnt_sys_tim_100ms >= 100) + 107 1 { + 108 2 cnt_sys_tim_100ms = 0; + 109 2 F_sys_tim_100ms = 1; + 110 2 } + 111 1 + 112 1 //------------------------------------------------- + 113 1 cnt_sys_tim_250ms++; + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 3 + + 114 1 if(cnt_sys_tim_250ms>=250) + 115 1 { + 116 2 cnt_sys_tim_250ms = 0; + 117 2 F_sys_tim_250ms = 1; + 118 2 // P10 = !P10; + 119 2 //-----------------250ms------------------------- + 120 2 cnt_sys_tim_1s++; + 121 2 if(cnt_sys_tim_1s >= 4) + 122 2 { + 123 3 cnt_sys_tim_1s = 0; + 124 3 F_sys_tim_1s = 1; + 125 3 #if VOX_ENABLE + 126 3 Boost_Open_Atleast_Tim_Cnt++; + 127 3 #endif + 128 3 } + 129 2 } + 130 1 } + 131 + 132 /* + 133 ******************************************************************************* + 134 * void Delay10ms(void) //@11.0592MHz + 135 * + 136 * Description : 10msʱ + 137 * + 138 * Arguments : NONE + 139 + 140 * Returns : NONE + 141 + 142 * Notes : NONE + 143 * + 144 ******************************************************************************* + 145 */ + 146 #if 0 + void Delay10ms(void) //@11.0592MHz + { + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); + } + #endif + 159 + 160 /** + 161 * @brief This function handles sys_tim Handler. + 162 * @param None + 163 * @retval None + 164 * 1ms + 165 */ + 166 void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B + 167 { + 168 1 //1ms + 169 1 TH0 += C_TIM0_Reload >> 8; + 170 1 TL0 += C_TIM0_Reload & 0xFF; + 171 1 + 172 1 F_sys_tim0_tick = 1; + 173 1 + 174 1 #ifdef VOX_TX_RST_PATTERN + 175 1 + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 4 + + 176 1 //---------------5ms---------------------------------------- + 177 1 cnt_sys_tim0_5ms++; + 178 1 if(cnt_sys_tim0_5ms >= 5) + 179 1 { + 180 2 cnt_sys_tim0_5ms = 0; + 181 2 //BES_Reset_Puls(); + 182 2 /*жеúռúܶڴ棡*/ + 183 2 if(BES_Puls_Start) + 184 2 { + 185 3 if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + 186 3 { + 187 4 COM_CTRL = OFF; + 188 4 } + 189 3 else + 190 3 { + 191 4 if(BES_Puls_Cnt%2) + 192 4 { + 193 5 + 194 5 if(BES_Puls_Cnt == 13) + 195 5 { + 196 6 COM_CTRL = OFF; + 197 6 } + 198 5 else + 199 5 { + 200 6 COM_CTRL = ON; + 201 6 } + 202 5 } + 203 4 else + 204 4 { + 205 5 + 206 5 if(BES_Puls_Cnt == 14) + 207 5 { + 208 6 COM_CTRL = ON; + 209 6 } + 210 5 else + 211 5 { + 212 6 COM_CTRL = OFF; + 213 6 } + 214 5 } + 215 4 } + 216 3 + 217 3 BES_Puls_Cnt++; + 218 3 + 219 3 if(BES_Puls_Cnt >= 23) + 220 3 { + 221 4 BES_Puls_Start = 0; + 222 4 BES_Puls_Cnt = 0; + 223 4 } + 224 3 } + 225 2 } + 226 1 #endif + 227 1 } + 228 + 229 /* + 230 ******************************************************************************* + 231 * void Sys_Tim0_Init(void) + 232 * + 233 * Description : TImer0 Mode1 16bit timer Initialization + 234 * + 235 * Arguments : NONE + 236 + 237 * Returns : NONE + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 5 + + 238 + 239 * Notes : NONE + 240 * + 241 ******************************************************************************* + 242 */ + 243 #if 0 + void Sys_Tim0_Init(void) + { + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run + } + #endif + 256 #if TIMER1_ENABLE + + /** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ + void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B + { + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + + F_sys_tim1_tick = 1; + } + + /* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 + void Sys_Tim1_Init(void) + { + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 6 + + } + #endif + + #endif + 304 + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 7 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Sys_Tim_Handler (BEGIN) + ; SOURCE LINE # 80 + ; SOURCE LINE # 81 + ; SOURCE LINE # 82 +0000 E500 R MOV A,F_sys_tim0_tick +0002 6050 JZ ?C0002 + ; SOURCE LINE # 84 +0004 E4 CLR A +0005 F500 R MOV F_sys_tim0_tick,A + ; SOURCE LINE # 88 +0007 0500 R INC cnt_sys_tim_5ms + ; SOURCE LINE # 89 +0009 E500 R MOV A,cnt_sys_tim_5ms +000B C3 CLR C +000C 9405 SUBB A,#05H +000E 4005 JC ?C0003 + ; SOURCE LINE # 90 + ; SOURCE LINE # 91 +0010 E4 CLR A +0011 F500 R MOV cnt_sys_tim_5ms,A + ; SOURCE LINE # 92 +0013 D200 R SETB F_sys_tim_5ms + ; SOURCE LINE # 93 +0015 ?C0003: + ; SOURCE LINE # 96 +0015 0500 R INC cnt_sys_tim_10ms + ; SOURCE LINE # 97 +0017 E500 R MOV A,cnt_sys_tim_10ms +0019 C3 CLR C +001A 940A SUBB A,#0AH +001C 4005 JC ?C0004 + ; SOURCE LINE # 98 + ; SOURCE LINE # 99 +001E E4 CLR A +001F F500 R MOV cnt_sys_tim_10ms,A + ; SOURCE LINE # 100 +0021 D200 R SETB F_sys_tim_10ms + ; SOURCE LINE # 102 +0023 ?C0004: + ; SOURCE LINE # 105 +0023 0500 R INC cnt_sys_tim_100ms + ; SOURCE LINE # 106 +0025 E500 R MOV A,cnt_sys_tim_100ms +0027 C3 CLR C +0028 9464 SUBB A,#064H +002A 4005 JC ?C0005 + ; SOURCE LINE # 107 + ; SOURCE LINE # 108 +002C E4 CLR A +002D F500 R MOV cnt_sys_tim_100ms,A + ; SOURCE LINE # 109 +002F D200 R SETB F_sys_tim_100ms + ; SOURCE LINE # 110 +0031 ?C0005: + ; SOURCE LINE # 113 +0031 0500 R INC cnt_sys_tim_250ms + ; SOURCE LINE # 114 +0033 E500 R MOV A,cnt_sys_tim_250ms +0035 C3 CLR C + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 8 + +0036 94FA SUBB A,#0FAH +0038 401A JC ?C0002 + ; SOURCE LINE # 115 + ; SOURCE LINE # 116 +003A E4 CLR A +003B F500 R MOV cnt_sys_tim_250ms,A + ; SOURCE LINE # 117 +003D D200 R SETB F_sys_tim_250ms + ; SOURCE LINE # 120 +003F 0500 R INC cnt_sys_tim_1s + ; SOURCE LINE # 121 +0041 E500 R MOV A,cnt_sys_tim_1s +0043 9404 SUBB A,#04H +0045 400D JC ?C0002 + ; SOURCE LINE # 122 + ; SOURCE LINE # 123 +0047 E4 CLR A +0048 F500 R MOV cnt_sys_tim_1s,A + ; SOURCE LINE # 124 +004A D200 R SETB F_sys_tim_1s + ; SOURCE LINE # 126 +004C 0500 E INC Boost_Open_Atleast_Tim_Cnt+01H +004E E500 E MOV A,Boost_Open_Atleast_Tim_Cnt+01H +0050 7002 JNZ ?C0020 +0052 0500 E INC Boost_Open_Atleast_Tim_Cnt +0054 ?C0020: + ; SOURCE LINE # 128 + ; SOURCE LINE # 129 + ; SOURCE LINE # 130 +0054 ?C0002: +0054 22 RET + ; FUNCTION Sys_Tim_Handler (END) + + ; FUNCTION tim0_Interrupt (BEGIN) +0000 C0E0 PUSH ACC +0002 C0D0 PUSH PSW + ; SOURCE LINE # 166 + ; SOURCE LINE # 169 +0004 74FC MOV A,#0FCH +0006 258C ADD A,TH0 +0008 F58C MOV TH0,A + ; SOURCE LINE # 170 +000A 7417 MOV A,#017H +000C 258A ADD A,TL0 +000E F58A MOV TL0,A + ; SOURCE LINE # 172 +0010 750001 R MOV F_sys_tim0_tick,#01H + ; SOURCE LINE # 177 +0013 0500 R INC cnt_sys_tim0_5ms + ; SOURCE LINE # 178 +0015 E500 R MOV A,cnt_sys_tim0_5ms +0017 C3 CLR C +0018 9405 SUBB A,#05H +001A 403A JC ?C0019 + ; SOURCE LINE # 179 + ; SOURCE LINE # 180 +001C 750000 R MOV cnt_sys_tim0_5ms,#00H + ; SOURCE LINE # 183 +001F 300034 R JNB BES_Puls_Start,?C0019 + ; SOURCE LINE # 184 + ; SOURCE LINE # 185 +0022 E500 R MOV A,BES_Puls_Cnt + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 9 + +0024 D3 SETB C +0025 9404 SUBB A,#04H +0027 5004 JNC ?C0010 + ; SOURCE LINE # 186 + ; SOURCE LINE # 187 +0029 C282 CLR COM_CTRL + ; SOURCE LINE # 188 +002B 801B SJMP ?C0011 +002D ?C0010: + ; SOURCE LINE # 190 + ; SOURCE LINE # 191 +002D E500 R MOV A,BES_Puls_Cnt +002F 30E00B JNB ACC.0,?C0012 + ; SOURCE LINE # 192 + ; SOURCE LINE # 194 +0032 B40D04 CJNE A,#0DH,?C0013 + ; SOURCE LINE # 195 + ; SOURCE LINE # 196 +0035 C282 CLR COM_CTRL + ; SOURCE LINE # 197 +0037 800F SJMP ?C0011 +0039 ?C0013: + ; SOURCE LINE # 199 + ; SOURCE LINE # 200 +0039 D282 SETB COM_CTRL + ; SOURCE LINE # 201 + ; SOURCE LINE # 202 +003B 800B SJMP ?C0011 +003D ?C0012: + ; SOURCE LINE # 204 + ; SOURCE LINE # 206 +003D E500 R MOV A,BES_Puls_Cnt +003F B40E04 CJNE A,#0EH,?C0016 + ; SOURCE LINE # 207 + ; SOURCE LINE # 208 +0042 D282 SETB COM_CTRL + ; SOURCE LINE # 209 +0044 8002 SJMP ?C0011 +0046 ?C0016: + ; SOURCE LINE # 211 + ; SOURCE LINE # 212 +0046 C282 CLR COM_CTRL + ; SOURCE LINE # 213 + ; SOURCE LINE # 214 + ; SOURCE LINE # 215 +0048 ?C0011: + ; SOURCE LINE # 217 +0048 0500 R INC BES_Puls_Cnt + ; SOURCE LINE # 219 +004A E500 R MOV A,BES_Puls_Cnt +004C C3 CLR C +004D 9417 SUBB A,#017H +004F 4005 JC ?C0019 + ; SOURCE LINE # 220 + ; SOURCE LINE # 221 +0051 C200 R CLR BES_Puls_Start + ; SOURCE LINE # 222 +0053 750000 R MOV BES_Puls_Cnt,#00H + ; SOURCE LINE # 223 + ; SOURCE LINE # 224 + ; SOURCE LINE # 225 + ; SOURCE LINE # 227 + C51 COMPILER V9.57.0.0 SYS_TIM 06/14/2024 11:08:38 PAGE 10 + +0056 ?C0019: +0056 D0D0 POP PSW +0058 D0E0 POP ACC +005A 32 RETI + ; FUNCTION tim0_Interrupt (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 176 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 8 ---- + IDATA SIZE = ---- ---- + BIT SIZE = 6 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/system.lst b/Project/Listings/system.lst new file mode 100644 index 0000000..3480804 --- /dev/null +++ b/Project/Listings/system.lst @@ -0,0 +1,468 @@ +C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE SYSTEM +OBJECT MODULE PLACED IN .\Objects\system.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\system\system.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(.. + -\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrI + -nc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\Us + -rInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\s + -ystem.lst) TABS(2) OBJECT(.\Objects\system.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file system.c + 5 * @brief system module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/08/04 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/15 Alex build this file + 18 * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= + -Ҫ = + 19 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 20 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + 21 ******************************************************************************/ + 22 /*_____ I N C L U D E S ____________________________________________________*/ + 23 + 24 #include "system.h" + 25 #include "gpio.h" + 26 #include "adc.h" + 27 #include "hall.h" + 28 #include "key.h" + 29 #include "sleep.h" + 30 #include "uart.h" + 31 #include "bat.h" + 32 #include "sys_tim.h" + 33 #include "charger_module.h" + 34 #include "discharge_module.h" + 35 #include "led.h" + 36 #include "vox_module.h" + 37 #include "watchdog.h" + 38 #include "userapp.h" + 39 + 40 /******************************************************************************\ + 41 Macro definitions + 42 \******************************************************************************/ + 43 + 44 /******************************************************************************\ + 45 Variables definitions + 46 \******************************************************************************/ + 47 + 48 /******************************************************************************\ + 49 Functions definitions + 50 \******************************************************************************/ + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 2 + + 51 + 52 + 53 /* + 54 ******************************************************************************* + 55 * void System_Init(void) + 56 * + 57 * Description : System Initialization + 58 * + 59 * Arguments : NONE + 60 + 61 * Returns : NONE + 62 + 63 * Notes : NONE + 64 * + 65 ******************************************************************************* + 66 */ + 67 void System_Init(void) + 68 { + 69 1 CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + 70 1 + 71 1 /* testIO LDO bias100uAء*/ + 72 1 SFRADDR = 0x89; + 73 1 SFRDATA |= 0x80; + 74 1 + 75 1 /*test*/ + 76 1 SFRADDR = P0_PD; + 77 1 SFRDATA &= ~0x03; + 78 1 + 79 1 #if UART0_ENABLE + 80 1 + 81 1 SFRADDR = P0_PU; + 82 1 SFRDATA = 0x03; + 83 1 + 84 1 //UART0_Init(); + 85 1 SFRADDR = MFP_CTL0; + 86 1 SFRDATA = 0x05; //P01 as UART's TX,P00 as UART's RX + 87 1 + 88 1 BD = 1; //Select additional Baudrate generator + 89 1 PCON |= 0x80; //Baudrate double enable + 90 1 + 91 1 //baudrate set + 92 1 S0RELH = HIBYTE(S0REL_VALUE); + 93 1 S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + 94 1 + 95 1 S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + 96 1 + 97 1 TI0 = 1; + 98 1 RI0 = 1; + 99 1 ES0 = 1; //Enable UART0 IRQ + 100 1 + 101 1 #endif + 102 1 + 103 1 #if VOX_ENABLE + 104 1 //Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ + 105 1 VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V + - + 106 1 /* + 107 1 SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + 108 1 SFRDATA &= 0xE0; + 109 1 SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + 110 1 */ + 111 1 #endif + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 3 + + 112 1 + 113 1 //Sys_Tim0_Init(); + 114 1 //TMOD &= 0xF0; + 115 1 TMOD = 0x01; //mode 1, 16bit timer + 116 1 + 117 1 TH0 = C_TIM0_Reload >> 8; + 118 1 TL0 = C_TIM0_Reload & 0xFF; + 119 1 + 120 1 ET0 = 1; //enable time0 interrupt + 121 1 TR0 = 1; //time0 run + 122 1 + 123 1 #if TIMER1_ENABLE + + //Sys_Tim1_Init(); + + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run + + #endif + 136 1 /*test,set P1.0 output*/ + 137 1 #if 0 + SFRADDR = P1_OE; + SFRDATA = 0x01; + P10 = 0; + #endif + 142 1 /*COM_CTRL Set*/ + 143 1 SFRADDR = P0_OE; + 144 1 SFRDATA = 0x0C; //COM_CTRL(P02)LED(P03)ΪGPIO + 145 1 + 146 1 // COM_CTRL = ON; //P02øߣVOUTõͣUART + 147 1 + 148 1 #ifdef LED_DISPLAY + 149 1 // LED_Init(); // LED pin ΪGPIO + 150 1 + 151 1 SFRADDR = P0_DRV; + 152 1 SFRDATA = 0x0C; + 153 1 + 154 1 pin_LED_1 = 0; + 155 1 #endif + 156 1 + 157 1 #if WTG_ENABLE + 158 1 /* 65ms */ + 159 1 WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + 160 1 /* 1s */ + 161 1 // WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + 162 1 #endif + 163 1 + 164 1 #ifdef ADC_NTC_ENABLE + 165 1 + 166 1 SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + 167 1 SFRDATA |= 0x80; + 168 1 + 169 1 SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + 170 1 SFRDATA = 0x10; + 171 1 + 172 1 #endif + 173 1 + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 4 + + 174 1 /* Interrupt Enable ӦѡҪж */ + 175 1 SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + 176 1 SFRDATA = 0x3C; + 177 1 + 178 1 SFRADDR = IRQ_EN10; //INT4 --- Hall interrupt enable. + 179 1 SFRDATA = 0x0C; + 180 1 + 181 1 /* ⲿжʹ */ + 182 1 EX0 = 1; + 183 1 EX2 = 1; + 184 1 EX4 = 1; + 185 1 + 186 1 EAL = 1; //жϡ + 187 1 + 188 1 IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + 189 1 IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + 190 1 IRQ_FLAG0 = 0x0C; //Vox· + 191 1 + 192 1 #if CHARGER_ENABLE + 193 1 + 194 1 SFRADDR = PMU_CTL7; //ϷоƬرVBUS OVʹ + 195 1 SFRDATA &= ~0x20; + 196 1 + 197 1 CHG_CTL |= 0x10; //糬ʱʹ + 198 1 + 199 1 SFRADDR = REG_CHG0; + 200 1 SFRDATA |= 0x04; //VDPM + 201 1 + 202 1 #endif + 203 1 + 204 1 #if SLEEP_ENABLE + 205 1 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + 206 1 #endif + 207 1 + 208 1 } + 209 + 210 /* + 211 ******************************************************************************* + 212 * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + 213 * + 214 * Description : System External Intterupt 0 + 215 * + 216 * Arguments : NONE + 217 + 218 * Returns : NONE + 219 + 220 * Notes : NONE + 221 * + 222 ******************************************************************************* + 223 */ + 224 void EX0_isr(void) interrupt Interrupt_Vector_IE0 + 225 { + 226 1 + 227 1 } + 228 + 229 /* + 230 ******************************************************************************* + 231 * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + 232 * + 233 * Description : System External Intterupt 2 + 234 * + 235 * Arguments : NONE + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 5 + + 236 + 237 * Returns : NONE + 238 + 239 * Notes : NONE + 240 * + 241 ******************************************************************************* + 242 */ + 243 + 244 void EX2_isr(void) interrupt Interrupt_Vector_IE2 + 245 { + 246 1 IRQ_FLAG3 = 0x3C; + 247 1 + 248 1 #if SLEEP_ENABLE + 249 1 // if( !Enter_Sleep_Cnt_Restart_Flag ) + 250 1 { + 251 2 Enter_Sleep_Cnt_Restart_Flag = 1; + 252 2 } + 253 1 #endif + 254 1 } + 255 + 256 /* + 257 ******************************************************************************* + 258 * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + 259 * + 260 * Description : System External Intterupt 4 + 261 * + 262 * Arguments : NONE + 263 + 264 * Returns : NONE + 265 + 266 * Notes : NONE + 267 * + 268 ******************************************************************************* + 269 */ + 270 void EX4_isr(void) interrupt Interrupt_Vector_IE4 + 271 { + 272 1 + 273 1 IRQ_FLAG10 = 0x0C; + 274 1 + 275 1 #if SLEEP_ENABLE + 276 1 + 277 1 //if( !Enter_Sleep_Cnt_Restart_Flag ) + 278 1 { + 279 2 Enter_Sleep_Cnt_Restart_Flag = 1; + 280 2 } + 281 1 + 282 1 #endif + 283 1 } + 284 + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 6 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION System_Init (BEGIN) + ; SOURCE LINE # 67 + ; SOURCE LINE # 68 + ; SOURCE LINE # 69 +0000 E4 CLR A +0001 F5D2 MOV CLKPRE,A + ; SOURCE LINE # 72 +0003 75FE89 MOV SFRADDR,#089H + ; SOURCE LINE # 73 +0006 43FF80 ORL SFRDATA,#080H + ; SOURCE LINE # 76 +0009 75FE01 MOV SFRADDR,#01H + ; SOURCE LINE # 77 +000C 53FFFC ANL SFRDATA,#0FCH + ; SOURCE LINE # 81 +000F F5FE MOV SFRADDR,A + ; SOURCE LINE # 82 +0011 75FF03 MOV SFRDATA,#03H + ; SOURCE LINE # 85 +0014 75FE0E MOV SFRADDR,#0EH + ; SOURCE LINE # 86 +0017 75FF05 MOV SFRDATA,#05H + ; SOURCE LINE # 88 +001A D2DF SETB BD + ; SOURCE LINE # 89 +001C 438780 ORL PCON,#080H + ; SOURCE LINE # 92 +001F 75BA03 MOV S0RELH,#03H + ; SOURCE LINE # 93 +0022 75AAFD MOV S0RELL,#0FDH + ; SOURCE LINE # 95 +0025 7598D0 MOV S0CON,#0D0H + ; SOURCE LINE # 97 +0028 D299 SETB TI0 + ; SOURCE LINE # 98 +002A D298 SETB RI0 + ; SOURCE LINE # 99 +002C D2AC SETB ES0 + ; SOURCE LINE # 105 +002E 75B7C3 MOV VOX_CTL0,#0C3H + ; SOURCE LINE # 115 +0031 758901 MOV TMOD,#01H + ; SOURCE LINE # 117 +0034 758CFC MOV TH0,#0FCH + ; SOURCE LINE # 118 +0037 758A17 MOV TL0,#017H + ; SOURCE LINE # 120 +003A D2A9 SETB ET0 + ; SOURCE LINE # 121 +003C D28C SETB TR0 + ; SOURCE LINE # 143 +003E 75FE06 MOV SFRADDR,#06H + ; SOURCE LINE # 144 +0041 75FF0C MOV SFRDATA,#0CH + ; SOURCE LINE # 151 +0044 75FE03 MOV SFRADDR,#03H + ; SOURCE LINE # 152 +0047 75FF0C MOV SFRDATA,#0CH + ; SOURCE LINE # 154 + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 7 + +004A C283 CLR pin_LED_1 + ; SOURCE LINE # 159 +004C F586 MOV WDTREL,A + ; SOURCE LINE # 166 +004E 75FE0F MOV SFRADDR,#0FH + ; SOURCE LINE # 167 +0051 43FF80 ORL SFRDATA,#080H + ; SOURCE LINE # 169 +0054 75FE4F MOV SFRADDR,#04FH + ; SOURCE LINE # 170 +0057 75FF10 MOV SFRDATA,#010H + ; SOURCE LINE # 175 +005A 75FE17 MOV SFRADDR,#017H + ; SOURCE LINE # 176 +005D 75FF3C MOV SFRDATA,#03CH + ; SOURCE LINE # 178 +0060 75FE1E MOV SFRADDR,#01EH + ; SOURCE LINE # 179 +0063 75FF0C MOV SFRDATA,#0CH + ; SOURCE LINE # 182 +0066 D2A8 SETB EX0 + ; SOURCE LINE # 183 +0068 D2B9 SETB EX2 + ; SOURCE LINE # 184 +006A D2BB SETB EX4 + ; SOURCE LINE # 186 +006C D2AF SETB EAL + ; SOURCE LINE # 188 +006E 75F21C MOV IRQ_FLAG9,#01CH + ; SOURCE LINE # 189 +0071 75F3C0 MOV IRQ_FLAG10,#0C0H + ; SOURCE LINE # 190 +0074 75E80C MOV IRQ_FLAG0,#0CH + ; SOURCE LINE # 194 +0077 75FE87 MOV SFRADDR,#087H + ; SOURCE LINE # 195 +007A 53FFDF ANL SFRDATA,#0DFH + ; SOURCE LINE # 197 +007D 43B310 ORL CHG_CTL,#010H + ; SOURCE LINE # 199 +0080 75FE70 MOV SFRADDR,#070H + ; SOURCE LINE # 200 +0083 43FF04 ORL SFRDATA,#04H + ; SOURCE LINE # 205 +0086 75000A E MOV Decnt_SleepDelay,#0AH + ; SOURCE LINE # 208 +0089 22 RET + ; FUNCTION System_Init (END) + + ; FUNCTION EX0_isr (BEGIN) + ; SOURCE LINE # 224 + ; SOURCE LINE # 227 +0000 32 RETI + ; FUNCTION EX0_isr (END) + + ; FUNCTION EX2_isr (BEGIN) + ; SOURCE LINE # 244 + ; SOURCE LINE # 246 +0000 75EB3C MOV IRQ_FLAG3,#03CH + ; SOURCE LINE # 250 + ; SOURCE LINE # 251 +0003 D200 E SETB Enter_Sleep_Cnt_Restart_Flag + C51 COMPILER V9.57.0.0 SYSTEM 06/14/2024 11:08:37 PAGE 8 + + ; SOURCE LINE # 252 + ; SOURCE LINE # 254 +0005 32 RETI + ; FUNCTION EX2_isr (END) + + ; FUNCTION EX4_isr (BEGIN) + ; SOURCE LINE # 270 + ; SOURCE LINE # 273 +0000 75F30C MOV IRQ_FLAG10,#0CH + ; SOURCE LINE # 278 + ; SOURCE LINE # 279 +0003 D200 E SETB Enter_Sleep_Cnt_Restart_Flag + ; SOURCE LINE # 280 + ; SOURCE LINE # 283 +0005 32 RETI + ; FUNCTION EX4_isr (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 151 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/uart.lst b/Project/Listings/uart.lst new file mode 100644 index 0000000..b090e14 --- /dev/null +++ b/Project/Listings/uart.lst @@ -0,0 +1,610 @@ +C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE UART +OBJECT MODULE PLACED IN .\Objects\uart.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\uart\uart.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr + -Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k + -ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc + -\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\uart. + -lst) TABS(2) OBJECT(.\Objects\uart.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file uart.c + 5 * @brief uart module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/12/14 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/12/14 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 #include "uart.h" + 21 #include "system.h" + 22 #include "vox_module.h" + 23 + 24 + 25 #if UART0_ENABLE + 26 + 27 /******************************************************************************\ + 28 Macro definitions + 29 \******************************************************************************/ + 30 #define NONE_PARITY 0 //У + 31 #define ODD_PARITY 1 //У + 32 #define EVEN_PARITY 2 //żУ + 33 #define MARK_PARITY 3 //У + 34 #define SPACE_PARITY 4 //հУ + 35 + 36 #define PARITYBIT EVEN_PARITY //Уλ + 37 + 38 /******************************************************************************\ + 39 Variables definitions + 40 \******************************************************************************/ + 41 + 42 bit busy0; + 43 + 44 #ifdef VOX_RX + 45 idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //ջ + 46 bit Uart0_RX_Finish_Flag = 0; + 47 #endif + 48 + 49 #endif + 50 + 51 #ifdef _DEBUG_ALL + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 2 + + char putchar(char c) + { + + while(!TI0); + TI0 = 0; + return (S0BUF = c); + + // Uart0SendData(c); + // return(c); + } + #endif + 63 + 64 #if UART0_ENABLE + 65 + 66 /* + 67 ******************************************************************************* + 68 * void UART0_Init(void) + 69 * + 70 * Description : UART0 Initialization UART0debugӡ͸ + 71 * + 72 * Arguments : NONE + 73 + 74 * Returns : NONE + 75 + 76 * Notes : NONE + 77 * + 78 ******************************************************************************* + 79 */ + 80 #if 0 + void UART0_Init(void) + { + SFRADDR = MFP_CTL0; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; //P01 as UART's TX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ + } + #endif + 101 /* + 102 ******************************************************************************* + 103 * void Uart0SendData(uint8_t Txdata) + 104 * + 105 * Description : UART0 Send Data + 106 * + 107 * Arguments : NONE + 108 + 109 * Returns : NONE + 110 + 111 * Notes : NONE + 112 * + 113 ******************************************************************************* + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 3 + + 114 */ + 115 #if 0 + void Uart0SendData(uint8_t Txdata) + { + while(busy0); + ACC = Txdata; + if (P) //PУλ + { + #if (PARITYBIT == ODD_PARITY) + TB80 = 0; //УλΪ0 + #elif (PARITYBIT == EVEN_PARITY) + TB80 = 1; //УλΪ1 + #endif + } + else + { + #if (PARITYBIT == ODD_PARITY) + TB80 = 1; //УλΪ1 + #elif (PARITYBIT == EVEN_PARITY) + TB80 = 0; //УλΪ0 + #endif + } + busy0 = 1; + S0BUF = ACC; + } + #endif + 140 + 141 /* + 142 ******************************************************************************* + 143 * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) + 144 * + 145 * Description : UART0 Send Packet + 146 * + 147 * Arguments : NONE + 148 + 149 * Returns : NONE + 150 + 151 * Notes : NONE + 152 * + 153 ******************************************************************************* + 154 */ + 155 #ifdef VOX_TX + 156 + 157 void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf) + 158 { + 159 1 uint8_t i = 0; + 160 1 for(i=0;i COM0_Data_Lenth) ) //յdataRX0DataLen + -δ䡣 + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + } + + #elif defined(ZHONGKELANXUN) //пѶ + + switch(Rx0Status) + { + case 0: + if( S0BUF == (BOXHEADER >> 8) ) + { + Rx0Status = 1; + + RX0_Cnt = 0; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + break; + + case 1: + if(S0BUF == BOXHEADER) + { + Rx0Status = 2; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 6 + + break; + case 1: + RX0_Buffer[RX0_Cnt] = S0BUF; + + if(RX0DataLen == RX0_Cnt - 6) + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + else + { + RX0_Cnt++; + + if(RX0_Cnt == 5) + { + RX0DataLen = RX0_Buffer[4]; //ȡݳ length,lengthChecksum + } + } + } + + #elif defined(XIAOMI) //С + 321 2 + 322 2 switch(Rx0Status) + 323 2 { + 324 3 case 0: + 325 3 + 326 3 if(S0BUF == 0xAA) + 327 3 { + 328 4 Rx0Status = 1; + 329 4 + 330 4 RX0_Cnt = 0; + 331 4 + 332 4 RX0_Buffer[RX0_Cnt] = S0BUF; + 333 4 + 334 4 RX0_Cnt++; + 335 4 } + 336 3 else + 337 3 { + 338 4 Rx0Status = 0; + 339 4 + 340 4 RX0_Cnt = 0; + 341 4 } + 342 3 break; + 343 3 + 344 3 case 1: + 345 3 + 346 3 RX0_Buffer[RX0_Cnt] = S0BUF; + 347 3 + 348 3 RX0_Cnt++; + 349 3 + 350 3 if( RX0_Cnt == Vox_Comm_Data_Len ) + 351 3 { + 352 4 RX0DataLen = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 9; //ȡݳȣHeadr(1Byte) + Trandsmit Dir(1 + -Byte) + CMD(2Bytes) + datalen(2Bytes) + CRC16(2Bytes) + 353 4 } + 354 3 + 355 3 if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //յdataRX0DataLen + -δ䡣 + 356 3 { + 357 4 RX0_Cnt = 0; + 358 4 Rx0Status = 0; + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 7 + + 359 4 Uart0_RX_Finish_Flag = 1; + 360 4 } + 361 3 } + 362 2 + 363 2 + 364 2 + 365 2 #endif + 366 2 + 367 2 #endif + 368 2 } + 369 1 } + 370 + 371 #endif + 372 + 373 + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 8 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Com0015 (BEGIN) +0000 L?0022: +0000 7400 R MOV A,#LOW RX0_Buffer +0002 2500 R ADD A,RX0_Cnt+01H +0004 F8 MOV R0,A +0005 A699 MOV @R0,S0BUF +0007 0500 R INC RX0_Cnt+01H +0009 E500 R MOV A,RX0_Cnt+01H +000B 22 RET +000C L?0023: +000C L?0024: +000C 750000 R MOV RX0_Cnt,#00H +000F 750000 R MOV RX0_Cnt+01H,#00H +0012 22 RET + ; FUNCTION Com0015 (END) + + ; FUNCTION _Uart0SendPacket (BEGIN) + ; SOURCE LINE # 157 +0000 8E00 R MOV Length,R6 +0002 8F00 R MOV Length+01H,R7 +0004 8B00 R MOV TransBuf,R3 +0006 8A00 R MOV TransBuf+01H,R2 +0008 8900 R MOV TransBuf+02H,R1 + ; SOURCE LINE # 158 + ; SOURCE LINE # 159 +;---- Variable 'i' assigned to Register 'R7' ---- +000A E4 CLR A +000B FF MOV R7,A + ; SOURCE LINE # 160 +000C ?C0001: +000C EF MOV A,R7 +000D C3 CLR C +000E 9500 R SUBB A,Length+01H +0010 E4 CLR A +0011 9500 R SUBB A,Length +0013 5016 JNC ?C0006 + ; SOURCE LINE # 161 +0015 ?C0004: + ; SOURCE LINE # 164 +0015 2000FD R JB busy0,?C0004 + ; SOURCE LINE # 165 +0018 7800 R MOV R0,#LOW TransBuf +001A E4 CLR A +001B 75F001 MOV B,#01H +001E 120000 E LCALL ?C?PLDIIDATA +0021 120000 E LCALL ?C?CLDPTR + ; SOURCE LINE # 166 +0024 D200 R SETB busy0 + ; SOURCE LINE # 167 +0026 F599 MOV S0BUF,A + ; SOURCE LINE # 168 +0028 0F INC R7 +0029 80E1 SJMP ?C0001 + ; SOURCE LINE # 169 +002B ?C0006: +002B 22 RET + ; FUNCTION _Uart0SendPacket (END) + + ; FUNCTION uart0_Interrupt (BEGIN) + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 9 + +0000 C0E0 PUSH ACC +0002 C0D0 PUSH PSW +0004 75D000 MOV PSW,#00H +0007 C000 PUSH AR0 +0009 C005 PUSH AR5 +000B C006 PUSH AR6 +000D C007 PUSH AR7 + ; SOURCE LINE # 192 + ; SOURCE LINE # 207 +000F 309904 JNB TI0,?C0007 + ; SOURCE LINE # 208 + ; SOURCE LINE # 209 +0012 C299 CLR TI0 + ; SOURCE LINE # 210 +0014 C200 R CLR busy0 + ; SOURCE LINE # 211 +0016 ?C0007: + ; SOURCE LINE # 214 +0016 309867 JNB RI0,?C0017 + ; SOURCE LINE # 215 + ; SOURCE LINE # 216 +0019 C298 CLR RI0 + ; SOURCE LINE # 322 +001B E500 R MOV A,Rx0Status +001D 14 DEC A +001E 601F JZ ?C0013 +0020 04 INC A +0021 705D JNZ ?C0017 + ; SOURCE LINE # 323 + ; SOURCE LINE # 324 +0023 ?C0010: + ; SOURCE LINE # 326 +0023 E599 MOV A,S0BUF +0025 B4AA0F CJNE A,#0AAH,?C0011 + ; SOURCE LINE # 327 + ; SOURCE LINE # 328 +0028 750001 R MOV Rx0Status,#01H + ; SOURCE LINE # 330 +002B 120000 R LCALL L?0023 + ; SOURCE LINE # 332 + ; SOURCE LINE # 334 +002E 120000 R LCALL L?0022 +0031 7002 JNZ ?C0018 +0033 0500 R INC RX0_Cnt +0035 ?C0018: + ; SOURCE LINE # 335 +0035 8049 SJMP ?C0017 +0037 ?C0011: + ; SOURCE LINE # 337 + ; SOURCE LINE # 338 +0037 750000 R MOV Rx0Status,#00H + ; SOURCE LINE # 340 +003A 120000 R LCALL L?0023 + ; SOURCE LINE # 341 + ; SOURCE LINE # 342 +003D 8041 SJMP ?C0017 + ; SOURCE LINE # 344 +003F ?C0013: + ; SOURCE LINE # 346 + ; SOURCE LINE # 348 +003F 120000 R LCALL L?0022 +0042 7002 JNZ ?C0019 + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 10 + +0044 0500 R INC RX0_Cnt +0046 ?C0019: + ; SOURCE LINE # 350 +0046 6407 XRL A,#07H +0048 4500 R ORL A,RX0_Cnt +004A 7015 JNZ ?C0014 + ; SOURCE LINE # 351 + ; SOURCE LINE # 352 +004C 7800 R MOV R0,#LOW RX0_Buffer+06H +004E E6 MOV A,@R0 +004F FE MOV R6,A +0050 E4 CLR A +0051 2409 ADD A,#09H +0053 FF MOV R7,A +0054 E4 CLR A +0055 3E ADDC A,R6 +0056 FE MOV R6,A +0057 18 DEC R0 +0058 E6 MOV A,@R0 +0059 FD MOV R5,A +005A EE MOV A,R6 +005B F500 R MOV RX0DataLen,A +005D EF MOV A,R7 +005E 4D ORL A,R5 +005F F500 R MOV RX0DataLen+01H,A + ; SOURCE LINE # 353 +0061 ?C0014: + ; SOURCE LINE # 355 +0061 E500 R MOV A,RX0DataLen+01H +0063 6500 R XRL A,RX0_Cnt+01H +0065 7004 JNZ ?C0020 +0067 E500 R MOV A,RX0DataLen +0069 6500 R XRL A,RX0_Cnt +006B ?C0020: +006B 600B JZ ?C0016 +006D D3 SETB C +006E E500 R MOV A,RX0_Cnt+01H +0070 940B SUBB A,#0BH +0072 E500 R MOV A,RX0_Cnt +0074 9400 SUBB A,#00H +0076 4008 JC ?C0017 +0078 ?C0016: + ; SOURCE LINE # 356 + ; SOURCE LINE # 357 +0078 120000 R LCALL L?0024 + ; SOURCE LINE # 358 +007B 750000 R MOV Rx0Status,#00H + ; SOURCE LINE # 359 +007E D200 R SETB Uart0_RX_Finish_Flag + ; SOURCE LINE # 360 + ; SOURCE LINE # 361 + ; SOURCE LINE # 368 + ; SOURCE LINE # 369 +0080 ?C0017: +0080 D007 POP AR7 +0082 D006 POP AR6 +0084 D005 POP AR5 +0086 D000 POP AR0 +0088 D0D0 POP PSW +008A D0E0 POP ACC +008C 32 RETI + ; FUNCTION uart0_Interrupt (END) + C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 11 + + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 204 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 5 5 + IDATA SIZE = 11 ---- + BIT SIZE = 2 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/userapp.lst b/Project/Listings/userapp.lst new file mode 100644 index 0000000..58c4a25 --- /dev/null +++ b/Project/Listings/userapp.lst @@ -0,0 +1,744 @@ +C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE USERAPP +OBJECT MODULE PLACED IN .\Objects\userapp.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\userapp\userapp.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR( + -..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\Us + -rInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\ + -UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings + -\userapp.lst) TABS(2) OBJECT(.\Objects\userapp.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file UserApp.c + 5 * @brief UserApp module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2023/03/27 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2023/03/27 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 + 21 #include "userapp.h" + 22 #include "gpio.h" + 23 #include "adc.h" + 24 #include "hall.h" + 25 #include "key.h" + 26 #include "sleep.h" + 27 #include "system.h" + 28 #include "bat.h" + 29 #include "sys_tim.h" + 30 #include "charger_module.h" + 31 #include "discharge_module.h" + 32 #include "led.h" + 33 #include "vox_module.h" + 34 + 35 /******************************************************************************\ + 36 Macro definitions + 37 \******************************************************************************/ + 38 + 39 /******************************************************************************\ + 40 Variables definitions + 41 \******************************************************************************/ + 42 + 43 uint8_t LED_On_Timer = 0; //ledʱʱ + 44 //uint8_t LED_On_Timer1 = 0; //ledʱʱ + 45 + 46 bit led_blink_1time_flag = 0; + 47 + 48 /******************************************************************************\ + 49 Functions definitions + 50 \******************************************************************************/ + 51 + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 2 + + 52 /***************************************************************************** + 53 * Function : void LED_Display_App(void) + 54 * Description : 5ms + 55 * Input : None + 56 * Output : None + 57 * Return : None + 58 * Note : None + 59 *****************************************************************************/ + 60 /* + 61 磺 + 62 1УΪʱغ״̬¶ʾ糣Ч1Hz˸ + 63 2ɱЧϣ + 64 + 65 dz磺 + 66 1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s + 67 2״ʹÿǵЧٶںУ4s𣻢ڶںУ + 68 ۳Уһ£ú + 69 3ظǵЧߵ磺4s𣻵͵磺1Hz4s + 70 4غ״̬޵Чʾ + 71 + 72 */ + 73 #ifdef LED_DISPLAY + 74 + 75 void LED_Display_App(void) + 76 { + 77 1 #if 0 + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1Hz + -LEDһº1Hz˸ + { + #if 1 + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_leve + -lҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + LED_R_FLASH(100,4); + CoverEvent_Flg_led = 0; + } + else + #endif + { + /*״̬Чʾ*/ + if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR + -_CHAN] != VOX_PAIR_NONE) ) ) /* ״̬жڲ֡ʾԵЧ */ + { + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) + - /*УLEDƵ2Hz*/ + { + if (Display_Sta != LED_FLASH) + { + LED_R_KEEP_FLASHING(50); + } + LED_On_Timer = 0; + + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /* + -Գɹ*/ + { + if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + { + LED_On_Timer++; + LED_R_ON(); + } + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 3 + + else + { + LED_R_OFF(); + // CoverEvent_Flg_led = 0; + } + } + } + else + { + if ( (CHIP_STA4 & 0x80) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬ + -100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧ + -ĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + if( CoverStatus == CLOSE ) + { + CoverEvent_Flg_led = 0; + } + } + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != LED_FLASH) // УLED˸ + { + LED_R_KEEP_FLASHING(100); + } + } + else // δ, Ϩ + { + LED_R_OFF(); + } + } + #endif + 163 1 + 164 1 if (CHIP_STA4 & 0x80) // + 165 1 { + 166 2 if ( Charger_Done ) // ɣLED + 167 2 { + 168 3 LED_R_ON(); + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 4 + + 169 3 } + 170 2 else + 171 2 { + 172 3 if ( CoverEvent_Flg_led && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬ + -100msָԭĵЧ + 173 3 { + 174 4 if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧ + -ĵ͵ƽУûЧ + 175 4 { + 176 5 led_blink_1time_flag = 1; + 177 5 LED_R_OFF(); + 178 5 CoverEvent_Flg_led = 0; + 179 5 return; + 180 5 } + 181 4 } + 182 3 + 183 3 if (Display_Sta != LED_FLASH) // УLED˸ + 184 3 { + 185 4 LED_R_KEEP_FLASHING(100); + 186 4 } + 187 3 } + 188 2 } + 189 1 else + 190 1 { + 191 2 if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_leve + -lҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + 192 2 { + 193 3 if (CoverEvent_Flg_led) // УLED˸ + 194 3 { + 195 4 LED_R_FLASH(100,4); + 196 4 CoverEvent_Flg_led = 0; + 197 4 } + 198 3 } + 199 2 else + 200 2 { + 201 3 /*״̬Чʾ*/ + 202 3 if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR + -_CHAN] != VOX_PAIR_NONE) ) ) /* ״̬жڲ֡ʾԵЧ */ + 203 3 { + 204 4 if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) + -/*УLEDƵ2Hz*/ + 205 4 { + 206 5 if (Display_Sta != LED_FLASH) + 207 5 { + 208 6 LED_R_KEEP_FLASHING(50); + 209 6 } + 210 5 LED_On_Timer = 0; + 211 5 Enter_Sleep_Cnt_Restart_Flag = 1; + 212 5 + 213 5 } + 214 4 else + 215 4 if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /* + -Գɹ*/ + 216 4 { + 217 5 if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + 218 5 { + 219 6 LED_On_Timer++; + 220 6 LED_R_ON(); + 221 6 } + 222 5 else + 223 5 { + 224 6 LED_R_OFF(); + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 5 + + 225 6 } + 226 5 } + 227 4 } + 228 3 else + 229 3 { + 230 4 if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + 231 4 { + 232 5 LED_On_Timer++; + 233 5 LED_R_ON(); + 234 5 } + 235 4 else + 236 4 { + 237 5 LED_R_OFF(); + 238 5 } + 239 4 } + 240 3 } + 241 2 } + 242 1 } + 243 + 244 #endif + 245 /***************************************************************************** + 246 * Function : UserAPP + 247 * Description : 5ms + 248 * Input : None + 249 * Output : None + 250 * Return : None + 251 * Note : None + 252 *****************************************************************************/ + 253 void UserAPP(void) + 254 { + 255 1 if( F_sys_tim_5ms ) + 256 1 { + 257 2 F_sys_tim_5ms = 0; + 258 2 + 259 2 #if KEY_HALL_ENABLE + 260 2 //Key_Handler(); // + 261 2 Hall_Handler(); //ظǼ + 262 2 #endif + 263 2 + 264 2 #if DISCHARGE_ENABLE + 265 2 DisCharge_Handler(); //ŵboost + 266 2 #endif + 267 2 + 268 2 } + 269 1 + 270 1 #ifdef LED_DISPLAY + 271 1 + 272 1 if(F_sys_tim_10ms) + 273 1 { + 274 2 F_sys_tim_10ms = 0; + 275 2 LED_Drv(); + 276 2 } + 277 1 + 278 1 #endif + 279 1 + 280 1 if( F_sys_tim_100ms ) + 281 1 { + 282 2 F_sys_tim_100ms = 0; + 283 2 + 284 2 Key_Handler(); + 285 2 + 286 2 #if CHARGER_ENABLE + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 6 + + 287 2 Charger_Handler(); //繦 + 288 2 #endif + 289 2 + 290 2 #if ADC_ENABLE + 291 2 Vbat_Adc = Vbat_Value(); //ȡBatѹ + 292 2 #endif + 293 2 + 294 2 #if VOX_ENABLE + 295 2 Vox_Det_Machine(); //ظǺӹ߼ + 296 2 #endif + 297 2 + 298 2 #ifdef LED_DISPLAY + 299 2 LED_Display_App(); //LED Ч + 300 2 #endif + 301 2 + 302 2 #if BAT_VALUE + 303 2 check_bat_level(); // + 304 2 #endif + 305 2 + 306 2 #ifdef VOX_RX + 307 2 HandleVoxCommMsg(); + 308 2 #endif + 309 2 } + 310 1 + 311 1 if( F_sys_tim_1s ) + 312 1 { + 313 2 F_sys_tim_1s = 0; + 314 2 + 315 2 #if SLEEP_ENABLE + 316 2 + 317 2 /*1ѺNsSleep Mode,NҪ100ms + 318 2 2VINڵ£ϵsleep mode + 319 2 */ + 320 2 + 321 2 if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + 322 2 { + 323 3 Decnt_SleepDelay--; + 324 3 + 325 3 /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + 326 3 if( Enter_Sleep_Cnt_Restart_Flag ) + 327 3 { + 328 4 Enter_Sleep_Cnt_Restart_Flag = 0; + 329 4 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + 330 4 } + 331 3 + 332 3 return; + 333 3 } + 334 2 + 335 2 if( Check_Require_Sleep() ) + 336 2 { + 337 3 /* жʹ */ + 338 3 + 339 3 //SFRADDR = WKUP_EN0; + 340 3 //SFRDATA = 0xE6; //wake0 up enable. + 341 3 + 342 3 //SFRADDR = WKUP_EN3; + 343 3 //SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + 344 3 + 345 3 /* Enter Sleep */ + 346 3 /* InSleep Handler */ //Disable All IRQ + 347 3 #if UART0_ENABLE + 348 3 ES0 = 0; //UART0 IRQ Disable + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 7 + + 349 3 #endif + 350 3 EX4 = 0; + 351 3 EX2 = 0; + 352 3 ET0 = 0; //timer0 IRQ Disable + 353 3 #if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable + #endif + 356 3 + 357 3 SFRADDR = ADC_CTL0; + 358 3 SFRDATA &= ~0x80; //ADC Disable. + 359 3 + 360 3 PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + 361 3 + 362 3 /* OutSleep Handler */ //Enable IRQ + 363 3 #if UART0_ENABLE + 364 3 ES0 = 1; //UART0 IRQ + 365 3 #endif + 366 3 EX4 = 1; + 367 3 EX2 = 1; + 368 3 ET0 = 1; //timer0 IRQ + 369 3 #if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ + #endif + 372 3 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + 373 3 } + 374 2 else + 375 2 { + 376 3 Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + 377 3 } + 378 2 #endif + 379 2 } + 380 1 } + 381 + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 8 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION LED_Display_App (BEGIN) + ; SOURCE LINE # 75 + ; SOURCE LINE # 76 + ; SOURCE LINE # 164 +0000 E5E6 MOV A,CHIP_STA4 +0002 30E729 JNB ACC.7,?C0001 + ; SOURCE LINE # 165 + ; SOURCE LINE # 166 +0005 300002 E JNB Charger_Done,?C0002 + ; SOURCE LINE # 167 + ; SOURCE LINE # 168 + ; SOURCE LINE # 169 +0008 807A SJMP ?C0033 +000A ?C0002: + ; SOURCE LINE # 171 + ; SOURCE LINE # 172 +000A 300010 E JNB CoverEvent_Flg_led,?C0004 +000D E500 E MOV A,CoverStatus +000F B4010B CJNE A,#01H,?C0004 + ; SOURCE LINE # 173 + ; SOURCE LINE # 174 +0012 200008 R JB led_blink_1time_flag,?C0004 + ; SOURCE LINE # 175 + ; SOURCE LINE # 176 +0015 D200 R SETB led_blink_1time_flag + ; SOURCE LINE # 177 +0017 E4 CLR A +0018 FB MOV R3,A +0019 FD MOV R5,A +001A FF MOV R7,A + ; SOURCE LINE # 178 +001B 801D SJMP ?C0034 + ; SOURCE LINE # 180 + ; SOURCE LINE # 181 +001D ?C0004: + ; SOURCE LINE # 183 +001D 7800 E MOV R0,#LOW Display_Sta +001F E6 MOV A,@R0 +0020 6402 XRL A,#02H +0022 7002 JNZ $ + 4H +0024 0100 R AJMP ?C0006 + ; SOURCE LINE # 184 + ; SOURCE LINE # 185 +0026 7BFF MOV R3,#0FFH +0028 7D64 MOV R5,#064H +002A 7F02 MOV R7,#02H + ; SOURCE LINE # 186 + ; SOURCE LINE # 187 + ; SOURCE LINE # 188 +002C 8077 SJMP ?C0038 +002E ?C0001: + ; SOURCE LINE # 190 + ; SOURCE LINE # 191 +002E 30000F E JNB F_batlevel_low,?C0009 + ; SOURCE LINE # 192 + ; SOURCE LINE # 193 +0031 300074 E JNB CoverEvent_Flg_led,?C0006 + ; SOURCE LINE # 194 + ; SOURCE LINE # 195 + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 9 + +0034 7B04 MOV R3,#04H +0036 7D64 MOV R5,#064H +0038 7F02 MOV R7,#02H +003A ?C0034: +003A 120000 E LCALL _LED_Set + ; SOURCE LINE # 196 +003D C200 E CLR CoverEvent_Flg_led + ; SOURCE LINE # 197 + ; SOURCE LINE # 198 +003F 22 RET +0040 ?C0009: + ; SOURCE LINE # 200 + ; SOURCE LINE # 202 +0040 E500 E MOV A,CoverStatus +0042 6401 XRL A,#01H +0044 704B JNZ ?C0012 +0046 E500 E MOV A,Vox_Pairing_State+024H +0048 7004 JNZ ?C0013 +004A E500 E MOV A,Vox_Pairing_State+025H +004C 6043 JZ ?C0012 +004E ?C0013: + ; SOURCE LINE # 203 + ; SOURCE LINE # 204 +004E E500 E MOV A,Vox_Pairing_State+024H +0050 6401 XRL A,#01H +0052 6005 JZ ?C0015 +0054 E500 E MOV A,Vox_Pairing_State+025H +0056 B40116 CJNE A,#01H,?C0014 +0059 ?C0015: + ; SOURCE LINE # 205 + ; SOURCE LINE # 206 +0059 7800 E MOV R0,#LOW Display_Sta +005B E6 MOV A,@R0 +005C 6402 XRL A,#02H +005E 6009 JZ ?C0016 + ; SOURCE LINE # 207 + ; SOURCE LINE # 208 +0060 7BFF MOV R3,#0FFH +0062 7D32 MOV R5,#032H +0064 7F02 MOV R7,#02H +0066 120000 E LCALL _LED_Set + ; SOURCE LINE # 209 +0069 ?C0016: + ; SOURCE LINE # 210 +0069 E4 CLR A +006A F500 R MOV LED_On_Timer,A + ; SOURCE LINE # 211 +006C D200 E SETB Enter_Sleep_Cnt_Restart_Flag + ; SOURCE LINE # 213 +006E 22 RET +006F ?C0014: + ; SOURCE LINE # 215 +006F E500 E MOV A,Vox_Pairing_State+024H +0071 6402 XRL A,#02H +0073 7033 JNZ ?C0006 +0075 E500 E MOV A,Vox_Pairing_State+025H +0077 6402 XRL A,#02H +0079 702D JNZ ?C0006 + ; SOURCE LINE # 216 + ; SOURCE LINE # 217 +007B E500 R MOV A,LED_On_Timer +007D C3 CLR C + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 10 + +007E 9428 SUBB A,#028H +0080 5009 JNC ?C0019 + ; SOURCE LINE # 218 + ; SOURCE LINE # 219 +0082 0500 R INC LED_On_Timer + ; SOURCE LINE # 220 +0084 ?C0033: +0084 E4 CLR A +0085 FB MOV R3,A +0086 FD MOV R5,A +0087 7F01 MOV R7,#01H +0089 ?C0035: + ; SOURCE LINE # 221 +0089 801A SJMP ?C0038 +008B ?C0019: + ; SOURCE LINE # 223 + ; SOURCE LINE # 224 +008B E4 CLR A +008C FB MOV R3,A +008D FD MOV R5,A +008E FF MOV R7,A +008F ?C0036: + ; SOURCE LINE # 225 + ; SOURCE LINE # 226 + ; SOURCE LINE # 227 +008F 8014 SJMP ?C0038 +0091 ?C0012: + ; SOURCE LINE # 229 + ; SOURCE LINE # 230 +0091 E500 R MOV A,LED_On_Timer +0093 C3 CLR C +0094 9428 SUBB A,#028H +0096 5009 JNC ?C0022 + ; SOURCE LINE # 231 + ; SOURCE LINE # 232 +0098 0500 R INC LED_On_Timer + ; SOURCE LINE # 233 +009A E4 CLR A +009B FB MOV R3,A +009C FD MOV R5,A +009D 7F01 MOV R7,#01H +009F ?C0037: + ; SOURCE LINE # 234 +009F 8004 SJMP ?C0038 +00A1 ?C0022: + ; SOURCE LINE # 236 + ; SOURCE LINE # 237 +00A1 E4 CLR A +00A2 FB MOV R3,A +00A3 FD MOV R5,A +00A4 FF MOV R7,A +00A5 ?C0038: +00A5 120000 E LCALL _LED_Set + ; SOURCE LINE # 238 + ; SOURCE LINE # 239 + ; SOURCE LINE # 240 + ; SOURCE LINE # 241 + ; SOURCE LINE # 242 +00A8 ?C0006: +00A8 22 RET + ; FUNCTION LED_Display_App (END) + + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 11 + + ; FUNCTION UserAPP (BEGIN) + ; SOURCE LINE # 253 + ; SOURCE LINE # 254 + ; SOURCE LINE # 255 +0000 300008 E JNB F_sys_tim_5ms,?C0024 + ; SOURCE LINE # 256 + ; SOURCE LINE # 257 +0003 C200 E CLR F_sys_tim_5ms + ; SOURCE LINE # 261 +0005 120000 E LCALL Hall_Handler + ; SOURCE LINE # 265 +0008 120000 E LCALL DisCharge_Handler + ; SOURCE LINE # 268 +000B ?C0024: + ; SOURCE LINE # 272 +000B 300005 E JNB F_sys_tim_10ms,?C0025 + ; SOURCE LINE # 273 + ; SOURCE LINE # 274 +000E C200 E CLR F_sys_tim_10ms + ; SOURCE LINE # 275 +0010 120000 E LCALL LED_Drv + ; SOURCE LINE # 276 +0013 ?C0025: + ; SOURCE LINE # 280 +0013 30001E E JNB F_sys_tim_100ms,?C0026 + ; SOURCE LINE # 281 + ; SOURCE LINE # 282 +0016 C200 E CLR F_sys_tim_100ms + ; SOURCE LINE # 284 +0018 120000 E LCALL Key_Handler + ; SOURCE LINE # 287 +001B 120000 E LCALL Charger_Handler + ; SOURCE LINE # 291 +001E 120000 E LCALL Vbat_Value +0021 7800 E MOV R0,#LOW Vbat_Adc +0023 A606 MOV @R0,AR6 +0025 08 INC R0 +0026 A607 MOV @R0,AR7 + ; SOURCE LINE # 295 +0028 120000 E LCALL Vox_Det_Machine + ; SOURCE LINE # 299 +002B 120000 R LCALL LED_Display_App + ; SOURCE LINE # 303 +002E 120000 E LCALL check_bat_level + ; SOURCE LINE # 307 +0031 120000 E LCALL HandleVoxCommMsg + ; SOURCE LINE # 309 +0034 ?C0026: + ; SOURCE LINE # 311 +0034 300035 E JNB F_sys_tim_1s,?C0030 + ; SOURCE LINE # 312 + ; SOURCE LINE # 313 +0037 C200 E CLR F_sys_tim_1s + ; SOURCE LINE # 321 +0039 E500 E MOV A,Decnt_SleepDelay +003B D3 SETB C +003C 9400 SUBB A,#00H +003E 4009 JC ?C0028 + ; SOURCE LINE # 322 + ; SOURCE LINE # 323 +0040 1500 E DEC Decnt_SleepDelay + ; SOURCE LINE # 326 + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 12 + +0042 300027 E JNB Enter_Sleep_Cnt_Restart_Flag,?C0030 + ; SOURCE LINE # 327 + ; SOURCE LINE # 328 +0045 C200 E CLR Enter_Sleep_Cnt_Restart_Flag + ; SOURCE LINE # 329 + ; SOURCE LINE # 330 +0047 8020 SJMP ?C0040 + ; SOURCE LINE # 333 +0049 ?C0028: + ; SOURCE LINE # 335 +0049 120000 E LCALL Check_Require_Sleep +004C 501B JNC ?C0031 + ; SOURCE LINE # 336 + ; SOURCE LINE # 348 +004E C2AC CLR ES0 + ; SOURCE LINE # 350 +0050 C2BB CLR EX4 + ; SOURCE LINE # 351 +0052 C2B9 CLR EX2 + ; SOURCE LINE # 352 +0054 C2A9 CLR ET0 + ; SOURCE LINE # 357 +0056 75FE29 MOV SFRADDR,#029H + ; SOURCE LINE # 358 +0059 53FF7F ANL SFRDATA,#07FH + ; SOURCE LINE # 360 +005C 438702 ORL PCON,#02H + ; SOURCE LINE # 364 +005F D2AC SETB ES0 + ; SOURCE LINE # 366 +0061 D2BB SETB EX4 + ; SOURCE LINE # 367 +0063 D2B9 SETB EX2 + ; SOURCE LINE # 368 +0065 D2A9 SETB ET0 + ; SOURCE LINE # 372 +0067 ?C0039: + ; SOURCE LINE # 373 +0067 8000 SJMP ?C0040 +0069 ?C0031: + ; SOURCE LINE # 375 + ; SOURCE LINE # 376 +0069 ?C0040: +0069 75000A E MOV Decnt_SleepDelay,#0AH + ; SOURCE LINE # 377 + ; SOURCE LINE # 379 + ; SOURCE LINE # 380 +006C ?C0030: +006C 22 RET + ; FUNCTION UserAPP (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 278 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 1 ---- + IDATA SIZE = ---- ---- + BIT SIZE = 1 ---- +END OF MODULE INFORMATION. + + C51 COMPILER V9.57.0.0 USERAPP 06/14/2024 11:10:29 PAGE 13 + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/vox_module.lst b/Project/Listings/vox_module.lst new file mode 100644 index 0000000..3584c91 --- /dev/null +++ b/Project/Listings/vox_module.lst @@ -0,0 +1,2632 @@ +C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE VOX_MODULE +OBJECT MODULE PLACED IN .\Objects\vox_module.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\vox\vox_module.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(. + -.\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\Usr + -Inc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\U + -srInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\ + -vox_module.lst) TABS(2) OBJECT(.\Objects\vox_module.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file VOX_Module.c + 5 * @brief VOL/R module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/07/18 09:59:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/07/18 Alex build this file + 18 ****************************************************************************** + 19 */ + 20 #include "vox_module.h" + 21 #include "led.h" + 22 #include "system.h" + 23 #include "discharge_module.h" + 24 #include "sleep.h" + 25 #include "bat.h" + 26 #include "hall.h" + 27 #include "key.h" + 28 #include "sys_tim.h" + 29 #include "sys_tim.h" + 30 #include "adc.h" + 31 + 32 bit Vox_Vout_Enable = OFF; //Vox־λ + 33 + 34 #if VOX_ENABLE + 35 + 36 /******************************************************************************\ + 37 Macro definitions + 38 \******************************************************************************/ + 39 + 40 #define EARPHONR_WKUP_CNT 2 + 41 #define BES_RST_PULS_CNT 20 + 42 #define Vox_TX_Interval 2 //Voxʱָʱ + 43 #define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + 44 + 45 #define BES_ADDR_EXCHG_TIMOUT 30 //ظ5s󣬶ַû3sطһΡֱ10κʱ + 46 #define BES_ADDR_EXCHG_CNT 5 + 47 + 48 /******************************************************************************\ + 49 Variables definitions + 50 \******************************************************************************/ + 51 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 2 + + 52 bit BES_Rst_Puls_Flag = 0; + 53 bit BES_Addr_Exchg_Flag = 0; + 54 + 55 bit Cover_Close_Flag = 0; + 56 bit Cover_Open_Flag = 0; + 57 bit EarPhone_ShutDown_Flag = 0; //ػ־λ + 58 + 59 bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + 60 + 61 uint8_t Vox_Output_Short_Debounce = 0; + 62 uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + 63 + 64 uint8_t Box_To_Bes_Comm_Debounce = 0; + 65 uint8_t Box_To_Bes_Comm_Cnt = 0; + 66 + 67 bit Boost_Vout_Change_Flag = 0; + 68 + 69 #ifdef VOX_RX + 70 + 71 uint8_t Vox_Pairing_State[2] = {0}; //״̬0Ч1ԣ2Գɹ3ֵǰ + -̬ + 72 idata uint8_t Vox_Get_BES_Addr_Flag[2] = {0}; + 73 idata uint8_t BES_Addr[6] = {0}; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + 74 + 75 #if defined(XIAOMI) + 76 + 77 idata uint8_t Random_Data[8] = {0}; + 78 + 79 idata uint8_t Bes_Bet_Level[2] = {0}; //ԶصϢBes_Bet_Level[0]Bes_Bet_Level[1]Ҷ + - + 80 idata uint8_t Bes_Chg_Full[2] = {0}; //ԶӲǷ磺0磻1硣 + 81 idata uint8_t Tws_Paired_Record[2] = {0}; //TWSԼ¼0TWSԼ¼1ûTWSԼ¼ + 82 idata uint8_t Phone_Paired_Record[2] = {0}; //ֻԼ¼0ֻԼ¼1ûкֻԼ¼ + 83 idata uint8_t Bes_OTA_State[2] = {0}; //Ĭ״̬1У0û + 84 idata uint8_t Bes_Set_SN_State[2] = {0}; //ӦдSNǷɹ1ɹ0ʧ + 85 + 86 idata uint8_t SN_Num[22] = {0}; //SN룬ҪOTPĹ̶λûȡ + 87 uint8_t SN_Num_Start = 0; //SN뷢ʼλãпǶʱ㡣 + 88 bit gShip_Mode_Flag = 0; //ģʽ־λ0ػ1ģʽ + 89 + 90 #define COVER_OPEN_CNT 600 //1 + 91 + 92 uint16_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + 93 #define VOX_TX_CNT 50 //VOXָʱ5s + 94 + 95 bit SN_Num_Exchg_Flag = 0; //SN־λ + 96 + 97 #elif defined(QIANCHENG) + + uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + + #define VOX_TX_CNT 30 //VOXָʱ3s + + #endif + 104 + 105 + 106 #endif + 107 + 108 + 109 /******************************************************************************\ + 110 Functions definitions + 111 \******************************************************************************/ + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 3 + + 112 + 113 /* + 114 ******************************************************************************* + 115 * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + 116 * + 117 * Description : VOL Open(EN_VO) + 118 + 119 * Arguments : + 120 + 121 * Returns : + 122 + 123 * Notes : + 124 * + 125 ******************************************************************************* + 126 */ + 127 void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + 128 { + 129 1 COM_CTRL = ON; + 130 1 + 131 1 #if 1 + 132 1 if( VOX_Enable_Mode == VOX_VOUT_Mode) + 133 1 { + 134 2 VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + 135 2 + 136 2 VOX_CTL0 |= 0x30; //VOX Enable 5V + 137 2 } + 138 1 else + 139 1 { + 140 2 VOX_CTL0 &= ~0x30; //VOX 5v Off + 141 2 } + 142 1 + 143 1 #else + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + // VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } + #endif + 165 1 } + 166 + 167 /* + 168 ******************************************************************************* + 169 * void Vox_Det_Machine(void) + 170 * + 171 * Description : Vox Detect:ʶ (100ms) + 172 * + 173 * Arguments : NONE + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 4 + + 174 + 175 * Returns : NONE + 176 + 177 * Notes : NONE + 178 * + 179 ******************************************************************************* + 180 */ + 181 /* + 182 1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ + 183 2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s + -250-300ms + 184 3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ + 185 4ֻضֵ͵磬͹ػָ + 186 */ + 187 void Vox_Det_Machine(void) + 188 { + 189 1 /*Vox ֻÿ200msһ(28Bytes)*/ + 190 1 if( IRQ_FLAG0 & 0x0C ) + 191 1 { + 192 2 Vox_Output_Short_Debounce++; + 193 2 if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + 194 2 { + 195 3 Vox_Output_Short_Debounce = 0; + 196 3 IRQ_FLAG0 = 0x0C; + 197 3 VOX_EN_Type(VOX_VOUT_Mode); + 198 3 return; + 199 3 } + 200 2 } + 201 1 + 202 1 if( CoverEvent_Flg ) //Hall¼ + 203 1 { + 204 2 #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2 + -loadonжڲ֣Vox 5V + #else + 207 2 if( gBoost_Prepared_Flag ) + 208 2 #endif + 209 2 { + 210 3 if( !Boost_Open_Flag ) + 211 3 { + 212 4 BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + - + 213 4 Boost_Open_Flag = 1; + 214 4 return; + 215 4 } + 216 3 + 217 3 Vox_Pairing_State[VOL_CHAN] = 0; + 218 3 Vox_Pairing_State[VOR_CHAN] = 0; + 219 3 BES_Rst_Puls_Flag = 0; + 220 3 EarPhone_ShutDown_Flag = 0; + 221 3 Boost_Open_Atleast_Tim_Cnt = 0; + 222 3 + 223 3 if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿ + -ڲ֣ظǷָ300ms10s֮رCOM_CTRL + 224 3 { + 225 4 Cover_Close_Flag = 1; + 226 4 Cover_Open_Flag = 0; + 227 4 CoverEvent_Flg = 0; + 228 4 Vox_Vout_Enable = ON; + 229 4 Boost_Open_Flag = 0; + 230 4 COM_CTRL = OFF; + 231 4 //VOX_EN_Type(VOX_VOUT_Mode); + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 5 + + 232 4 VOX_CTL0 |= 0x30; //VOX Enable 5VVOX˵NMOS + 233 4 } + 234 3 else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + 235 3 { + 236 4 Cover_Close_Flag = 0; + 237 4 BES_Addr_Exchg_Flag = 0; + 238 4 + 239 4 /*VOUT 500msڻѶ*/ + 240 4 if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + 241 4 { + 242 5 VOX_EN_Type(VOX_VOUT_Mode); + 243 5 Vox_TX_Timer++; + 244 5 } + 245 4 else + 246 4 { + 247 5 BST_EN = 0; //Boost Disable + 248 5 Cover_Open_Flag = 1; + 249 5 CoverEvent_Flg = 0; + 250 5 Boost_Open_Flag = 0; + 251 5 Vox_TX_Timer = 0; + 252 5 } + 253 4 } + 254 3 } + 255 2 else + 256 2 { + 257 3 VOX_EN_Type(VOX_ADT_Mode); + 258 3 } + 259 2 } + 260 1 + 261 1 /* Ϳָ*/ + 262 1 if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + 263 1 { + 264 2 #ifdef XIAOMI + 265 2 if( Vox_TX_Timer < COVER_OPEN_CNT ) + 266 2 #endif + 267 2 { + 268 3 if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + 269 3 { + 270 4 #ifdef VOX_TX + 271 4 + 272 4 #if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ + + #elif defined(XIAOMI) //С + 277 4 + 278 4 HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); + 279 4 #endif + 280 4 + 281 4 #endif + 282 4 } + 283 3 else + 284 3 { + 285 4 #ifdef VOX_TX + 286 4 + 287 4 #if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //ָֶͨ + + #elif defined(XIAOMI) //С + 292 4 + 293 4 HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 6 + + 294 4 #endif + 295 4 + 296 4 #endif + 297 4 } + 298 3 + 299 3 Vox_TX_Timer++; + 300 3 } + 301 2 #ifdef XIAOMI + 302 2 else + 303 2 { + 304 3 VOX_EN_Type(VOX_VOUT_Mode); + 305 3 } + 306 2 #endif + 307 2 } + 308 1 + 309 1 /* Ϳظָ*/ + 310 1 if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + 311 1 { + 312 2 /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + 313 2 if( Vox_TX_Timer < VOX_TX_CNT ) + 314 2 { + 315 3 if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + 316 3 { + 317 4 if( EarPhone_ShutDown_Flag ) + 318 4 { + 319 5 #ifdef VOX_TX + 320 5 HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); /*سִڵ͵磬ػָ*/ + 321 5 #endif + 322 5 } + 323 4 else + 324 4 if( CoverStatus == CLOSE ) + 325 4 { + 326 5 #ifdef VOX_TX + 327 5 + 328 5 #if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //ظָֶͨ + + #elif defined(XIAOMI) //С + 333 5 + 334 5 HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); + 335 5 #endif + 336 5 + 337 5 #endif + 338 5 } + 339 4 } + 340 3 else + 341 3 { + 342 4 if( EarPhone_ShutDown_Flag ) + 343 4 { + 344 5 #ifdef VOX_TX + 345 5 HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); /*سִڵ͵磬ػָ*/ + 346 5 #endif + 347 5 } + 348 4 else + 349 4 if( CoverStatus == CLOSE ) + 350 4 { + 351 5 #ifdef VOX_TX + 352 5 + 353 5 #if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //ָֶͨ + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 7 + + + #elif defined(XIAOMI) //С + 358 5 + 359 5 HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); + 360 5 #endif + 361 5 + 362 5 #endif + 363 5 } + 364 4 } + 365 3 + 366 3 Vox_TX_Timer++; + 367 3 } + 368 2 else //5s־λ + 369 2 { + 370 3 if( EarPhone_ShutDown_Flag ) + 371 3 { + 372 4 EarPhone_ShutDown_Flag = 0; + 373 4 Cover_Close_Flag = 0; + 374 4 Vox_Vout_Enable = OFF; + 375 4 BST_EN = 0; //Boost Disable + 376 4 VOX_EN_Type(VOX_ADT_Mode); + 377 4 } + 378 3 else + 379 3 if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + 380 3 { + 381 4 if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1 + -2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + 382 4 { + 383 5 if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ + -򣬸شﮱ״̬г硣 + 384 5 { + 385 6 EarPhone_ShutDown_Flag = 1; + 386 6 Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + 387 6 } + 388 5 } + 389 4 + 390 4 #if defined(XIAOMI) + 391 4 + 392 4 if( !SN_Num_Exchg_Flag ) + 393 4 { + 394 5 if( Vox_TX_Timer < 2 * VOX_TX_CNT ) + 395 5 { + 396 6 if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + 397 6 { + 398 7 HandleTxCommand(CMD_SN,VOL_CHAN); + 399 7 } + 400 6 else + 401 6 { + 402 7 HandleTxCommand(CMD_SN,VOR_CHAN); + 403 7 } + 404 6 + 405 6 Vox_TX_Timer++; + 406 6 } + 407 5 else + 408 5 { + 409 6 SN_Num_Exchg_Flag = 1; + 410 6 BES_Addr_Exchg_Flag = 1; + 411 6 + 412 6 Vox_TX_Timer = 0; + 413 6 } + 414 5 } + 415 4 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 8 + + 416 4 if( BES_Addr_Exchg_Flag ) + 417 4 { + 418 5 if( Box_To_Bes_Comm_Debounce < 1 ) + 419 5 { + 420 6 #ifdef VOX_TX + 421 6 HandleTxCommand(CMD_TWS_BTADDR_EXCH,VOL_CHAN); + 422 6 #endif + 423 6 Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + 424 6 Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + 425 6 } + 426 5 else + 427 5 { + 428 6 if(Box_To_Bes_Comm_Cnt > BES_ADDR_EXCHG_CNT) //ַûʱ20sرַûVOX 5 + -V + 429 6 { + 430 7 BES_Addr_Exchg_Flag = 0; + 431 7 Boost_Vout_Change_Flag = 1; + 432 7 Box_To_Bes_Comm_Debounce = 0; + 433 7 BES_Rst_Puls_Flag = 1; + 434 7 VOX_EN_Type(VOX_VOUT_Mode); + 435 7 + 436 7 return; + 437 7 } + 438 6 else + 439 6 { + 440 7 if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + 441 7 { + 442 8 if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + 443 8 { + 444 9 BES_Addr_Exchg_Flag = 0; + 445 9 Boost_Vout_Change_Flag = 1; + 446 9 Box_To_Bes_Comm_Debounce = 0; + 447 9 BES_Rst_Puls_Flag = 1; + 448 9 VOX_EN_Type(VOX_VOUT_Mode); + 449 9 + 450 9 return; + 451 9 } + 452 8 else + 453 8 { + 454 9 #ifdef VOX_TX + 455 9 HandleTxCommand(CMD_TWS_BTADDR_EXCH,VOR_CHAN); /*ҶָȡҶַ*/ + 456 9 #endif + 457 9 Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + 458 9 } + 459 8 } + 460 7 else + 461 7 if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + 462 7 { + 463 8 #ifdef VOX_TX + 464 8 HandleTxCommand(CMD_TWS_BTADDR_EXCH,VOL_CHAN); + 465 8 #endif + 466 8 } + 467 7 } + 468 6 } + 469 5 + 470 5 if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_TIMOUT) //3sطһΡط5κʱ + 471 5 { + 472 6 Box_To_Bes_Comm_Cnt++; + 473 6 Box_To_Bes_Comm_Debounce = 0; + 474 6 } + 475 5 else + 476 5 { + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 9 + + 477 6 Box_To_Bes_Comm_Debounce++; + 478 6 } + 479 5 } + 480 4 + 481 4 if( BES_Rst_Puls_Flag ) + 482 4 { + 483 5 Vox_TX_Timer++; + 484 5 if( Vox_TX_Timer > BES_RST_PULS_CNT ) //BES λ pattern + 485 5 { + 486 6 BES_Rst_Puls_Flag = 0; //긴λPattern󣬿ʼַû + 487 6 + 488 6 Box_To_Bes_Comm_Debounce = 0; + 489 6 Box_To_Bes_Comm_Cnt = 0; + 490 6 COM_CTRL = ON; + 491 6 #ifdef VOX_TX + 492 6 HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms + 493 6 #endif + 494 6 return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPat + -ternҪ115ms + 495 6 ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + 496 6 } + 497 5 } + 498 4 + 499 4 #elif defined(QIANCHENG) + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + + BES_Addr_Exchg_Flag = 1; + + Box_To_Bes_Comm_Debounce = 0; + Box_To_Bes_Comm_Cnt = 0; + COM_CTRL = ON; + #ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms + #endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPat + -ternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + // if( BES_Addr_Exchg_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷 + -ظָ*/ + if( BES_Addr_Exchg_Flag ) + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { + #ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ + #endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + } + else + { + if(Box_To_Bes_Comm_Cnt > BES_ADDR_EXCHG_CNT) //ַûʱ20sرַûVO + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 10 + + -X 5V + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { + #ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ + #endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { + #ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); + #endif + } + } + } + + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_TIMOUT) //3sطһΡط5κʱ + { + Box_To_Bes_Comm_Cnt++; + Box_To_Bes_Comm_Debounce = 0; + } + else + { + Box_To_Bes_Comm_Debounce++; + } + } + + #endif + 591 4 /* ظǣָBoost Vout5.15Vʱ1s*/ + 592 4 if( Boost_Vout_Change_Flag ) + 593 4 { + 594 5 if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + 595 5 { + 596 6 SFRADDR = BST_CTL0; //5.15V + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 11 + + 597 6 SFRDATA |= 0x03; + 598 6 Box_To_Bes_Comm_Debounce++; + 599 6 } + 600 5 else + 601 5 { + 602 6 Boost_Vout_Change_Flag = 0; + 603 6 Box_To_Bes_Comm_Debounce = 0; + 604 6 SFRADDR = BST_CTL0; //5.05V + 605 6 SFRDATA &= ~0x03; + 606 6 SFRDATA |= 0x01; + 607 6 } + 608 5 } + 609 4 } + 610 3 } + 611 2 } + 612 1 } + 613 #if defined(ZHONGKELANXUN) + + uint8_t Crc8Maxim(u8 *buf, u8 length) + { + u8 i; + u8 crc = 0; + while(length--) + { + crc ^= *buf++; + for(i=0;i<8;i++) + { + if( crc&1 ) + { + crc = (crc >> 1)^0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; + } + + #elif defined(XIAOMI) + 638 + 639 /******************************************************************************\ + 640 Functions definitions + 641 \******************************************************************************/ + 642 + 643 /* + 644 ******************************************************************************* + 645 * u16 CalCheckCrc16(u8 * pucFrame, u16 usLen) + 646 * + 647 * Description : У͵ļ + 648 * + 649 * + 650 * Arguments : u8 *pucFrame: ݴŵַ + 651 u16 usLen: ݳ, byteΪλ + 652 + 653 * Returns : + 654 * + 655 * Notes : + 656 * + 657 ******************************************************************************* + 658 */ + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 12 + + 659 + 660 uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen) + 661 { + 662 1 uint16_t wCRCin = 0x0000; + 663 1 uint16_t wCPoly = 0x1021; + 664 1 uint8_t wChar = 0; + 665 1 unsigned int i; + 666 1 + 667 1 while (usLen--) + 668 1 { + 669 2 + 670 2 wChar = *(pucFrame++); + 671 2 + 672 2 wCRCin ^= (wChar << 8); + 673 2 + 674 2 for(i = 0;i < 8;i++) + 675 2 { + 676 3 if(wCRCin & 0x8000) + 677 3 { + 678 4 wCRCin = (wCRCin << 1) ^ wCPoly; + 679 4 } + 680 3 else + 681 3 { + 682 4 wCRCin = wCRCin << 1; + 683 4 } + 684 3 } + 685 2 } + 686 1 + 687 1 return (wCRCin); + 688 1 } + 689 #endif + 690 + 691 #ifdef VOX_TX + 692 /* + 693 ******************************************************************************* + 694 * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + 695 * + 696 * Description : ݰķװӦ˫ͨͨ + 697 * Command payload + 698 * Header checksum side cmd len Data + 699 * 1bytes 1byte 1byte 1byte 1byte Len bytes + 700 + 701 * + 702 * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + 703 + 704 * Returns : + 705 * + 706 * Notes : + 707 * + 708 ******************************************************************************* + 709 */ + 710 + 711 void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) + 712 { + 713 1 #if defined(QIANCHENG) //ة + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 13 + + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[i]; //Ͷַ + } + + break; + + case BES_RESET: //BES λpatten + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function + SFRDATA &= ~0x0C; + + for(i=0;i<6;i++) + { + BES_Addr[i] = 0; //屾ضַ + } + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 14 + + #if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼ + -һֽûüȥ + #endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RX + -ݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + + #elif defined(ZHONGKELANXUN) //пѶ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ʶ*/ + tx_pData[2] = BOXIDCODE; + /*ͨ*/ + tx_pData[5] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case VHOUSE_CMD_GET_VBAT: + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[6] = (CHIP_STA4 & 0x80) | bat_level; //bit 0~6 ʾֵֵ 0~100bit 7 Ϊ 1 ʾ + -ֳ磬Ϊ 0 ʾûиֳ磻 + tx_pData[7] = 0x03; //ear_vbat:Զִȡõ bit7 1 + -͸Ҷ + //ûлȡ֪ԶڲڶҪ bit7 1 + break; + + case VHOUSE_CMD_PAIR: //ְ3sַָ + /*Data Length*/ + tx_pData[4] = 0x01; + break; + + case VHOUSE_CMD_GET_TWS_BTADDR: + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 15 + + default: + break; + } + + #elif defined(XIAOMI) //С + 846 1 /* + 847 1 + 848 1 */ + 849 1 + 850 1 uint8_t tx_pData[11] = 0; + 851 1 uint8_t i = 0; + 852 1 uint16_t Checksum = 0; + 853 1 uint16_t DataLen = 0; + 854 1 /*ݰͷ*/ + 855 1 tx_pData[0] = BOXHEADER; + 856 1 /*ͨ*/ + 857 1 + 858 1 tx_pData[1] = nVox_Chn_Select; /*䷽Bit0-3նˣBit4-7Ͷ + 859 1 1˫ + 860 1 2 + 861 1 3PC/װ + 862 1 4 + 863 1 5Ҷ + 864 1 */ + 865 1 /*ָ*/ + 866 1 tx_pData[2] = TxCommand; + 867 1 tx_pData[3] = TxCommand >> 8; /*Сģʽֽǰ + 868 1 Bit0-7 + 869 1 Bit8-14Ԥ + 870 1 Bit15: + 871 1 0:REQ + 872 1 1:ACK + 873 1 */ + 874 1 tx_pData[4] = CoverStatus; //غ״̬ + 875 1 + 876 1 switch(TxCommand) + 877 1 { + 878 2 case CMD_TWS_PAIR: //ȡMACַ + 879 2 /*Data Length*/ + 880 2 tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + 881 2 tx_pData[6] = 0x00; + 882 2 + 883 2 break; + 884 2 + 885 2 case CMD_TWS_BTADDR_EXCH: + 886 2 /*Data Length*/ + 887 2 tx_pData[5] = 0x0E; //Сģʽλǰ2Bytes + 888 2 tx_pData[6] = 0x00; + 889 2 + 890 2 for(i=0;i<6;i++) + 891 2 { + 892 3 tx_pData[7+i] = BES_Addr[i]; //Ͷַ + 893 3 } + 894 2 + 895 2 for(i=0;i<8;i++) + 896 2 { + 897 3 tx_pData[13+i] = Random_Data[i]; // + 898 3 } + 899 2 + 900 2 break; + 901 2 + 902 2 case CMD_SHUT_DOWN: + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 16 + + 903 2 /*Data Length*/ + 904 2 tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + 905 2 tx_pData[6] = 0x00; + 906 2 + 907 2 tx_pData[7] = gShip_Mode_Flag; //ģʽ0ػ1ģʽ + 908 2 + 909 2 break; + 910 2 + 911 2 case CMD_PAIRING_IMD: //ִTWS + 912 2 /*Data Length*/ + 913 2 tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + 914 2 tx_pData[6] = 0x00; + 915 2 + 916 2 break; + 917 2 + 918 2 case CMD_CLEAR_PAIR: + 919 2 /*Data Length*/ + 920 2 tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + 921 2 tx_pData[6] = 0x00; + 922 2 break; + 923 2 + 924 2 case CMD_HEARTBEAT: + 925 2 /*Data Length*/ + 926 2 tx_pData[5] = 0x05; //Сģʽλǰ2Bytes + 927 2 tx_pData[6] = 0x00; + 928 2 /* + 929 2 data壺 + 930 2 1D0D12Bytesɳеİ汾ϢD0ĸ4bitΪӲPCBA汾ţD04bitD1ɳ + -汾š + 931 2 2D21Byteɳеͳ״̬D2bit7ΪǷPG룻D2ĵ7λʾеϢΧ0-100 + -; + 932 2 3D31ByteɶԶϢЭеSideϢҶϢ + 933 2 4D41ByteĬĬϷ0x00 + 934 2 */ + 935 2 tx_pData[7] = HW_VER << 4; + 936 2 tx_pData[7] = FW_VER >> 8; + 937 2 tx_pData[8] = FW_VER; + 938 2 + 939 2 tx_pData[9] = (CHIP_STA4 & 0x80) | bat_level; + 940 2 + 941 2 if(nVox_Chn_Select == VOL_CHAN) + 942 2 { + 943 3 tx_pData[10] = Bes_Bet_Level[0]; + 944 3 } + 945 2 else + 946 2 if(nVox_Chn_Select == VOR_CHAN) + 947 2 { + 948 3 tx_pData[10] = Bes_Bet_Level[1]; + 949 3 } + 950 2 + 951 2 tx_pData[11] = 0x00; + 952 2 break; + 953 2 + 954 2 case CMD_SN: //SNϳֶηͣD0ʾڼλʼͣһι̶9Bytes + -SNݲ9BytesIJ00xff + 955 2 /*Data Length*/ + 956 2 tx_pData[5] = 0x0A; //Сģʽλǰ2Bytes + 957 2 tx_pData[6] = 0x00; + 958 2 + 959 2 tx_pData[7] = SN_Num_Start; + 960 2 + 961 2 for(i=0;i<9;i++) + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 17 + + 962 2 { + 963 3 if( (SN_Num_Start + i) > 22 ) + 964 3 { + 965 4 tx_pData[8+i] = 0xFF; + 966 4 } + 967 3 else + 968 3 { + 969 4 tx_pData[8+i] = SN_Num[ SN_Num_Start + i ]; // + 970 4 } + 971 3 } + 972 2 + 973 2 SN_Num_Start += 9; + 974 2 + 975 2 break; + 976 2 + 977 2 case CMD_GET_INTO_PAIR: + 978 2 /*Data Length*/ + 979 2 tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + 980 2 tx_pData[6] = 0x00; + 981 2 + 982 2 tx_pData[7] = 0x01; //01״̬ + 983 2 break; + 984 2 + 985 2 case BES_RESET: //BES λpatten + 986 2 + 987 2 BES_Puls_Start = 1; + 988 2 + 989 2 return; + 990 2 + 991 2 default: + 992 2 break; + 993 2 } + 994 1 + 995 1 DataLen = tx_pData[5] | (tx_pData[6] << 8) + 7; + 996 1 Checksum = CalCheckCrc16( tx_pData, DataLen ); // + 997 1 tx_pData[1 + DataLen] = Checksum; + 998 1 tx_pData[2 + DataLen] = Checksum >> 8; + 999 1 +1000 1 COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +1001 1 +1002 1 SFRADDR = MFP_CTL0; +1003 1 SFRDATA |= 0x04; //P01 as UART's TX +1004 1 +1005 1 #if UART0_ENABLE +1006 1 Uart0SendPacket(10 + DataLen, tx_pData); +1007 1 #endif +1008 1 +1009 1 SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RX + -յݣTXΪGPIOģʽջģʽ +1010 1 SFRDATA &= ~0x0C; +1011 1 +1012 1 #endif +1013 1 +1014 1 } +1015 +1016 #endif +1017 +1018 #ifdef VOX_RX +1019 /* +1020 ******************************************************************************* +1021 * void HandleRxCommand(VOX_BES_COMMAND_E RxCommand) +1022 * + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 18 + +1023 * Description : ˷͵ݰĽ +1024 * Ack payload: +1025 * Header checksum side cmd len Data +1026 * 1bytes 1byte 1byte 1byte 1byte Len bytes +1027 * +1028 * Arguments : VOX_BES_COMMAND_E RxCommand: +1029 +1030 * Returns : +1031 * +1032 * Notes : +1033 * +1034 ******************************************************************************* +1035 */ +1036 void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +1037 { +1038 1 uint8_t i = 0; +1039 1 +1040 1 #if defined(QIANCHENG) //ة + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡַ״̬ + } + else + { + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶַ״̬ + } + + for(i=0;i<6;i++) + { + BES_Addr[i] = RX0_Buffer[i+5]; //ȡַ + } + + break; + + default: + break; + } + + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 19 + + #elif defined(XIAOMI) //С +1086 1 +1087 1 uint8_t CMD_Type = 0; +1088 1 +1089 1 CMD_Type = RX0_Buffer[1] >> 4; +1090 1 if( CMD_Type & TWS_PC ) //PC/װ-> +1091 1 { +1092 2 +1093 2 } +1094 1 else //-> +1095 1 { +1096 2 switch(RxCommand) +1097 2 { +1098 3 case CMD_TWS_PAIR: +1099 3 +1100 3 for(i=0;i> 7; //ȡǷ +1132 4 Vox_Pairing_State[0] = RX0_Buffer[10]; //ȡ״̬ +1133 4 Tws_Paired_Record[0] = RX0_Buffer[11] & 0x01; //bit0:0TWSԼ¼1ûTWSԼ¼bit1:0 + -ֻԼ¼1ûкֻԼ¼ +1134 4 Phone_Paired_Record[0] = (RX0_Buffer[11] >> 1) & 0x01; +1135 4 Bes_OTA_State[0] = RX0_Buffer[12]; +1136 4 } +1137 3 else +1138 3 { +1139 4 Bes_Bet_Level[1] = RX0_Buffer[9]&0x7F; +1140 4 Bes_Chg_Full[1] = RX0_Buffer[9] >> 7; +1141 4 Vox_Pairing_State[1] = RX0_Buffer[10]; +1142 4 Tws_Paired_Record[1] = RX0_Buffer[11] & 0x01; +1143 4 Phone_Paired_Record[1] = (RX0_Buffer[11] >> 1) & 0x01; +1144 4 Bes_OTA_State[1] = RX0_Buffer[12]; +1145 4 } + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 20 + +1146 3 +1147 3 break; +1148 3 +1149 3 case CMD_SN: +1150 3 +1151 3 if( CMD_Type == TWS_VOL ) //ݶSide +1152 3 { +1153 4 Bes_Set_SN_State[0] = RX0_Buffer[7]; //SNдǷɹ״̬־ +1154 4 } +1155 3 else +1156 3 { +1157 4 Bes_Set_SN_State[1] = RX0_Buffer[7]; //ҶSNдǷɹ״̬־ +1158 4 } +1159 3 +1160 3 break; +1161 3 +1162 3 case CMD_GET_INTO_PAIR: +1163 3 +1164 3 break; +1165 3 case CMD_PAIRING_IMD: +1166 3 +1167 3 break; +1168 3 default: +1169 3 break; +1170 3 } +1171 2 } +1172 1 +1173 1 +1174 1 #endif +1175 1 +1176 1 } +1177 +1178 /* +1179 ******************************************************************************* +1180 * void HandleVoxCommMsg(void) +1181 * +1182 * Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿͨ + -ֻһֻͨлVOL/VORͨſؽͨ +1183 * +1184 * Arguments : NONE +1185 +1186 * Returns : NONE +1187 +1188 * Notes : NONE +1189 * +1190 ******************************************************************************* +1191 */ +1192 +1193 void HandleVoxCommMsg(void) +1194 { +1195 1 +1196 1 #if defined(QIANCHENG) //ة + + uint8_t CrcCheckSum = 0; + + #elif defined(ZHONGKELANXUN) //пѶ + + uint8_t CrcCheckSum = 0; + + #elif defined(XIAOMI) +1205 1 +1206 1 uint16_t CrcCheckSum = 0; + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 21 + +1207 1 uint16_t Data_Len = 0; +1208 1 +1209 1 #endif +1210 1 +1211 1 uint8_t i = 0; +1212 1 +1213 1 /*RXݴ*/ +1214 1 if( Uart0_RX_Finish_Flag ) +1215 1 { +1216 2 Uart0_RX_Finish_Flag = 0; +1217 2 +1218 2 #if defined(QIANCHENG) //ة + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + + #elif defined(XIAOMI) //С +1235 2 Data_Len = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 7; +1236 2 +1237 2 CrcCheckSum = CalCheckCrc16( RX0_Buffer, Data_Len); // +1238 2 +1239 2 if( CrcCheckSum == (uint16_t)(RX0_Buffer[Data_Len+1] | RX0_Buffer[Data_Len+2] << 8) ) //УСģʽ + -λǰ +1240 2 { +1241 3 HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[2]); +1242 3 } +1243 2 else +1244 2 { +1245 3 return; +1246 3 } +1247 2 +1248 2 #endif +1249 2 +1250 2 } +1251 1 +1252 1 } +1253 +1254 #endif +1255 +1256 #endif +1257 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 22 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + ; FUNCTION Com008B (BEGIN) +0000 L?0140: +0000 FF MOV R7,A +0001 547F ANL A,#07FH +0003 F6 MOV @R0,A +0004 EF MOV A,R7 +0005 C4 SWAP A +0006 13 RRC A +0007 13 RRC A +0008 13 RRC A +0009 5401 ANL A,#01H +000B 22 RET +000C L?0141: +000C C200 R CLR BES_Addr_Exchg_Flag +000E D200 R SETB Boost_Vout_Change_Flag +0010 E4 CLR A +0011 F500 R MOV Box_To_Bes_Comm_Debounce,A +0013 D200 R SETB BES_Rst_Puls_Flag +0015 22 RET +0016 L?0142: +0016 FF MOV R7,A +0017 5401 ANL A,#01H +0019 F6 MOV @R0,A +001A EF MOV A,R7 +001B C3 CLR C +001C 13 RRC A +001D 5401 ANL A,#01H +001F 22 RET + ; FUNCTION Com008B (END) + + ; FUNCTION _VOX_EN_Type (BEGIN) + ; SOURCE LINE # 127 +;---- Variable 'VOX_Enable_Mode' assigned to Register 'R7' ---- + ; SOURCE LINE # 128 + ; SOURCE LINE # 129 +0000 D282 SETB COM_CTRL + ; SOURCE LINE # 132 +0002 EF MOV A,R7 +0003 7007 JNZ ?C0001 + ; SOURCE LINE # 133 + ; SOURCE LINE # 134 +0005 53B7CF ANL VOX_CTL0,#0CFH + ; SOURCE LINE # 136 +0008 43B730 ORL VOX_CTL0,#030H + ; SOURCE LINE # 137 +000B 22 RET +000C ?C0001: + ; SOURCE LINE # 139 + ; SOURCE LINE # 140 +000C 53B7CF ANL VOX_CTL0,#0CFH + ; SOURCE LINE # 141 + ; SOURCE LINE # 165 +000F ?C0003: +000F 22 RET + ; FUNCTION _VOX_EN_Type (END) + + ; FUNCTION Vox_Det_Machine (BEGIN) + ; SOURCE LINE # 187 + ; SOURCE LINE # 188 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 23 + + ; SOURCE LINE # 190 +0000 E5E8 MOV A,IRQ_FLAG0 +0002 540C ANL A,#0CH +0004 6011 JZ ?C0004 + ; SOURCE LINE # 191 + ; SOURCE LINE # 192 +0006 0500 R INC Vox_Output_Short_Debounce + ; SOURCE LINE # 193 +0008 E500 R MOV A,Vox_Output_Short_Debounce +000A C3 CLR C +000B 9402 SUBB A,#02H +000D 4008 JC ?C0004 + ; SOURCE LINE # 194 + ; SOURCE LINE # 195 +000F E4 CLR A +0010 F500 R MOV Vox_Output_Short_Debounce,A + ; SOURCE LINE # 196 +0012 75E80C MOV IRQ_FLAG0,#0CH + ; SOURCE LINE # 197 +0015 0100 R AJMP ?C0130 + ; SOURCE LINE # 199 + ; SOURCE LINE # 200 +0017 ?C0004: + ; SOURCE LINE # 202 +0017 300060 E JNB CoverEvent_Flg,?C0007 + ; SOURCE LINE # 203 + ; SOURCE LINE # 207 +001A 300058 E JNB gBoost_Prepared_Flag,?C0008 + ; SOURCE LINE # 209 + ; SOURCE LINE # 210 +001D 200006 R JB Boost_Open_Flag,?C0009 + ; SOURCE LINE # 211 + ; SOURCE LINE # 212 +0020 75B501 MOV BST_EN,#01H + ; SOURCE LINE # 213 +0023 D200 R SETB Boost_Open_Flag +0025 22 RET + ; SOURCE LINE # 215 +0026 ?C0009: + ; SOURCE LINE # 217 +0026 E4 CLR A +0027 F500 R MOV Vox_Pairing_State+024H,A + ; SOURCE LINE # 218 +0029 F500 R MOV Vox_Pairing_State+025H,A + ; SOURCE LINE # 219 +002B C200 R CLR BES_Rst_Puls_Flag + ; SOURCE LINE # 220 +002D C200 R CLR EarPhone_ShutDown_Flag + ; SOURCE LINE # 221 +002F F500 R MOV Boost_Open_Atleast_Tim_Cnt,A +0031 F500 R MOV Boost_Open_Atleast_Tim_Cnt+01H,A + ; SOURCE LINE # 223 +0033 E500 E MOV A,CoverStatus +0035 7011 JNZ ?C0010 + ; SOURCE LINE # 224 + ; SOURCE LINE # 225 +0037 D200 R SETB Cover_Close_Flag + ; SOURCE LINE # 226 +0039 C200 R CLR Cover_Open_Flag + ; SOURCE LINE # 227 +003B C200 E CLR CoverEvent_Flg + ; SOURCE LINE # 228 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 24 + +003D D200 R SETB Vox_Vout_Enable + ; SOURCE LINE # 229 +003F C200 R CLR Boost_Open_Flag + ; SOURCE LINE # 230 +0041 C282 CLR COM_CTRL + ; SOURCE LINE # 232 +0043 43B730 ORL VOX_CTL0,#030H + ; SOURCE LINE # 233 +0046 8032 SJMP ?C0007 +0048 ?C0010: + ; SOURCE LINE # 235 + ; SOURCE LINE # 236 +0048 C200 R CLR Cover_Close_Flag + ; SOURCE LINE # 237 +004A C200 R CLR BES_Addr_Exchg_Flag + ; SOURCE LINE # 240 +004C C3 CLR C +004D E500 R MOV A,Vox_TX_Timer+01H +004F 9402 SUBB A,#02H +0051 E500 R MOV A,Vox_TX_Timer +0053 9400 SUBB A,#00H +0055 500F JNC ?C0012 + ; SOURCE LINE # 241 + ; SOURCE LINE # 242 +0057 E4 CLR A +0058 FF MOV R7,A +0059 120000 R LCALL _VOX_EN_Type + ; SOURCE LINE # 243 +005C 0500 R INC Vox_TX_Timer+01H +005E E500 R MOV A,Vox_TX_Timer+01H +0060 7018 JNZ ?C0007 +0062 0500 R INC Vox_TX_Timer +0064 ?C0120: + ; SOURCE LINE # 244 +0064 8014 SJMP ?C0007 +0066 ?C0012: + ; SOURCE LINE # 246 + ; SOURCE LINE # 247 +0066 E4 CLR A +0067 F5B5 MOV BST_EN,A + ; SOURCE LINE # 248 +0069 D200 R SETB Cover_Open_Flag + ; SOURCE LINE # 249 +006B C200 E CLR CoverEvent_Flg + ; SOURCE LINE # 250 +006D C200 R CLR Boost_Open_Flag + ; SOURCE LINE # 251 +006F F500 R MOV Vox_TX_Timer,A +0071 F500 R MOV Vox_TX_Timer+01H,A + ; SOURCE LINE # 252 + ; SOURCE LINE # 253 + ; SOURCE LINE # 254 +0073 8005 SJMP ?C0007 +0075 ?C0008: + ; SOURCE LINE # 256 + ; SOURCE LINE # 257 +0075 7F01 MOV R7,#01H +0077 120000 R LCALL _VOX_EN_Type + ; SOURCE LINE # 258 + ; SOURCE LINE # 259 +007A ?C0007: + ; SOURCE LINE # 262 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 25 + +007A 30002A R JNB Cover_Open_Flag,?C0015 + ; SOURCE LINE # 263 + ; SOURCE LINE # 265 +007D C3 CLR C +007E E500 R MOV A,Vox_TX_Timer+01H +0080 9458 SUBB A,#058H +0082 E500 R MOV A,Vox_TX_Timer +0084 9402 SUBB A,#02H +0086 501A JNC ?C0016 + ; SOURCE LINE # 267 + ; SOURCE LINE # 268 +0088 E500 R MOV A,Vox_TX_Timer+01H +008A 20E004 JB ACC.0,?C0017 + ; SOURCE LINE # 269 + ; SOURCE LINE # 278 +008D 7D24 MOV R5,#024H + ; SOURCE LINE # 282 +008F 8002 SJMP ?C0128 +0091 ?C0017: + ; SOURCE LINE # 284 + ; SOURCE LINE # 293 +0091 7D25 MOV R5,#025H +0093 ?C0128: +0093 7F0D MOV R7,#0DH +0095 120000 R LCALL _HandleTxCommand + ; SOURCE LINE # 297 +0098 ?C0018: + ; SOURCE LINE # 299 +0098 0500 R INC Vox_TX_Timer+01H +009A E500 R MOV A,Vox_TX_Timer+01H +009C 7009 JNZ ?C0015 +009E 0500 R INC Vox_TX_Timer +00A0 ?C0121: + ; SOURCE LINE # 300 +00A0 8005 SJMP ?C0015 +00A2 ?C0016: + ; SOURCE LINE # 303 + ; SOURCE LINE # 304 +00A2 E4 CLR A +00A3 FF MOV R7,A +00A4 120000 R LCALL _VOX_EN_Type + ; SOURCE LINE # 305 + ; SOURCE LINE # 307 +00A7 ?C0015: + ; SOURCE LINE # 310 +00A7 200005 R JB Cover_Close_Flag,?C0021 +00AA 200002 R JB EarPhone_ShutDown_Flag,$ + 5H +00AD 0100 R AJMP ?C0006 +00AF ?C0021: + ; SOURCE LINE # 311 + ; SOURCE LINE # 313 +00AF C3 CLR C +00B0 E500 R MOV A,Vox_TX_Timer+01H +00B2 9432 SUBB A,#032H +00B4 E500 R MOV A,Vox_TX_Timer +00B6 9400 SUBB A,#00H +00B8 5031 JNC ?C0022 + ; SOURCE LINE # 314 + ; SOURCE LINE # 315 +00BA E500 R MOV A,Vox_TX_Timer+01H +00BC 20E00F JB ACC.0,?C0023 + ; SOURCE LINE # 316 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 26 + + ; SOURCE LINE # 317 +00BF 300004 R JNB EarPhone_ShutDown_Flag,?C0024 + ; SOURCE LINE # 318 + ; SOURCE LINE # 320 +00C2 7D24 MOV R5,#024H + ; SOURCE LINE # 322 +00C4 800D SJMP ?C0131 +00C6 ?C0024: + ; SOURCE LINE # 324 +00C6 E500 E MOV A,CoverStatus +00C8 7018 JNZ ?C0027 + ; SOURCE LINE # 325 + ; SOURCE LINE # 334 +00CA 7D24 MOV R5,#024H + ; SOURCE LINE # 338 + ; SOURCE LINE # 339 +00CC 800F SJMP ?C0132 +00CE ?C0023: + ; SOURCE LINE # 341 + ; SOURCE LINE # 342 +00CE 300006 R JNB EarPhone_ShutDown_Flag,?C0028 + ; SOURCE LINE # 343 + ; SOURCE LINE # 345 +00D1 7D25 MOV R5,#025H +00D3 ?C0131: +00D3 7F05 MOV R7,#05H + ; SOURCE LINE # 347 +00D5 8008 SJMP ?C0133 +00D7 ?C0028: + ; SOURCE LINE # 349 +00D7 E500 E MOV A,CoverStatus +00D9 7007 JNZ ?C0027 + ; SOURCE LINE # 350 + ; SOURCE LINE # 359 +00DB 7D25 MOV R5,#025H +00DD ?C0132: +00DD 7F0D MOV R7,#0DH +00DF ?C0133: +00DF 120000 R LCALL _HandleTxCommand + ; SOURCE LINE # 363 + ; SOURCE LINE # 364 +00E2 ?C0027: + ; SOURCE LINE # 366 +00E2 0500 R INC Vox_TX_Timer+01H +00E4 E500 R MOV A,Vox_TX_Timer+01H +00E6 7002 JNZ ?C0122 +00E8 0500 R INC Vox_TX_Timer +00EA ?C0122: + ; SOURCE LINE # 367 +00EA 22 RET +00EB ?C0022: + ; SOURCE LINE # 369 + ; SOURCE LINE # 370 +00EB 30000D R JNB EarPhone_ShutDown_Flag,?C0032 + ; SOURCE LINE # 371 + ; SOURCE LINE # 372 +00EE C200 R CLR EarPhone_ShutDown_Flag + ; SOURCE LINE # 373 +00F0 C200 R CLR Cover_Close_Flag + ; SOURCE LINE # 374 +00F2 C200 R CLR Vox_Vout_Enable + ; SOURCE LINE # 375 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 27 + +00F4 E4 CLR A +00F5 F5B5 MOV BST_EN,A + ; SOURCE LINE # 376 +00F7 7F01 MOV R7,#01H + ; SOURCE LINE # 377 +00F9 0100 R AJMP ?C0135 +00FB ?C0032: + ; SOURCE LINE # 379 +00FB 200002 R JB Cover_Close_Flag,$ + 5H +00FE 0100 R AJMP ?C0006 + ; SOURCE LINE # 380 + ; SOURCE LINE # 381 +0100 E5E3 MOV A,CHIP_STA1 +0102 54AC ANL A,#0ACH +0104 64AC XRL A,#0ACH +0106 6003 JZ ?C0036 +0108 300012 E JNB F_batlevel_low,?C0035 +010B ?C0036: + ; SOURCE LINE # 382 + ; SOURCE LINE # 383 +010B C3 CLR C +010C E500 R MOV A,Boost_Open_Atleast_Tim_Cnt+01H +010E 9458 SUBB A,#058H +0110 E500 R MOV A,Boost_Open_Atleast_Tim_Cnt +0112 9402 SUBB A,#02H +0114 4007 JC ?C0035 + ; SOURCE LINE # 384 + ; SOURCE LINE # 385 +0116 D200 R SETB EarPhone_ShutDown_Flag + ; SOURCE LINE # 386 +0118 E4 CLR A +0119 F500 R MOV Vox_TX_Timer,A +011B F500 R MOV Vox_TX_Timer+01H,A + ; SOURCE LINE # 387 + ; SOURCE LINE # 388 +011D ?C0035: + ; SOURCE LINE # 392 +011D 20002E R JB SN_Num_Exchg_Flag,?C0038 + ; SOURCE LINE # 393 + ; SOURCE LINE # 394 +0120 C3 CLR C +0121 E500 R MOV A,Vox_TX_Timer+01H +0123 9464 SUBB A,#064H +0125 E500 R MOV A,Vox_TX_Timer +0127 9400 SUBB A,#00H +0129 501A JNC ?C0039 + ; SOURCE LINE # 395 + ; SOURCE LINE # 396 +012B E500 R MOV A,Vox_TX_Timer+01H +012D 20E004 JB ACC.0,?C0040 + ; SOURCE LINE # 397 + ; SOURCE LINE # 398 +0130 7D24 MOV R5,#024H + ; SOURCE LINE # 399 +0132 8002 SJMP ?C0129 +0134 ?C0040: + ; SOURCE LINE # 401 + ; SOURCE LINE # 402 +0134 7D25 MOV R5,#025H +0136 ?C0129: +0136 7F0E MOV R7,#0EH +0138 120000 R LCALL _HandleTxCommand + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 28 + + ; SOURCE LINE # 403 +013B ?C0041: + ; SOURCE LINE # 405 +013B 0500 R INC Vox_TX_Timer+01H +013D E500 R MOV A,Vox_TX_Timer+01H +013F 700D JNZ ?C0038 +0141 0500 R INC Vox_TX_Timer +0143 ?C0123: + ; SOURCE LINE # 406 +0143 8009 SJMP ?C0038 +0145 ?C0039: + ; SOURCE LINE # 408 + ; SOURCE LINE # 409 +0145 D200 R SETB SN_Num_Exchg_Flag + ; SOURCE LINE # 410 +0147 D200 R SETB BES_Addr_Exchg_Flag + ; SOURCE LINE # 412 +0149 E4 CLR A +014A F500 R MOV Vox_TX_Timer,A +014C F500 R MOV Vox_TX_Timer+01H,A + ; SOURCE LINE # 413 + ; SOURCE LINE # 414 +014E ?C0038: + ; SOURCE LINE # 416 +014E 300050 R JNB BES_Addr_Exchg_Flag,?C0043 + ; SOURCE LINE # 417 + ; SOURCE LINE # 418 +0151 E500 R MOV A,Box_To_Bes_Comm_Debounce +0153 C3 CLR C +0154 9401 SUBB A,#01H +0156 5009 JNC ?C0044 + ; SOURCE LINE # 419 + ; SOURCE LINE # 421 +0158 7D24 MOV R5,#024H + ; SOURCE LINE # 423 +015A 120000 R LCALL L?0143 + ; SOURCE LINE # 424 +015D 08 INC R0 +015E F6 MOV @R0,A + ; SOURCE LINE # 425 +015F 8030 SJMP ?C0045 +0161 ?C0044: + ; SOURCE LINE # 427 + ; SOURCE LINE # 428 +0161 E500 R MOV A,Box_To_Bes_Comm_Cnt +0163 D3 SETB C +0164 9405 SUBB A,#05H +0166 4006 JC ?C0046 + ; SOURCE LINE # 429 + ; SOURCE LINE # 430 + ; SOURCE LINE # 431 + ; SOURCE LINE # 432 + ; SOURCE LINE # 433 +0168 120000 R LCALL L?0141 + ; SOURCE LINE # 434 +016B ?C0130: +016B FF MOV R7,A +016C ?C0134: +016C 800D SJMP ?C0135 + ; SOURCE LINE # 437 +016E ?C0046: + ; SOURCE LINE # 439 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 29 + + ; SOURCE LINE # 440 +016E 7800 R MOV R0,#LOW Vox_Get_BES_Addr_Flag+024H +0170 E6 MOV A,@R0 +0171 6012 JZ ?C0048 + ; SOURCE LINE # 441 + ; SOURCE LINE # 442 +0173 08 INC R0 +0174 E6 MOV A,@R0 +0175 6007 JZ ?C0049 + ; SOURCE LINE # 443 + ; SOURCE LINE # 444 + ; SOURCE LINE # 445 + ; SOURCE LINE # 446 + ; SOURCE LINE # 447 +0177 120000 R LCALL L?0141 + ; SOURCE LINE # 448 +017A FF MOV R7,A +017B ?C0135: +017B 020000 R LJMP _VOX_EN_Type + ; SOURCE LINE # 451 +017E ?C0049: + ; SOURCE LINE # 453 + ; SOURCE LINE # 455 +017E 7D25 MOV R5,#025H + ; SOURCE LINE # 457 +0180 120000 R LCALL L?0143 + ; SOURCE LINE # 458 + ; SOURCE LINE # 459 +0183 800C SJMP ?C0045 +0185 ?C0048: + ; SOURCE LINE # 461 +0185 7800 R MOV R0,#LOW Vox_Get_BES_Addr_Flag+025H +0187 E6 MOV A,@R0 +0188 6007 JZ ?C0045 + ; SOURCE LINE # 462 + ; SOURCE LINE # 464 +018A 7D24 MOV R5,#024H +018C 7F0A MOV R7,#0AH +018E 120000 R LCALL _HandleTxCommand + ; SOURCE LINE # 466 + ; SOURCE LINE # 467 + ; SOURCE LINE # 468 +0191 ?C0045: + ; SOURCE LINE # 470 +0191 E500 R MOV A,Box_To_Bes_Comm_Debounce +0193 D3 SETB C +0194 941E SUBB A,#01EH +0196 4007 JC ?C0053 + ; SOURCE LINE # 471 + ; SOURCE LINE # 472 +0198 0500 R INC Box_To_Bes_Comm_Cnt + ; SOURCE LINE # 473 +019A E4 CLR A +019B F500 R MOV Box_To_Bes_Comm_Debounce,A + ; SOURCE LINE # 474 +019D 8002 SJMP ?C0043 +019F ?C0053: + ; SOURCE LINE # 476 + ; SOURCE LINE # 477 +019F 0500 R INC Box_To_Bes_Comm_Debounce + ; SOURCE LINE # 478 + ; SOURCE LINE # 479 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 30 + +01A1 ?C0043: + ; SOURCE LINE # 481 +01A1 300021 R JNB BES_Rst_Puls_Flag,?C0055 + ; SOURCE LINE # 482 + ; SOURCE LINE # 483 +01A4 0500 R INC Vox_TX_Timer+01H +01A6 E500 R MOV A,Vox_TX_Timer+01H +01A8 7002 JNZ ?C0124 +01AA 0500 R INC Vox_TX_Timer +01AC ?C0124: + ; SOURCE LINE # 484 +01AC D3 SETB C +01AD 9414 SUBB A,#014H +01AF E500 R MOV A,Vox_TX_Timer +01B1 9400 SUBB A,#00H +01B3 4010 JC ?C0055 + ; SOURCE LINE # 485 + ; SOURCE LINE # 486 +01B5 C200 R CLR BES_Rst_Puls_Flag + ; SOURCE LINE # 488 +01B7 E4 CLR A +01B8 F500 R MOV Box_To_Bes_Comm_Debounce,A + ; SOURCE LINE # 489 +01BA F500 R MOV Box_To_Bes_Comm_Cnt,A + ; SOURCE LINE # 490 +01BC D282 SETB COM_CTRL + ; SOURCE LINE # 492 +01BE 7D21 MOV R5,#021H +01C0 7F12 MOV R7,#012H +01C2 020000 R LJMP _HandleTxCommand + ; SOURCE LINE # 496 + ; SOURCE LINE # 497 +01C5 ?C0055: + ; SOURCE LINE # 592 +01C5 30001E R JNB Boost_Vout_Change_Flag,?C0006 + ; SOURCE LINE # 593 + ; SOURCE LINE # 594 +01C8 E500 R MOV A,Box_To_Bes_Comm_Debounce +01CA C3 CLR C +01CB 9464 SUBB A,#064H +01CD 5009 JNC ?C0058 + ; SOURCE LINE # 595 + ; SOURCE LINE # 596 +01CF 75FE78 MOV SFRADDR,#078H + ; SOURCE LINE # 597 +01D2 43FF03 ORL SFRDATA,#03H + ; SOURCE LINE # 598 +01D5 0500 R INC Box_To_Bes_Comm_Debounce + ; SOURCE LINE # 599 +01D7 22 RET +01D8 ?C0058: + ; SOURCE LINE # 601 + ; SOURCE LINE # 602 +01D8 C200 R CLR Boost_Vout_Change_Flag + ; SOURCE LINE # 603 +01DA E4 CLR A +01DB F500 R MOV Box_To_Bes_Comm_Debounce,A + ; SOURCE LINE # 604 +01DD 75FE78 MOV SFRADDR,#078H + ; SOURCE LINE # 605 +01E0 53FFFC ANL SFRDATA,#0FCH + ; SOURCE LINE # 606 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 31 + +01E3 43FF01 ORL SFRDATA,#01H + ; SOURCE LINE # 607 + ; SOURCE LINE # 608 + ; SOURCE LINE # 609 + ; SOURCE LINE # 610 + ; SOURCE LINE # 611 + ; SOURCE LINE # 612 +01E6 ?C0006: +01E6 22 RET +01E7 L?0143: +01E7 7F0A MOV R7,#0AH +01E9 120000 R LCALL _HandleTxCommand +01EC E4 CLR A +01ED 7800 R MOV R0,#LOW Vox_Get_BES_Addr_Flag+024H +01EF F6 MOV @R0,A +01F0 22 RET + ; FUNCTION Vox_Det_Machine (END) + + ; FUNCTION _CalCheckCrc16 (BEGIN) + ; SOURCE LINE # 660 +0000 8B00 R MOV pucFrame,R3 +0002 8A00 R MOV pucFrame+01H,R2 +0004 8900 R MOV pucFrame+02H,R1 +0006 8C00 R MOV usLen,R4 +0008 8D00 R MOV usLen+01H,R5 + ; SOURCE LINE # 661 + ; SOURCE LINE # 662 +;---- Variable 'wCRCin' assigned to Register 'R4/R5' ---- +000A E4 CLR A +000B FD MOV R5,A +000C FC MOV R4,A + ; SOURCE LINE # 663 +000D 750010 R MOV wCPoly,#010H +0010 750021 R MOV wCPoly+01H,#021H + ; SOURCE LINE # 664 +0013 F500 R MOV wChar,A +0015 ?C0060: + ; SOURCE LINE # 667 +0015 E500 R MOV A,usLen+01H +0017 1500 R DEC usLen+01H +0019 AE00 R MOV R6,usLen +001B 7002 JNZ ?C0125 +001D 1500 R DEC usLen +001F ?C0125: +001F 4E ORL A,R6 +0020 6046 JZ ?C0061 + ; SOURCE LINE # 668 + ; SOURCE LINE # 670 +0022 7800 R MOV R0,#LOW pucFrame +0024 E4 CLR A +0025 75F001 MOV B,#01H +0028 120000 E LCALL ?C?PLDIIDATA +002B 120000 E LCALL ?C?CLDPTR +002E F500 R MOV wChar,A + ; SOURCE LINE # 672 +0030 FE MOV R6,A +0031 EE MOV A,R6 +0032 6204 XRL AR4,A + ; SOURCE LINE # 674 +0034 E4 CLR A +0035 F500 R MOV i,A +0037 F500 R MOV i+01H,A + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 32 + +0039 ?C0062: +0039 C3 CLR C +003A E500 R MOV A,i+01H +003C 9408 SUBB A,#08H +003E E500 R MOV A,i +0040 9400 SUBB A,#00H +0042 50D1 JNC ?C0060 + ; SOURCE LINE # 675 + ; SOURCE LINE # 676 +0044 EC MOV A,R4 +0045 30E70F JNB ACC.7,?C0065 + ; SOURCE LINE # 677 + ; SOURCE LINE # 678 +0048 ED MOV A,R5 +0049 25E0 ADD A,ACC +004B FF MOV R7,A +004C EC MOV A,R4 +004D 33 RLC A +004E 6500 R XRL A,wCPoly +0050 FC MOV R4,A +0051 E500 R MOV A,wCPoly+01H +0053 6F XRL A,R7 +0054 FD MOV R5,A + ; SOURCE LINE # 679 +0055 8007 SJMP ?C0064 +0057 ?C0065: + ; SOURCE LINE # 681 + ; SOURCE LINE # 682 +0057 ED MOV A,R5 +0058 25E0 ADD A,ACC +005A FD MOV R5,A +005B EC MOV A,R4 +005C 33 RLC A +005D FC MOV R4,A + ; SOURCE LINE # 683 + ; SOURCE LINE # 684 +005E ?C0064: +005E 0500 R INC i+01H +0060 E500 R MOV A,i+01H +0062 70D5 JNZ ?C0062 +0064 0500 R INC i +0066 ?C0126: +0066 80D1 SJMP ?C0062 + ; SOURCE LINE # 685 +0068 ?C0061: + ; SOURCE LINE # 687 +0068 AE04 MOV R6,AR4 +006A AF05 MOV R7,AR5 + ; SOURCE LINE # 688 +006C 22 RET + ; FUNCTION _CalCheckCrc16 (END) + + ; FUNCTION _HandleTxCommand (BEGIN) + ; SOURCE LINE # 711 +0000 8F00 R MOV TxCommand,R7 +0002 8D00 R MOV nVox_Chn_Select,R5 + ; SOURCE LINE # 712 + ; SOURCE LINE # 850 +0004 7800 R MOV R0,#LOW tx_pData +0006 7C00 R MOV R4,#HIGH tx_pData +0008 7D00 MOV R5,#00H +000A 7BFF MOV R3,#0FFH + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 33 + +000C 7A00 R MOV R2,#HIGH _?ix1000 +000E 7900 R MOV R1,#LOW _?ix1000 +0010 7E00 MOV R6,#00H +0012 7F0B MOV R7,#0BH +0014 120000 E LCALL ?C?COPY + ; SOURCE LINE # 851 +;---- Variable 'i' assigned to Register 'R7' ---- +0017 E4 CLR A + ; SOURCE LINE # 852 +0018 F500 R MOV Checksum,A +001A F500 R MOV Checksum+01H,A + ; SOURCE LINE # 853 +001C F500 R MOV DataLen,A +001E F500 R MOV DataLen+01H,A + ; SOURCE LINE # 855 +0020 7500AA R MOV tx_pData,#0AAH + ; SOURCE LINE # 858 +0023 850000 R MOV tx_pData+01H,nVox_Chn_Select + ; SOURCE LINE # 866 +0026 850000 R MOV tx_pData+02H,TxCommand + ; SOURCE LINE # 867 +0029 F500 R MOV tx_pData+03H,A + ; SOURCE LINE # 874 +002B 850000 R MOV tx_pData+04H,CoverStatus + ; SOURCE LINE # 876 +002E E500 R MOV A,TxCommand +0030 120000 E LCALL ?C?CCASE +0033 0000 R DW ?C0077 +0035 05 DB 05H +0036 0000 R DW ?C0070 +0038 0A DB 0AH +0039 0000 R DW ?C0078 +003B 0B DB 0BH +003C 0000 R DW ?C0080 +003E 0D DB 0DH +003F 0000 R DW ?C0084 +0041 0E DB 0EH +0042 0000 R DW ?C0090 +0044 0F DB 0FH +0045 0000 R DW ?C0078 +0047 11 DB 011H +0048 0000 R DW ?C0091 +004A 12 DB 012H +004B 0000 R DW ?C0078 +004D 37 DB 037H +004E 0000 DW 00H +0050 0000 R DW ?C0068 + ; SOURCE LINE # 877 + ; SOURCE LINE # 878 + ; SOURCE LINE # 885 +0052 ?C0070: + ; SOURCE LINE # 887 +0052 75000E R MOV tx_pData+05H,#0EH + ; SOURCE LINE # 888 +0055 E4 CLR A +0056 F500 R MOV tx_pData+06H,A + ; SOURCE LINE # 890 +0058 FF MOV R7,A +0059 ?C0071: + ; SOURCE LINE # 891 + ; SOURCE LINE # 892 +0059 7400 R MOV A,#LOW BES_Addr + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 34 + +005B 2F ADD A,R7 +005C F8 MOV R0,A +005D E6 MOV A,@R0 +005E FE MOV R6,A +005F 7400 R MOV A,#LOW tx_pData+07H +0061 2F ADD A,R7 +0062 F8 MOV R0,A +0063 A606 MOV @R0,AR6 + ; SOURCE LINE # 893 +0065 0F INC R7 +0066 BF06F0 CJNE R7,#06H,?C0071 +0069 ?C0072: + ; SOURCE LINE # 895 +0069 E4 CLR A +006A FF MOV R7,A +006B ?C0074: + ; SOURCE LINE # 896 + ; SOURCE LINE # 897 +006B 7400 R MOV A,#LOW Random_Data +006D 2F ADD A,R7 +006E F8 MOV R0,A +006F E6 MOV A,@R0 +0070 FE MOV R6,A +0071 7400 R MOV A,#LOW tx_pData+0DH +0073 2F ADD A,R7 +0074 F8 MOV R0,A +0075 A606 MOV @R0,AR6 + ; SOURCE LINE # 898 +0077 0F INC R7 +0078 BF08F0 CJNE R7,#08H,?C0074 +007B 0100 R AJMP ?C0068 + ; SOURCE LINE # 900 + ; SOURCE LINE # 902 +007D ?C0077: + ; SOURCE LINE # 904 +007D 750001 R MOV tx_pData+05H,#01H + ; SOURCE LINE # 905 +0080 E4 CLR A +0081 F500 R MOV tx_pData+06H,A + ; SOURCE LINE # 907 +0083 A200 R MOV C,gShip_Mode_Flag +0085 33 RLC A +0086 F500 R MOV tx_pData+07H,A + ; SOURCE LINE # 909 +0088 0100 R AJMP ?C0068 + ; SOURCE LINE # 911 +008A ?C0078: + ; SOURCE LINE # 913 +008A ?C0136: + ; SOURCE LINE # 914 + ; SOURCE LINE # 916 + ; SOURCE LINE # 918 +008A ?C0137: +008A E4 CLR A +008B F500 R MOV tx_pData+05H,A + ; SOURCE LINE # 921 +008D F500 R MOV tx_pData+06H,A + ; SOURCE LINE # 922 +008F 807D SJMP ?C0068 + ; SOURCE LINE # 924 +0091 ?C0080: + ; SOURCE LINE # 926 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 35 + +0091 750005 R MOV tx_pData+05H,#05H + ; SOURCE LINE # 927 +0094 E4 CLR A +0095 F500 R MOV tx_pData+06H,A + ; SOURCE LINE # 935 +0097 750010 R MOV tx_pData+07H,#010H + ; SOURCE LINE # 936 +009A F500 R MOV tx_pData+07H,A + ; SOURCE LINE # 937 +009C 750001 R MOV tx_pData+08H,#01H + ; SOURCE LINE # 939 +009F E5E6 MOV A,CHIP_STA4 +00A1 5480 ANL A,#080H +00A3 7800 E MOV R0,#LOW bat_level +00A5 46 ORL A,@R0 +00A6 F500 R MOV tx_pData+09H,A + ; SOURCE LINE # 941 +00A8 E500 R MOV A,nVox_Chn_Select +00AA B42404 CJNE A,#024H,?C0081 + ; SOURCE LINE # 942 + ; SOURCE LINE # 943 +00AD 7800 R MOV R0,#LOW Bes_Bet_Level + ; SOURCE LINE # 944 +00AF 8007 SJMP ?C0138 +00B1 ?C0081: + ; SOURCE LINE # 946 +00B1 E500 R MOV A,nVox_Chn_Select +00B3 B42505 CJNE A,#025H,?C0082 + ; SOURCE LINE # 947 + ; SOURCE LINE # 948 +00B6 7800 R MOV R0,#LOW Bes_Bet_Level+01H +00B8 ?C0138: +00B8 E6 MOV A,@R0 +00B9 F500 R MOV tx_pData+0AH,A + ; SOURCE LINE # 949 +00BB ?C0082: + ; SOURCE LINE # 951 +00BB E4 CLR A +00BC F500 R MOV tx_pData+0BH,A + ; SOURCE LINE # 952 +00BE 804E SJMP ?C0068 + ; SOURCE LINE # 954 +00C0 ?C0084: + ; SOURCE LINE # 956 +00C0 75000A R MOV tx_pData+05H,#0AH + ; SOURCE LINE # 957 +00C3 E4 CLR A +00C4 F500 R MOV tx_pData+06H,A + ; SOURCE LINE # 959 +00C6 850000 R MOV tx_pData+07H,SN_Num_Start + ; SOURCE LINE # 961 +00C9 FF MOV R7,A +00CA ?C0085: + ; SOURCE LINE # 962 + ; SOURCE LINE # 963 +00CA EF MOV A,R7 +00CB FD MOV R5,A +00CC E500 R MOV A,SN_Num_Start +00CE 2D ADD A,R5 +00CF FD MOV R5,A +00D0 E4 CLR A +00D1 33 RLC A + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 36 + +00D2 FC MOV R4,A +00D3 D3 SETB C +00D4 ED MOV A,R5 +00D5 9416 SUBB A,#016H +00D7 EC MOV A,R4 +00D8 6480 XRL A,#080H +00DA 9480 SUBB A,#080H +00DC 4008 JC ?C0088 + ; SOURCE LINE # 964 + ; SOURCE LINE # 965 +00DE 7400 R MOV A,#LOW tx_pData+08H +00E0 2F ADD A,R7 +00E1 F8 MOV R0,A +00E2 76FF MOV @R0,#0FFH + ; SOURCE LINE # 966 +00E4 800E SJMP ?C0087 +00E6 ?C0088: + ; SOURCE LINE # 968 + ; SOURCE LINE # 969 +00E6 E500 R MOV A,SN_Num_Start +00E8 2F ADD A,R7 +00E9 2400 R ADD A,#LOW SN_Num +00EB F8 MOV R0,A +00EC E6 MOV A,@R0 +00ED FE MOV R6,A +00EE 7400 R MOV A,#LOW tx_pData+08H +00F0 2F ADD A,R7 +00F1 F8 MOV R0,A +00F2 A606 MOV @R0,AR6 + ; SOURCE LINE # 970 + ; SOURCE LINE # 971 +00F4 ?C0087: +00F4 0F INC R7 +00F5 BF09D2 CJNE R7,#09H,?C0085 +00F8 ?C0086: + ; SOURCE LINE # 973 +00F8 7409 MOV A,#09H +00FA 2500 R ADD A,SN_Num_Start +00FC F500 R MOV SN_Num_Start,A + ; SOURCE LINE # 975 +00FE 800E SJMP ?C0068 + ; SOURCE LINE # 977 +0100 ?C0090: + ; SOURCE LINE # 979 +0100 750001 R MOV tx_pData+05H,#01H + ; SOURCE LINE # 980 +0103 E4 CLR A +0104 F500 R MOV tx_pData+06H,A + ; SOURCE LINE # 982 +0106 750001 R MOV tx_pData+07H,#01H + ; SOURCE LINE # 983 +0109 8003 SJMP ?C0068 + ; SOURCE LINE # 985 +010B ?C0091: + ; SOURCE LINE # 987 +010B D200 E SETB BES_Puls_Start +010D 22 RET + ; SOURCE LINE # 991 + ; SOURCE LINE # 992 + ; SOURCE LINE # 993 +010E ?C0068: + ; SOURCE LINE # 995 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 37 + +010E E500 R MOV A,tx_pData+06H +0110 FE MOV R6,A +0111 E4 CLR A +0112 2407 ADD A,#07H +0114 FF MOV R7,A +0115 E4 CLR A +0116 3E ADDC A,R6 +0117 F500 R MOV DataLen,A +0119 EF MOV A,R7 +011A 4500 R ORL A,tx_pData+05H +011C F500 R MOV DataLen+01H,A + ; SOURCE LINE # 996 +011E 7B00 MOV R3,#00H +0120 7A00 R MOV R2,#HIGH tx_pData +0122 7900 R MOV R1,#LOW tx_pData +0124 FD MOV R5,A +0125 AC00 R MOV R4,DataLen +0127 120000 R LCALL _CalCheckCrc16 +012A 8E00 R MOV Checksum,R6 +012C 8F00 R MOV Checksum+01H,R7 + ; SOURCE LINE # 997 +012E AD00 R MOV R5,DataLen+01H +0130 7400 R MOV A,#LOW tx_pData+01H +0132 2D ADD A,R5 +0133 F8 MOV R0,A +0134 A607 MOV @R0,AR7 + ; SOURCE LINE # 998 +0136 E500 R MOV A,Checksum +0138 FF MOV R7,A +0139 7400 R MOV A,#LOW tx_pData+02H +013B 2D ADD A,R5 +013C F8 MOV R0,A +013D A607 MOV @R0,AR7 + ; SOURCE LINE # 1000 +013F C282 CLR COM_CTRL + ; SOURCE LINE # 1002 +0141 75FE0E MOV SFRADDR,#0EH + ; SOURCE LINE # 1003 +0144 43FF04 ORL SFRDATA,#04H + ; SOURCE LINE # 1006 +0147 E500 R MOV A,DataLen+01H +0149 240A ADD A,#0AH +014B FF MOV R7,A +014C E4 CLR A +014D 3500 R ADDC A,DataLen +014F FE MOV R6,A +0150 7B00 MOV R3,#00H +0152 7A00 R MOV R2,#HIGH tx_pData +0154 7900 R MOV R1,#LOW tx_pData +0156 120000 E LCALL _Uart0SendPacket + ; SOURCE LINE # 1009 +0159 75FE0E MOV SFRADDR,#0EH + ; SOURCE LINE # 1010 +015C 53FFF3 ANL SFRDATA,#0F3H + ; SOURCE LINE # 1014 +015F ?C0092: +015F 22 RET + ; FUNCTION _HandleTxCommand (END) + + ; FUNCTION _HandleRxMsg (BEGIN) + ; SOURCE LINE # 1036 +;---- Variable 'RxCommand' assigned to Register 'R7' ---- + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 38 + + ; SOURCE LINE # 1037 + ; SOURCE LINE # 1038 +;---- Variable 'i' assigned to Register 'R6' ---- + ; SOURCE LINE # 1087 +;---- Variable 'CMD_Type' assigned to Register 'R5' ---- + ; SOURCE LINE # 1089 +0000 7800 E MOV R0,#LOW RX0_Buffer+01H +0002 E6 MOV A,@R0 +0003 C4 SWAP A +0004 540F ANL A,#0FH +0006 FD MOV R5,A + ; SOURCE LINE # 1090 +0007 5403 ANL A,#03H +0009 6002 JZ $ + 4H +000B 0100 R AJMP ?C0115 + ; SOURCE LINE # 1091 + ; SOURCE LINE # 1093 + ; SOURCE LINE # 1095 + ; SOURCE LINE # 1096 +000D EF MOV A,R7 +000E 24F6 ADD A,#0F6H +0010 6025 JZ ?C0102 +0012 24FD ADD A,#0FDH +0014 602F JZ ?C0106 +0016 14 DEC A +0017 6071 JZ ?C0109 +0019 24D7 ADD A,#0D7H +001B 707A JNZ ?C0115 + ; SOURCE LINE # 1097 + ; SOURCE LINE # 1098 +001D ?C0097: + ; SOURCE LINE # 1100 +001D E4 CLR A +001E FE MOV R6,A +001F ?C0098: +001F 7800 E MOV R0,#LOW RX0_Buffer+05H +0021 E6 MOV A,@R0 +0022 FF MOV R7,A +0023 EE MOV A,R6 +0024 C3 CLR C +0025 9F SUBB A,R7 +0026 506F JNC ?C0115 + ; SOURCE LINE # 1101 + ; SOURCE LINE # 1102 +0028 7400 E MOV A,#LOW RX0_Buffer+07H +002A 2E ADD A,R6 +002B F8 MOV R0,A +002C E6 MOV A,@R0 +002D FF MOV R7,A +002E 7400 R MOV A,#LOW BES_Addr +0030 2E ADD A,R6 +0031 F8 MOV R0,A +0032 A607 MOV @R0,AR7 + ; SOURCE LINE # 1103 +0034 0E INC R6 +0035 80E8 SJMP ?C0098 + ; SOURCE LINE # 1105 + ; SOURCE LINE # 1107 + ; SOURCE LINE # 1109 + ; SOURCE LINE # 1111 +0037 ?C0102: + ; SOURCE LINE # 1112 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 39 + +0037 7800 E MOV R0,#LOW RX0_Buffer+07H +0039 E6 MOV A,@R0 +003A BD0404 CJNE R5,#04H,?C0103 + ; SOURCE LINE # 1113 + ; SOURCE LINE # 1114 +003D 7800 R MOV R0,#LOW Vox_Get_BES_Addr_Flag +003F F6 MOV @R0,A + ; SOURCE LINE # 1115 +0040 22 RET +0041 ?C0103: + ; SOURCE LINE # 1117 + ; SOURCE LINE # 1118 +0041 7800 R MOV R0,#LOW Vox_Get_BES_Addr_Flag+01H +0043 F6 MOV @R0,A + ; SOURCE LINE # 1119 + ; SOURCE LINE # 1121 +0044 22 RET + ; SOURCE LINE # 1123 + ; SOURCE LINE # 1125 + ; SOURCE LINE # 1126 +0045 ?C0106: + ; SOURCE LINE # 1128 +0045 ED MOV A,R5 +0046 6404 XRL A,#04H +0048 7800 E MOV R0,#LOW RX0_Buffer+09H +004A 701F JNZ ?C0107 + ; SOURCE LINE # 1129 + ; SOURCE LINE # 1130 +004C E6 MOV A,@R0 +004D 7800 R MOV R0,#LOW Bes_Bet_Level + ; SOURCE LINE # 1131 +004F 120000 R LCALL L?0140 +0052 7800 R MOV R0,#LOW Bes_Chg_Full +0054 F6 MOV @R0,A + ; SOURCE LINE # 1132 +0055 7800 E MOV R0,#LOW RX0_Buffer+0AH +0057 E6 MOV A,@R0 +0058 F500 R MOV Vox_Pairing_State,A + ; SOURCE LINE # 1133 +005A 08 INC R0 +005B E6 MOV A,@R0 +005C 7800 R MOV R0,#LOW Tws_Paired_Record + ; SOURCE LINE # 1134 +005E 120000 R LCALL L?0142 +0061 7800 R MOV R0,#LOW Phone_Paired_Record +0063 F6 MOV @R0,A + ; SOURCE LINE # 1135 +0064 7800 E MOV R0,#LOW RX0_Buffer+0CH +0066 E6 MOV A,@R0 +0067 7800 R MOV R0,#LOW Bes_OTA_State +0069 F6 MOV @R0,A + ; SOURCE LINE # 1136 +006A 22 RET +006B ?C0107: + ; SOURCE LINE # 1138 + ; SOURCE LINE # 1139 +006B E6 MOV A,@R0 +006C 7800 R MOV R0,#LOW Bes_Bet_Level+01H + ; SOURCE LINE # 1140 +006E 120000 R LCALL L?0140 +0071 7800 R MOV R0,#LOW Bes_Chg_Full+01H +0073 F6 MOV @R0,A + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 40 + + ; SOURCE LINE # 1141 +0074 7800 E MOV R0,#LOW RX0_Buffer+0AH +0076 E6 MOV A,@R0 +0077 F500 R MOV Vox_Pairing_State+01H,A + ; SOURCE LINE # 1142 +0079 08 INC R0 +007A E6 MOV A,@R0 +007B 7800 R MOV R0,#LOW Tws_Paired_Record+01H + ; SOURCE LINE # 1143 +007D 120000 R LCALL L?0142 +0080 7800 R MOV R0,#LOW Phone_Paired_Record+01H +0082 F6 MOV @R0,A + ; SOURCE LINE # 1144 +0083 7800 E MOV R0,#LOW RX0_Buffer+0CH +0085 E6 MOV A,@R0 +0086 7800 R MOV R0,#LOW Bes_OTA_State+01H +0088 F6 MOV @R0,A + ; SOURCE LINE # 1145 + ; SOURCE LINE # 1147 +0089 22 RET + ; SOURCE LINE # 1149 +008A ?C0109: + ; SOURCE LINE # 1151 +008A 7800 E MOV R0,#LOW RX0_Buffer+07H +008C E6 MOV A,@R0 +008D BD0404 CJNE R5,#04H,?C0110 + ; SOURCE LINE # 1152 + ; SOURCE LINE # 1153 +0090 7800 R MOV R0,#LOW Bes_Set_SN_State +0092 F6 MOV @R0,A + ; SOURCE LINE # 1154 +0093 22 RET +0094 ?C0110: + ; SOURCE LINE # 1156 + ; SOURCE LINE # 1157 +0094 7800 R MOV R0,#LOW Bes_Set_SN_State+01H +0096 F6 MOV @R0,A + ; SOURCE LINE # 1158 + ; SOURCE LINE # 1160 + ; SOURCE LINE # 1162 + ; SOURCE LINE # 1164 + ; SOURCE LINE # 1165 + ; SOURCE LINE # 1167 + ; SOURCE LINE # 1168 + ; SOURCE LINE # 1169 + ; SOURCE LINE # 1170 + ; SOURCE LINE # 1171 + ; SOURCE LINE # 1176 +0097 ?C0115: +0097 22 RET + ; FUNCTION _HandleRxMsg (END) + + ; FUNCTION HandleVoxCommMsg (BEGIN) + ; SOURCE LINE # 1193 + ; SOURCE LINE # 1194 + ; SOURCE LINE # 1206 +;---- Variable 'CrcCheckSum' assigned to Register 'R4/R5' ---- +0000 E4 CLR A + ; SOURCE LINE # 1207 +0001 F500 R MOV Data_Len,A +0003 F500 R MOV Data_Len+01H,A + ; SOURCE LINE # 1211 + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 41 + +0005 F500 R MOV i,A + ; SOURCE LINE # 1214 +0007 300044 E JNB Uart0_RX_Finish_Flag,?C0119 + ; SOURCE LINE # 1215 + ; SOURCE LINE # 1216 +000A C200 E CLR Uart0_RX_Finish_Flag + ; SOURCE LINE # 1235 +000C 7800 E MOV R0,#LOW RX0_Buffer+06H +000E E6 MOV A,@R0 +000F FE MOV R6,A +0010 E4 CLR A +0011 2407 ADD A,#07H +0013 FF MOV R7,A +0014 E4 CLR A +0015 3E ADDC A,R6 +0016 FE MOV R6,A +0017 18 DEC R0 +0018 E6 MOV A,@R0 +0019 FD MOV R5,A +001A EE MOV A,R6 +001B F500 R MOV Data_Len,A +001D EF MOV A,R7 +001E 4D ORL A,R5 +001F F500 R MOV Data_Len+01H,A + ; SOURCE LINE # 1237 +0021 7B00 MOV R3,#00H +0023 7A00 E MOV R2,#HIGH RX0_Buffer +0025 7900 E MOV R1,#LOW RX0_Buffer +0027 FD MOV R5,A +0028 AC00 R MOV R4,Data_Len +002A 120000 R LCALL _CalCheckCrc16 +002D AC06 MOV R4,AR6 +002F AD07 MOV R5,AR7 + ; SOURCE LINE # 1239 +0031 AB00 R MOV R3,Data_Len+01H +0033 7400 E MOV A,#LOW RX0_Buffer+02H +0035 2B ADD A,R3 +0036 F8 MOV R0,A +0037 E6 MOV A,@R0 +0038 FE MOV R6,A +0039 7400 E MOV A,#LOW RX0_Buffer+01H +003B 2B ADD A,R3 +003C F8 MOV R0,A +003D E6 MOV A,@R0 +003E FB MOV R3,A +003F EB MOV A,R3 +0040 B5050B CJNE A,AR5,?C0119 +0043 EE MOV A,R6 +0044 B50407 CJNE A,AR4,?C0119 + ; SOURCE LINE # 1240 + ; SOURCE LINE # 1241 +0047 7800 E MOV R0,#LOW RX0_Buffer+02H +0049 E6 MOV A,@R0 +004A FF MOV R7,A +004B 120000 R LCALL _HandleRxMsg + ; SOURCE LINE # 1242 + ; SOURCE LINE # 1244 + ; SOURCE LINE # 1246 + ; SOURCE LINE # 1250 + ; SOURCE LINE # 1252 +004E ?C0119: +004E 22 RET + C51 COMPILER V9.57.0.0 VOX_MODULE 06/14/2024 11:08:37 PAGE 42 + + ; FUNCTION HandleVoxCommMsg (END) + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 1237 ---- + CONSTANT SIZE = 11 ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 10 30 + IDATA SIZE = 50 ---- + BIT SIZE = 10 ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Listings/watchdog.lst b/Project/Listings/watchdog.lst new file mode 100644 index 0000000..0355e6a --- /dev/null +++ b/Project/Listings/watchdog.lst @@ -0,0 +1,130 @@ +C51 COMPILER V9.57.0.0 WATCHDOG 06/14/2024 11:08:38 PAGE 1 + + +C51 COMPILER V9.57.0.0, COMPILATION OF MODULE WATCHDOG +OBJECT MODULE PLACED IN .\Objects\watchdog.obj +COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\watchdog\watchdog.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDI + -R(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\ + -UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;. + -.\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listin + -gs\watchdog.lst) TABS(2) OBJECT(.\Objects\watchdog.obj) + +line level source + + 1 /* + 2 ****************************************************************************** + 3 * + 4 * @file watchdog.c + 5 * @brief watchdog module + 6 * + 7 * + 8 * @version 1.0 + 9 * @date 2022/08/04 15:00:40 + 10 * @author Alex Xu + 11 * + 12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + 13 * All Rights Reserved + 14 * + 15 * History: + 16 * Revision Date Author Desc + 17 * 1.0.0 2022/08/04 Alex build this file + 18 ******************************************************************************/ + 19 /*_____ I N C L U D E S ____________________________________________________*/ + 20 #include "watchdog.h" + 21 #if 0 + /*_____ D E F I N I T I O N S ______________________________________________*/ + + + /******************************************************************************\ + Macro definitions + \******************************************************************************/ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + + + /******************************************************************************\ + Functions definitions + \******************************************************************************/ + + + /*_____ F U N C T I O N S __________________________________________________*/ + + /* + ******************************************************************************* + * void Watchdog_Init(uint8_t watchdog_time) + * + * Description : watchdog Initialization. WDT_TM = 0ŹʱΪϵͳʱӵ12ƵΪϵͳʱӡ + wdtrel.7=1 ŹʱΪSys_Fre/12*32wdtrel.7=0 ŹʱΪSys_Fre/12*2. + Sys_Fre = 12MHzwdtrel.7=0ʱʱΧ + (1/Sys_Fre)*12*2*256~(1/Sys_Fre)*12*2*256*128 = 5ms~65ms + + Sys_Fre = 12MHzwdtrel.7=1ʱʱΧ + (1/Sys_Fre)*12*32*256~(1/Sys_Fre)*12*32*256*128 = 80ms~1s + C51 COMPILER V9.57.0.0 WATCHDOG 06/14/2024 11:08:38 PAGE 2 + + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Watchdog_Init(uint8_t watchdog_time) + { + switch(watchdog_time) + { + case _WDT_TIME_65ms_: + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + break; + case _WDT_TIME_1s_: + WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + break; + } + SWDT = 1; //Watchdog Start + } + + /* + ******************************************************************************* + * void Watchdog_Clear(void) + * + * Description : Feed watchdog ϵͳʼʱδпŹʼڳнι + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void Watchdog_Clear(void) + { + WDT = 1; + SWDT = 1; + } + + #endif + C51 COMPILER V9.57.0.0 WATCHDOG 06/14/2024 11:08:38 PAGE 3 + +ASSEMBLY LISTING OF GENERATED OBJECT CODE + + + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Project/Objects/ExtDll.iex b/Project/Objects/ExtDll.iex new file mode 100644 index 0000000..6c0896e --- /dev/null +++ b/Project/Objects/ExtDll.iex @@ -0,0 +1,2 @@ +[EXTDLL] +Count=0 diff --git a/Project/Objects/STARTUP.obj b/Project/Objects/STARTUP.obj new file mode 100644 index 0000000..f2fc3e2 Binary files /dev/null and b/Project/Objects/STARTUP.obj differ diff --git a/Project/Objects/adc.__i b/Project/Objects/adc.__i new file mode 100644 index 0000000..aa448b7 --- /dev/null +++ b/Project/Objects/adc.__i @@ -0,0 +1 @@ +"..\UsrSrc\adc\adc.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\adc.lst) TABS (2) OBJECT(.\Objects\adc.obj) \ No newline at end of file diff --git a/Project/Objects/adc.obj b/Project/Objects/adc.obj new file mode 100644 index 0000000..adbfd49 Binary files /dev/null and b/Project/Objects/adc.obj differ diff --git a/Project/Objects/bat.__i b/Project/Objects/bat.__i new file mode 100644 index 0000000..eb9661a --- /dev/null +++ b/Project/Objects/bat.__i @@ -0,0 +1 @@ +"..\UsrSrc\bat\bat.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\bat.lst) TABS (2) OBJECT(.\Objects\bat.obj) \ No newline at end of file diff --git a/Project/Objects/bat.obj b/Project/Objects/bat.obj new file mode 100644 index 0000000..6b285a9 Binary files /dev/null and b/Project/Objects/bat.obj differ diff --git a/Project/Objects/bin.bin b/Project/Objects/bin.bin new file mode 100644 index 0000000..e69de29 diff --git a/Project/Objects/charger_module.__i b/Project/Objects/charger_module.__i new file mode 100644 index 0000000..53a5a1f --- /dev/null +++ b/Project/Objects/charger_module.__i @@ -0,0 +1 @@ +"..\UsrSrc\charger\charger_module.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\charger_module.lst) TABS (2) OBJECT(.\Objects\charger_module.obj) \ No newline at end of file diff --git a/Project/Objects/charger_module.obj b/Project/Objects/charger_module.obj new file mode 100644 index 0000000..df784e9 Binary files /dev/null and b/Project/Objects/charger_module.obj differ diff --git a/Project/Objects/crc_add.bat b/Project/Objects/crc_add.bat new file mode 100644 index 0000000..975fd74 --- /dev/null +++ b/Project/Objects/crc_add.bat @@ -0,0 +1,14 @@ +@echo off +ECHO Add CRC16 At the end of the document +ECHO ------------------------------------- + +SET SREC_PATH=D:\Keil_v5\SREC + +for /f %%i in ('dir /s /b .\Objects\bin.bin') do ( +set indexdx=%%~zi +) + +ECHO --- size= %indexdx% Byte---- + +ECHO %SREC_PATH%\srec_cat.exe .\Objects\bin.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .\Objects\bin_crc.bin -Binary +%SREC_PATH%\srec_cat.exe .\Objects\bin.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .\Objects\bin_crc.bin -Binary \ No newline at end of file diff --git a/Project/Objects/discharge_module.__i b/Project/Objects/discharge_module.__i new file mode 100644 index 0000000..b071665 --- /dev/null +++ b/Project/Objects/discharge_module.__i @@ -0,0 +1 @@ +"..\UsrSrc\discharge\discharge_module.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\discharge_module.lst) TABS (2) OBJECT(.\Objects\discharge_module.obj) \ No newline at end of file diff --git a/Project/Objects/discharge_module.obj b/Project/Objects/discharge_module.obj new file mode 100644 index 0000000..d90ea85 Binary files /dev/null and b/Project/Objects/discharge_module.obj differ diff --git a/Project/Objects/gpio.__i b/Project/Objects/gpio.__i new file mode 100644 index 0000000..e4428fa --- /dev/null +++ b/Project/Objects/gpio.__i @@ -0,0 +1 @@ +"..\UsrSrc\gpio\gpio.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\gpio.lst) TABS (2) OBJECT(.\Objects\gpio.obj) \ No newline at end of file diff --git a/Project/Objects/gpio.obj b/Project/Objects/gpio.obj new file mode 100644 index 0000000..1a891bf Binary files /dev/null and b/Project/Objects/gpio.obj differ diff --git a/Project/Objects/hall.__i b/Project/Objects/hall.__i new file mode 100644 index 0000000..2569ab0 --- /dev/null +++ b/Project/Objects/hall.__i @@ -0,0 +1 @@ +"..\UsrSrc\hall\hall.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\hall.lst) TABS (2) OBJECT(.\Objects\hall.obj) \ No newline at end of file diff --git a/Project/Objects/hall.obj b/Project/Objects/hall.obj new file mode 100644 index 0000000..3a4f82f Binary files /dev/null and b/Project/Objects/hall.obj differ diff --git a/Project/Objects/hex2bin_TP.exe b/Project/Objects/hex2bin_TP.exe new file mode 100644 index 0000000..6919406 Binary files /dev/null and b/Project/Objects/hex2bin_TP.exe differ diff --git a/Project/Objects/key.__i b/Project/Objects/key.__i new file mode 100644 index 0000000..b6b784d --- /dev/null +++ b/Project/Objects/key.__i @@ -0,0 +1 @@ +"..\UsrSrc\key\key.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\key.lst) TABS (2) OBJECT(.\Objects\key.obj) \ No newline at end of file diff --git a/Project/Objects/key.obj b/Project/Objects/key.obj new file mode 100644 index 0000000..d3f33f6 Binary files /dev/null and b/Project/Objects/key.obj differ diff --git a/Project/Objects/led.__i b/Project/Objects/led.__i new file mode 100644 index 0000000..41a4719 --- /dev/null +++ b/Project/Objects/led.__i @@ -0,0 +1 @@ +"..\UsrSrc\led\led.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\led.lst) TABS (2) OBJECT(.\Objects\led.obj) \ No newline at end of file diff --git a/Project/Objects/led.obj b/Project/Objects/led.obj new file mode 100644 index 0000000..7107566 Binary files /dev/null and b/Project/Objects/led.obj differ diff --git a/Project/Objects/main.__i b/Project/Objects/main.__i new file mode 100644 index 0000000..79fc4ce --- /dev/null +++ b/Project/Objects/main.__i @@ -0,0 +1 @@ +"..\UsrSrc\main.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\main.lst) TABS (2) OBJECT(.\Objects\main.obj) \ No newline at end of file diff --git a/Project/Objects/main.obj b/Project/Objects/main.obj new file mode 100644 index 0000000..ca2acfd Binary files /dev/null and b/Project/Objects/main.obj differ diff --git a/Project/Objects/mcu b/Project/Objects/mcu new file mode 100644 index 0000000..03eccd8 Binary files /dev/null and b/Project/Objects/mcu differ diff --git a/Project/Objects/mcu.build_log.htm b/Project/Objects/mcu.build_log.htm new file mode 100644 index 0000000..b15d4ce --- /dev/null +++ b/Project/Objects/mcu.build_log.htm @@ -0,0 +1,43 @@ + + +
+

Vision Build Log

+

Tool Versions:

+IDE-Version: Vision V5.30.0.0 +Copyright (C) 2020 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: Alex Xu, 11111, LIC=D0MW3-APQZV-3AGDP-M9Z84-PG19P-UP7ZC + +Tool Versions: +Toolchain: PK51 Prof. Developers Kit Version: 9.57.0.0 +Toolchain Path: D:\Keil_v5\C51\BIN +C Compiler: C51.exe V9.57.0.0 +Assembler: A51.exe V8.2.7.0 +Linker/Locator: BL51.exe V6.22.2.0 +Library Manager: LIB51.exe V4.30.1.0 +Hex Converter: OH51.exe V2.7.0.0 +CPU DLL: S8051.DLL V3.113.0.0 +Dialog DLL: DCore51.DLL V2.81.6.0 +Target DLL: SY8831.dll V1.00 +Dialog DLL: TCore51.DLL V2.66.4.0 + +

Project:

+E:\todaywork\20240325_tp3310\Both_Way_Comm_SY8833\zklxun_SY8833\Project\TP3102_Demo.uvproj +Project File Date: 06/14/2024 + +

Output:

+Build target 'Target 1' +compiling userapp.c... +linking... +Program Size: data=159.0 xdata=0 code=3796 +creating hex file from ".\Objects\mcu"... +User command #2: .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0 +Traceback (most recent call last): + File "main.py", line 76, in + File "main.py", line 56, in hex2bin +IndexError: list assignment index out of range +[25276] Failed to execute script 'main' due to unhandled exception! +".\Objects\mcu" - 0 Error(s), 0 Warning(s). +Build Time Elapsed: 00:00:01 +
+ + diff --git a/Project/Objects/mcu.hex b/Project/Objects/mcu.hex new file mode 100644 index 0000000..f1e30fd --- /dev/null +++ b/Project/Objects/mcu.hex @@ -0,0 +1,285 @@ +:030000000208985B +:10089800758E3075D20078FFE4F6D8FD75819D021B +:0208A80008E561 +:0F0EBE001209B7D2AED2BE120C34120A4180F420 +:0405EF00029900006D +:020D6B00AD07D2 +:100D6D00E4FCFBFAF527F52875FE2975FF8BEDC41C +:100D7D0054F04401F5A5E5A520E0FBAFA1AB07AF0D +:100D8D00A2EFFEEEFAEB2528F528EA3527F5270C1C +:100D9D00BC08DBE528AE277803CEC313CE13D8F9F4 +:010DAD00FF46 +:010DAE002222 +:100DAF00E4F524F5257F05120D6B8E248F257F0624 +:100DBF00120D6BE4FCFDC004A905AA06AB07AE2417 +:100DCF00AF257C077DD0120271D0001201A98E24AD +:020DDF008F255E +:010DE10022EF +:100DE200E4F525F5267F04120D6B8E258F267F06EE +:100DF200120D6BE4FCFDC004A905AA06AB07AE25E3 +:100E0200AF267C037DE8120271D0001201A98E2563 +:020E12008F2629 +:010E140022BB +:0605F300C114C116C11580 +:10078900E4FFFE752401120DE2C3EF9474EE940E9A +:1007990040037F0122E5E630E757D3EF9436EE9424 +:1007A900055030EF9422EE94024028301612EF944F +:1007B90014EE94055007C2167524018003E4F5244C +:1007C90030152ED3EF9444EE94024022C2157524BD +:1007D90001801ED3EF9436EE94054004D216800BA7 +:1007E900C3EF9422EE94025002D21553B3FEE4F5FE +:0307F90024AF2406 +:0107FC0022DA +:100BDF00E5E620E70953B3FE75F210C21422E5F2E1 +:100BEF00540C601053B3FEE5F354C0603775F20C2C +:100BFF0075F3C022E5F354C0600375F3C012078983 +:100C0F00EF6021E5F230E417C3789AE694EB18E62B +:100C1F00940F500575F210800353B3FED214224384 +:050C2F00B301C2142214 +:0405F900C117C1184D +:100D2500E5E530E103C21722E5E230E705C217D257 +:100D35001822E5E830E00EC217300B29C20B75E822 +:100D45000175B50122D21730181BE5E630E716C349 +:100D5500789AE6941018E6940E4005D217C2182228 +:060D6500E4F5B5C21722FF +:0705FD00011DFFC119C11A25 +:100E4100E5E230E425E5E25408FF651D601CE5E2BA +:100E510030E305751C018005E4F51CC21ED219D2D0 +:0A0E61001AE4F51FF540F5418F1D5E +:010E6B002264 +:0B060400C113C111C110C112019D0003 +:100E6C00301208C211C212789D7602301006C210E0 +:0E0E7C00789D7603301306C213789D7601220E +:03060F000198004F +:10000E007893A607EDC31308F608A60508A603E421 +:03001E0008F622BF +:100CD8007893E6603D24FE6007047036D283803442 +:100CE8007897E6FFC37894965004D2838002C28333 +:100CF800EFC3789596401DE47897F618E6FFF46000 +:100D080013EFD394004001167896E670077893F6AF +:0D0D18008002C2837893E67898F6180622D0 +:05061200011E00C11DE6 +:100E9D00E5E620E706200903301D04C21DC322D359 +:010EAD002222 +:1009B700E4F5D275FE8943FF8075FE0153FFFCF510 +:1009C700FE75FF0375FE0E75FF05D2DF4387807541 +:1009D700BA0375AAFD7598D0D299D298D2AC75B7DB +:1009E700C3758901758CFC758A17D2A9D28C75FEDF +:1009F7000675FF0C75FE0375FF0CC283F58675FE41 +:100A07000F43FF8075FE4F75FF1075FE1775FF3C8E +:100A170075FE1E75FF0CD2A8D2B9D2BBD2AF75F244 +:100A27001C75F3C075E80C75FE8753FFDF43B310E1 +:0A0A370075FE7043FF04751E0A22CD +:03000300020006F2 +:0100060032C7 +:03004B00020ED8CA +:060ED80075EB3CD21D3257 +:03005B00020EDEB4 +:060EDE0075F30CD21D3279 +:0F0617000B880000000000000000000000C11C64 +:100E8A0074882553F8A6990553E5532275520075BF +:030E9A00530022E0 +:0A0E15008E358F368B378A38893905 +:100E1F00E4FFEFC39536E495355016201BFD783768 +:100E2F00E475F00112023B120154D21BF5990F80A9 +:010E3F00E1D1 +:010E4000228F +:0300230002092AA5 +:0F092A00C0E0C0D075D000C000C005C006C00737 +:10093900309904C299C21B309867C298E551146076 +:100949001F04705DE599B4AA0F755101120E961234 +:100959000E8A700205528049755100120E96804127 +:10096900120E8A70020552640745527015788EE698 +:10097900FEE42409FFE43EFE18E6FDEEF554EF4DD2 +:10098900F555E55565537004E5546552600BD3E59B +:1009990053940BE55294004008120E96755100D2FB +:0109A9001C31 +:0D09AA00D007D006D005D000D0D0D0E0326C +:05062600011F00C11ED0 +:1006E000E5E630E729301402807A301A10E51CB4B0 +:1006F000010B201E08D21EE4FBFDFF801D7898E64A +:1007000064027002E1887BFF7D647F028077301F86 +:100710000F301A747B047D647F0212000EC21A220D +:10072000E51C6401704BE56B7004E56C6043E56BA0 +:1007300064016005E56CB401167898E6640260090E +:100740007BFF7D327F0212000EE4F51FD21D22E5F1 +:100750006B64027033E56C6402702DE51FC394284E +:100760005009051FE4FBFD7F01801AE4FBFDFF80BB +:1007700014E51FC394285009051FE4FBFD7F018089 +:0907800004E4FBFDFF12000E224F +:100A4100300C08C20C120E41120D25300F05C20FD9 +:100A5100120CD8300A1EC20A120E6C120BDF120DD4 +:100A6100AF7899A60608A60712029E1206E0120B9D +:100A71001B120C89300D35C20DE51ED394004009BF +:100A8100151E301D27C21D8020120E9D501BC2ACA9 +:100A9100C2BBC2B9C2A975FE2953FF7F438702D2E7 +:0D0AA100ACD2BBD2B9D2A98000751E0A22CA +:0B004E000000000000000000000000A7 +:10062B00C109C105C108C102C104C100C106014213 +:10063B000002450000014400014300C101024700D4 +:10064B0000027000000672000000000000087A0033 +:10065B0000000000000000028400000256000002AF +:10066B00780000028600000282000002580000168B +:10067B005A00000000000000000000000000000015 +:10068B0000000000000000013F00C1030240000019 +:02069B00C10795 +:10002600FF547FF6EFC4131313540122C208D20102 +:10003600E4F544D20522FF5401F6EFC3135401221E +:100EAE00D282EF700753B7CF43B7302253B7CF225A +:10029E00E5E8540C60110542E542C394024008E4BF +:1002AE00F54275E80C8109301960301758200606A2 +:1002BE0075B501D20622E4F56BF56CC205C200F5E8 +:1002CE0045F546E51C7011D202C204C219D209C20C +:1002DE0006C28243B7308032C202C208C3E54194DF +:1002EE0002E5409400500FE4FF120EAE0541E541C9 +:1002FE00701805408014E4F5B5D204C219C206F593 +:10030E0040F54180057F01120EAE30042AC3E5414F +:10031E009458E5409402501AE54120E0047D248073 +:10032E00027D257F0D12048F0541E54170090540C0 +:10033E008005E4FF120EAE2002052000028184C368 +:10034E00E5419432E54094005031E54120E00F3014 +:10035E0000047D24800DE51C70187D24800F300074 +:10036E00067D257F058008E51C70077D257F0D1213 +:10037E00048F0541E541700205402230000DC20098 +:10038E00C202C209E4F5B57F0181192002028184FF +:10039E00E5E354AC64AC6003301F12C3E5469458D9 +:1003AE00E54594024007D200E4F540F54120072EC2 +:1003BE00C3E5419464E5409400501AE54120E00401 +:1003CE007D2480027D257F0E12048F0541E541704C +:1003DE000D05408009D207D208E4F540F5413008FA +:1003EE0050E544C3940150097D2412048508F6801B +:1003FE0030E543D394054006120032FF800D789409 +:10040E00E6601208E66007120032FF020EAE7D258E +:10041E00120485800C7895E660077D247F0A12040D +:10042E008FE544D3941E40070543E4F5448002054E +:10043E00443005210541E54170020540D39414E591 +:10044E004094004010C205E4F544F543D2827D216C +:10045E007F1202048F30011EE544C3946450097567 +:10046E00FE7843FF03054422C201E4F54475FE788D +:10047E0053FFFC43FF01227F0A12048FE47894F6A7 +:01048E00224B +:0A0AAE008B358A3689378C388D3974 +:100AB800E4FDFC753A10753B21F53CE5391539AE76 +:100AC80038700215384E60467835E475F001120228 +:100AD8003B120154F53CFEEE6204E4F53DF53EC3DD +:100AE800E53E9408E53D940050D1EC30E70FED2544 +:100AF800E0FFEC33653AFCE53B6FFD8007ED25E050 +:100B0800FDEC33FC053EE53E70D5053D80D1AE04D5 +:020B1800AF0527 +:010B1A0022B8 +:04048F008F248D2504 +:1004930078267C007D007BFF7A00794E7E007F0BFF +:1004A30012012EE4F531F532F533F5347526AA85BC +:1004B3002527852428F529851C2AE52412024B05C6 +:1004C3000C0504E10A05190B05200D054F0E058FD8 +:1004D3000F051911059A120519370000059D752B93 +:1004E3000EE4F52CFF74722FF8E6FE742D2FF8A698 +:1004F300060FBF06F0E4FF747A2FF8E6FE74332F7D +:10050300F8A6060FBF08F0A19D752B01E4F52CA2F8 +:100513000333F52DA19DE4F52BF52C807D752B057B +:10052300E4F52C752D10F52D752E01E5E654807834 +:100533009C46F52FE525B4240478848007E525B48B +:1005430025057885E6F530E4F531804E752B0AE410 +:10055300F52C853F2DFFEFFDE53F2DFDE433FCD367 +:10056300ED9416EC648094804008742E2FF876FF87 +:10057300800EE53F2F245AF8E6FE742E2FF8A606C8 +:100583000FBF09D27409253FF53F800E752B01E497 +:10059300F52C752D018003D20E22E52CFEE42407F1 +:1005A300FFE43EF533EF452BF5347B007A007926E3 +:1005B300FDAC33120AAE8E318F32AD3474272DF871 +:1005C300A607E531FF74282DF8A607C28275FE0E33 +:1005D30043FF04E534240AFFE43533FE7B007A004D +:0B05E3007926120E1575FE0E53FFF373 +:0105EE0022EA +:100800007889E6C4540FFD540360020197EF24F683 +:10081000602524FD602F14607124D7707AE4FE787F +:100820008DE6FFEEC39F506F748F2EF8E6FF747253 +:100830002EF8A6070E80E8788FE6BD04047870F6DF +:10084000227871F622ED64047891701FE6788412A4 +:1008500000267856F67892E6F54708E67878120092 +:100860003C7886F67894E67882F622E6788512005F +:10087000267857F67892E6F54808E6787912003C33 +:100880007887F67894E67883F622788FE6BD0404BC +:070890007858F6227859F6B2 +:01089700223E +:100C8900E4F524F525F526301C44C21C788EE6FED1 +:100C9900E42407FFE43EFE18E6FDEEF524EF4DF5EA +:100CA900257B007A007988FDAC24120AAEAC06AD2A +:100CB90007AB25748A2BF8E6FE74892BF8E6FBEB63 +:0E0CC900B5050BEEB50407788AE6FF120800A9 +:010CD70022FA +:10069D00019C00C11F019B1E14080BB80C1C0CE41F +:0E06AD000D480DAC0E420ED80F3C0FD2106857 +:0B0ECD00EF25E02408F8E6FC08E62210 +:100B1B00E4FFE5E630E715120ECD2432FDE43CFC94 +:100B2B00C3789AE69D18E69C50108012120ECDFDEC +:100B3B00C3789AE69D18E69C40040FBF0AD4789CB4 +:100B4B00E6FEEFD39E400418068003789B16789B35 +:100B5B00E6FED394325006EEC3940A5007789CA657 +:100B6B000718761E789CE6FFD394015003D21F2200 +:080B7B00EFD394024002C21FF7 +:010B8300224F +:1006BB00014B00014D00014A00014900014C00C1F2 +:1006CB000CC10FC10BC10AC10D015000014E00C17D +:0406DB000E014F00BD +:100C3400E5506050E4F550054BE54BC39405400581 +:100C4400E4F54BD20C054DE54DC3940A4005E4F59B +:100C54004DD20F0549E549C394644005E4F549D2F2 +:100C64000A054AE54AC394FA401AE4F54AD20B0548 +:100C74004CE54C9404400DE4F54CD20D0546E54694 +:050C840070020545228D +:03000B00020B8461 +:100B8400C0E0C0D074FC258CF58C7417258AF58AD6 +:100B9400755001054EE54EC39405403A754E00303C +:100BA4000E34E54FD394045004C282801BE54F30C9 +:100BB400E00BB40D04C282800FD282800BE54FB4E7 +:100BC4000E04D2828002C282054FE54FC3941740BF +:0B0BD40005C20E754F00D0D0D0E032FB +:1008AA00020EBEE493A3F8E493A34003F68001F298 +:1008BA0008DFF48029E493A3F85407240CC8C3334F +:1008CA00C4540F4420C8834004F456800146F6DF1E +:1008DA00E4800B01020408102040809005EFE47EBA +:1008EA00019360BCA3FF543F30E509541FFEE49313 +:1008FA00A360010ECF54C025E060A840B8E493A3DA +:10090A00FAE493A3F8E493A3C8C582C8CAC583CA04 +:10091A00F0A3C8C582C8CAC583CADFE9DEE780BEBC +:0106DF00001A +:10005E00E709F608DFFA8046E709F208DFFA803E84 +:10006E0088828C83E709F0A3DFFA8032E309F60871 +:10007E00DFFA8078E309F208DFFA807088828C83D9 +:10008E00E309F0A3DFFA806489828A83E0A3F6088D +:10009E00DFFA805889828A83E0A3F208DFFA804C67 +:1000AE0080D280FA80C680D4806980F2803380103E +:1000BE0080A680EA809A80A880DA80E280CA8033A7 +:1000CE0089828A83ECFAE493A3C8C582C8CCC5831F +:1000DE00CCF0A3C8C582C8CCC583CCDFE9DEE780EF +:1000EE000D89828A83E493A3F608DFF9ECFAA9F06E +:1000FE00EDFB2289828A83ECFAE0A3C8C582C8CCC4 +:10010E00C583CCF0A3C8C582C8CCC583CCDFEADEDC +:10011E00E880DB89828A83E493A3F208DFF980CC3E +:10012E0088F0EF60010E4E60C388F0ED2402B40437 +:10013E000050B9F582EB2402B4040050AF232345DE +:06014E0082239000AE7355 +:10015400BB010689828A83E0225002E722BBFE02A9 +:09016400E32289828A83E49322DC +:10016D0075F008758200EF2FFFEE33FECD33CDCC49 +:10017D0033CCC58233C5829BED9AEC99E5829840CC +:10018D000CF582EE9BFEED9AFDEC99FC0FD5F0D6A9 +:10019D00E4CEFBE4CDFAE4CCF9A88222B800C1B9D3 +:1001AD000059BA002DEC8BF084CFCECDFCE5F0CB11 +:1001BD00F97818EF2FFFEE33FEED33FDEC33FCEB4A +:1001CD0033FB10D703994004EB99FB0FD8E5E4F905 +:1001DD00FA227818EF2FFFEE33FEED33FDEC33FCF2 +:1001ED00C933C910D7059BE99A4007EC9BFCE99AE6 +:1001FD00F90FD8E0E4C9FAE4CCFB2275F010EF2F2B +:10020D00FFEE33FEED33FDCC33CCC833C810D7072A +:10021D009BEC9AE899400AED9BFDEC9AFCE899F865 +:0E022D000FD5F0DAE4CDFBE4CCFAE4C8F922F8 +:10023B00FAE6FB0808E6F925F0F618E6CA3AF622C4 +:10024B00D083D082F8E4937012740193700DA3A342 +:10025B0093F8740193F5828883E473740293686056 +:06026B00EFA3A3A380DF56 +:10027100EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D1A +:10028100FDE43CFCE8A42EC8C5F03DFDE43CFCEFD8 +:0D029100A4FFE5F028FEE43DFDE43CFC2266 +:00000001FF diff --git a/Project/Objects/mcu.lnp b/Project/Objects/mcu.lnp new file mode 100644 index 0000000..9a20695 --- /dev/null +++ b/Project/Objects/mcu.lnp @@ -0,0 +1,19 @@ +".\Objects\STARTUP.obj", +".\Objects\main.obj", +".\Objects\adc.obj", +".\Objects\charger_module.obj", +".\Objects\discharge_module.obj", +".\Objects\gpio.obj", +".\Objects\hall.obj", +".\Objects\key.obj", +".\Objects\led.obj", +".\Objects\sleep.obj", +".\Objects\system.obj", +".\Objects\uart.obj", +".\Objects\userapp.obj", +".\Objects\vox_module.obj", +".\Objects\watchdog.obj", +".\Objects\bat.obj", +".\Objects\sys_tim.obj" +TO ".\Objects\mcu" +PRINT(".\Listings\mcu.m51") RAMSIZE(256) diff --git a/Project/Objects/sleep.__i b/Project/Objects/sleep.__i new file mode 100644 index 0000000..3301c19 --- /dev/null +++ b/Project/Objects/sleep.__i @@ -0,0 +1 @@ +"..\UsrSrc\sleep\sleep.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\sleep.lst) TABS (2) OBJECT(.\Objects\sleep.obj) \ No newline at end of file diff --git a/Project/Objects/sleep.obj b/Project/Objects/sleep.obj new file mode 100644 index 0000000..33d5796 Binary files /dev/null and b/Project/Objects/sleep.obj differ diff --git a/Project/Objects/sys_tim.__i b/Project/Objects/sys_tim.__i new file mode 100644 index 0000000..33e0a14 --- /dev/null +++ b/Project/Objects/sys_tim.__i @@ -0,0 +1 @@ +"..\UsrSrc\timer\sys_tim.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\sys_tim.lst) TABS (2) OBJECT(.\Objects\sys_tim.obj) \ No newline at end of file diff --git a/Project/Objects/sys_tim.obj b/Project/Objects/sys_tim.obj new file mode 100644 index 0000000..d3af0e2 Binary files /dev/null and b/Project/Objects/sys_tim.obj differ diff --git a/Project/Objects/system.__i b/Project/Objects/system.__i new file mode 100644 index 0000000..4d03194 --- /dev/null +++ b/Project/Objects/system.__i @@ -0,0 +1 @@ +"..\UsrSrc\system\system.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\system.lst) TABS (2) OBJECT(.\Objects\system.obj) \ No newline at end of file diff --git a/Project/Objects/system.obj b/Project/Objects/system.obj new file mode 100644 index 0000000..4df290c Binary files /dev/null and b/Project/Objects/system.obj differ diff --git a/Project/Objects/test.txt b/Project/Objects/test.txt new file mode 100644 index 0000000..85a1bb8 --- /dev/null +++ b/Project/Objects/test.txt @@ -0,0 +1,99 @@ +:020000040000FA +:200000000203CB02000632000000000209D175B7C3750B02750C02220000000208987429A5 +:200020002FF8A605EBC313FE742C2FF8A606742F2FF8A60374322FF8A61574352FF8E4F617 +:2000400022000000000000000000000209B80000000000000000000000000002084A75F002 +:2000600008758200EF2FFFEE33FECD33CDCC33CCC58233C5829BED9AEC99E58298400CF505 +:2000800082EE9BFEED9AFDEC99FC0FD5F0D6E4CEFBE4CDFAE4CCF9A88222B800C1B90059D0 +:2000A000BA002DEC8BF084CFCECDFCE5F0CBF97818EF2FFFEE33FEED33FDEC33FCEB33FB52 +:2000C00010D703994004EB99FB0FD8E5E4F9FA227818EF2FFFEE33FEED33FDEC33FCC93315 +:2000E000C910D7059BE99A4007EC9BFCE99AF90FD8E0E4C9FAE4CCFB2275F010EF2FFFEE2C +:2001000033FEED33FDCC33CCC833C810D7079BEC9AE899400AED9BFDEC9AFCE899F80FD5C5 +:20012000F0DAE4CDFBE4CCFAE4C8F922EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DFDE43CFC5C +:20014000E8A42EC8C5F03DFDE43CFCEFA4FFE5F028FEE43DFDE43CFC2220120302022CE5DF +:200160000C1460361470030202142402600302022FE5B720E505E4FF120A140508E508C3F8 +:200180009402500302022FE4F508E5E35488FFBF8002D20A750C0102022FE5E3548864885D +:2001A0007045050FE50FC39428500302022FE4F50F300A107F01120A14D2067515057B6455 +:2001C0007D02801ED208050AE50AC39496400AE4F50A7F01120A14C208E4F5157B327D037B +:2001E0007F0112001E8048E5E35488FFBF801AE4F50FF50AD20AF515FB7D017F0112001E95 +:2002000030062CC20AC2068026E5E354887020750C02801B7F01120A14E4F50FF50AF5085C +:20022000C20AE5E330E708E4F50C8003750B02E5E830E3120510E510C394024009E4F5109A +:2002400075E808750C0222201203020317E50B1460361470030202FF2402600302031AE592 +:20026000B720E405E4FF1209FF0511E511C39402500302031AE4F511E5E35424FFBF2002E0 +:20028000D209750B0102031AE5E3542464247046050DE50DC39428500302031AE4F50D305A +:2002A00009127F011209FFD20B7515057B647D02E41F801DD2070509E509C39496400AE42F +:2002C000F5097F011209FFC207E4F5157B327D03FF12001E8044E5E35424FFBF2019E4F59F +:2002E0000DF509D209F515FB7D01FF12001E300B29C209C20B8023E5E35424701D80187FE3 +:20030000011209FFE4F511F50DF509C209E5E330E508E4F50B8003750B02E5E830E2120549 +:200320000EE50EC394024009E4F50E75E804750B0222E4FE74292EF8E6607624FE600E1429 +:2003400060472402706BAF06120A298069742C2EF974352EF8E6C397AF065005120A29806D +:2003600003120A3D742F2EF974352EF8E6C3974045E4F674322EF8E6D39400400116E67023 +:200380003574292EF8E4F6802D742C2EF974352EF8E6D397AF065005120A298003120A3DCD +:2003A000742F2EF974352EF8E6C3974009E4F68005AF06120A3D0EEE64036003020334E4CB +:2003C000FE74352EF8060EBE03F722758E3075D20078FFE4F6D8FD758139020418020A95D4 +:2003E000E493A3F8E493A34003F68001F208DFF48029E493A3F85407240CC8C333C4540F1F +:200400004420C8834004F456800146F6DFE4800B01020408102040809005DCE47E019360CE +:20042000BCA3FF543F30E509541FFEE493A360010ECF54C025E060A840B8E493A3FAE49340 +:20044000A3F8E493A3C8C582C8CAC583CAF0A3C8C582C8CAC583CADFE9DEE780BEE4FE75CC +:2004600012017F041204DEC3EF94FFEE94024003AF1222E5E630E763D3EF9436EE9405505B +:2004800030EF9422EE94024028301912EF9414EE94055007C2197512018003E4F5123018B2 +:2004A0003AD3EF9444EE9402402EC218751201802A051FE51FD3940A4021E4F51FD3EF9422 +:2004C00036EE94054004D219800BC3EF9422EE94025002D21853B3FEE4F512AF1222AD07F7 +:2004E000E4FCF513F514F515F51675FE2975FF8BEDC454F04401F5A5E5A520E0FBAFA1753D +:2005000013008F14AFA2EFFEEE4213E5142516F516E5133515F515E4F513F5140CBC08D084 +:20052000E516AE157803CEC313CE13D8F9F5148E131208E28E158F16AE13AF147C037DE8D6 +:2005400012012CC006C007AE15AF16AB07AA06E4F9F8D007D00612009A8E138F1422E4F578 +:20056000D275FE8943FF8075FE0153FFFC12000E120A63120A7475FE0D75FF01120A8575EF +:2005800015067B197D02E4FF12001E7515067B197D027F0112001E7515067B197D027F02A3 +:2005A00012001EE4F58675FE0F43FF8075FE4F75FF10120A5175FE1775FF3C75FE1B75FF79 +:2005C000FC75FE1E75FF0CD2A8D2B9D2BBD2AF75F21875F3C075E80C75280A2202380000E8 +:2005E000C119C118011F00C113C112C114012600C105C101C100C104C103C10201250001C9 +:200600002400C196C117C115012800C11AC10AC109010B02011100010D00010900C1070117 +:200620000C02010800010F00010A00C108010E00011000C10BC106011B00011D00011A00B7 +:20064000011900011C00C10EC110C10DC10CC10F011E00C11100E4FDF512F513F514F51564 +:2006600075FE2975FF8B75A551E5A520E0FBAFA17512008F13AFA2EFFEEE4212E5132515C4 +:20068000F515E5123514F514E4F512F5130DBD08D5E515AE147802CEC313CE13D8F9F513D9 +:2006A0008E121208E28E148F15AE12AF137C037DE812012CC006C007AE14AF15AB07AA063E +:2006C000E4F9F8D007D00612009A8E128F1322300E0EC20E12096012099612073D1207A52C +:2006E000301005C210120332300C12C20C1206567838A60608A607120247120159300F3CBF +:20070000C20FE528D3940040091528301A2EC21A80271209E9EF602175FE2175FFE675FE3E +:200720002475FFFFC2BBC2B9C2A9C2AB438702D2BBD2B9D2A9D2AB800075280A22E5E53033 +:20074000E105C213C21222E5E230E707C213C212D21422E5E830E010C213C212300D45C278 +:200760000D75E80175B50122D21330141EE5E630E719C37839E6941018E6940E4006D213B6 +:20078000C2148007E4F5B5C213C212301316E5B520E00375B5010526E526C3940A4005D2F6 +:2007A00012E4F52622E5E620E70653B3FEC21522E5F2540C600FE5F354C0600675F20C7551 +:2007C000F3C0C21522E5F354C0600375F3C012045DEF7003C21522E5F230E419C215C37812 +:2007E00039E694EB18E6940F500743B30175F2102253B3FE2243B301D21522E51E604AE41C +:20080000F51E051BE51BC394054005E4F51BD20E051DE51DC3940A4005E4F51DD210051970 +:20082000E519C394644005E4F519D20C051AE51AC394FA4014E4F51AD20DB290051CE51CF1 +:2008400094044005E4F51CD20F22C0E0C0D075D000C006C007AFF38FF3AEEF8EEFEE30E481 +:2008600002D205EE30E502D201EE30E604D200C201EE30E307300104C201D204EF30E3044E +:20088000D2028006EF30E202D203201A02D21AD007D006D0D0D0E032C0E0C0F0C083C082FA +:2008A000C0D075D000C000C001C002C003C004C005C006C007C28F158D749B258BF58B30E5 +:2008C0001503120922D211D007D006D005D004D003D002D001D000D0D0D082D083D0F0D06F +:2008E000E032E4FDFBFAF517F51875FE2975FF8B75A561E5A520E0FBAFA1AB07AFA2EFFE1C +:20090000EEFAEB2518F518EA3517F517E4FAFB0DBD08DDE518AE177803CEC313CE13D8F95D +:20092000FF22E525D395245004D2848002C284E525C394AA400FE4F525301704152480052D +:20094000301602052474AAD395245006D217C216800BE524D394015004D216C21705252208 +:20096000300410C201C2047515057B327D027F0212001E30000EC2007515087B327D027F01 +:200980000212001E30050EC2057515037B327D027F0212001E2230030C752701C203E4F515 +:2009A00015FBFD800D30020FE4F527C202F515FB7D017F0212001E22C0E0C0D075D000C00D +:2009C00007AFEB8FEB201A02D21AD007D0D0D0E032C0E0C0D074FC258CF58C7417258AF57A +:2009E0008A751E01D0D0D0E032E5E620E709200906200A03301A05C21A7F00227F0122EFC3 +:200A000014600A04700D53B7EE43B7102253B7EF43B70122EF14600A04700D53B7DD43B7CE +:200A2000202253B7DF43B70222EF14600A14600A24027008D28322D28222D28422EF14601C +:200A40000A14600A24027008C28322C28222C28422E5E230E4FBE5E230E304E4F5272275F0 +:200A60002701225389F0438901758CFC758A17D2A9D28C2253890F438910758DFF758B9B22 +:200A8000D2ABD28E2275FE0675FF1C75FE0375FF3F5380E32212055ED2AED2BE1207FB12A2 +:200AA00006CF80F400000000000000000000000000000000000000000000000000000000ED +:200AC000000000000000000000000000000000000000000000000000000000000000000016 +:200AE0000000000000000000000000000000000000000000000000000000000000000000F6 +:200B00000000000000000000000000000000000000000000000000000000000000000000D5 +:200B20000000000000000000000000000000000000000000000000000000000000000000B5 +:200B4000000000000000000000000000000000000000000000000000000000000000000095 +:200B6000000000000000000000000000000000000000000000000000000000000000000075 +:200B8000000000000000000000000000000000000000000000000000000000000000000055 +:200BA000000000000000000000000000000000000000000000000000000000000000000035 +:200BC000000000000000000000000000000000000000000000000000000000000000000015 +:200BE0000000000000000000000000000000000000000000000000000000000000000000F5 +:020C00000D8263 +:00000001FF diff --git a/Project/Objects/uart.__i b/Project/Objects/uart.__i new file mode 100644 index 0000000..c3fc7dc --- /dev/null +++ b/Project/Objects/uart.__i @@ -0,0 +1 @@ +"..\UsrSrc\uart\uart.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\uart.lst) TABS (2) OBJECT(.\Objects\uart.obj) \ No newline at end of file diff --git a/Project/Objects/uart.obj b/Project/Objects/uart.obj new file mode 100644 index 0000000..4a729ab Binary files /dev/null and b/Project/Objects/uart.obj differ diff --git a/Project/Objects/userapp.__i b/Project/Objects/userapp.__i new file mode 100644 index 0000000..382b6da --- /dev/null +++ b/Project/Objects/userapp.__i @@ -0,0 +1 @@ +"..\UsrSrc\userapp\userapp.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\userapp.lst) TABS (2) OBJECT(.\Objects\userapp.obj) \ No newline at end of file diff --git a/Project/Objects/userapp.obj b/Project/Objects/userapp.obj new file mode 100644 index 0000000..16695e1 Binary files /dev/null and b/Project/Objects/userapp.obj differ diff --git a/Project/Objects/vox_module.__i b/Project/Objects/vox_module.__i new file mode 100644 index 0000000..2922711 --- /dev/null +++ b/Project/Objects/vox_module.__i @@ -0,0 +1 @@ +"..\UsrSrc\vox\vox_module.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\vox_module.lst) TABS (2) OBJECT(.\Objects\vox_module.obj) \ No newline at end of file diff --git a/Project/Objects/vox_module.obj b/Project/Objects/vox_module.obj new file mode 100644 index 0000000..c629d67 Binary files /dev/null and b/Project/Objects/vox_module.obj differ diff --git a/Project/Objects/watchdog.__i b/Project/Objects/watchdog.__i new file mode 100644 index 0000000..2088575 --- /dev/null +++ b/Project/Objects/watchdog.__i @@ -0,0 +1 @@ +"..\UsrSrc\watchdog\watchdog.c" ROM(COMPACT) OPTIMIZE (9,SIZE) BROWSE INCDIR(..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\watchdog.lst) TABS (2) OBJECT(.\Objects\watchdog.obj) \ No newline at end of file diff --git a/Project/Objects/watchdog.obj b/Project/Objects/watchdog.obj new file mode 100644 index 0000000..f8bf6cd Binary files /dev/null and b/Project/Objects/watchdog.obj differ diff --git a/Project/TP3102_Demo.uvgui.GH b/Project/TP3102_Demo.uvgui.GH new file mode 100644 index 0000000..cb26171 --- /dev/null +++ b/Project/TP3102_Demo.uvgui.GH @@ -0,0 +1,3727 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 166 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 159 + 2027 + 3947 + 1121 + + + + 0 + + 1603 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000D0000000C000000010000004D453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF5F453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C636861726765725C636861726765725F6D6F64756C652E630000000010636861726765725F6D6F64756C652E6300000000FFDC7800FFFFFFFF57453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000BECEA100FFFFFFFF58453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF52453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C756172745C756172742E630000000006756172742E6300000000BCA8E100FFFFFFFF50453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C6164635C6164632E6300000000056164632E63000000009CC1B600FFFFFFFF52453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C68616C6C5C68616C6C2E63000000000668616C6C2E6300000000F7B88600FFFFFFFF56453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C74696D65725C7379735F74696D2E6300000000097379735F74696D2E6300000000D9ADC200FFFFFFFF50453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C6C65645C6C65642E6300000000056C65642E6300000000A5C2D700FFFFFFFF56453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C73797374656D5C73797374656D2E63000000000873797374656D2E6300000000B3A6BE00FFFFFFFF57453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C557372496E635C766F785C766F785F6D6F64756C652E68000000000C766F785F6D6F64756C652E6800000000EAD6A300FFFFFFFF52453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C557372496E635C756172745C756172742E680000000006756172742E6800000000F6FA7D00FFFFFFFF50453A5C746F646179776F726B5C32303234303332355F7470333331305C426F74685F5761795F436F6D6D5F5359383833335C7A6B6C78756E5F5359383833335C5573725372635C6B65795C6B65792E6300000000056B65792E6300000000B5E99D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000000F000000030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + F40000006600000090050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000D0020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000D0020000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000D0020000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000D0020000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000000103000080070000E6030000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000040300007D070000CD030000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000D0020000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000040300007D070000CD030000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000040300007D070000CD030000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000040300007D070000CD030000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000040300007D070000CD030000 + + + 16 + A4000000BB000000C0010000FB020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + A4000000BB0000006C0300004B010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + A4000000BB0000009401000086010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000E9020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000000030000000000004F000000F0000000E90200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E902000080070000ED02000001000000010000100400000001000000AFFDFFFF3B010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000403000080070000FD03000000000000ED02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2763 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001D48414C5F534D4255535F536C617665527843706C7443616C6C6261636B960000000000000008001D48414C5F534D4255535F536C617665527843706C7443616C6C6261636B197379363230785F6972715F68616E646C65725F746872656164044E4F4E4511677379363230785F6465766963655F7379144932435F4745545F4F574E5F4144445245535331144932435F4745545F4F574E5F41444452455353320C4932435F4F4152325F4F41321E48414C5F534D4255535F4D6173746572527843706C7443616C6C6261636B0000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000080070000DF000000 + + + 16 + 7408000066000000000F0000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 3C000000530000005801000093020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 3C000000530000005801000093020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 3C000000530000005801000093020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0000000042030000C0030000E6030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000080070000DF000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 3C000000530000005801000093020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 3C000000530000005801000093020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 3C000000530000005801000093020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 3C000000530000005801000093020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 3311 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DF00000080070000E3000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000010000007408000066000000000F0000F6000000F40000004F00000080070000DF0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000200C000066000000100D000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000003E030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000080070000660000007008000055030000000000004F000000F00000003E0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000003E030000800700004203000001000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000440B000059030000000F0000FD030000C40300004203000080070000E603000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFC003000042030000C4030000E603000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000029020000900500002D020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000000000008007000044020000100D0000D4020000000000002D02000090050000BD0200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 955 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 12 + + ..\UsrSrc\main.c + 40 + 33 + 56 + 1 + + 0 + + + ..\UsrSrc\charger\charger_module.c + 41 + 103 + 122 + 1 + + 0 + + + ..\UsrSrc\vox\vox_module.c + 32 + 901 + 934 + 1 + + 0 + + + ..\UsrSrc\userapp\userapp.c + 2 + 114 + 131 + 1 + + 0 + + + ..\UsrSrc\uart\uart.c + 0 + 123 + 158 + 1 + + 0 + + + ..\UsrSrc\adc\adc.c + 12 + 1 + 2 + 1 + + 0 + + + ..\UsrSrc\hall\hall.c + 17 + 1 + 20 + 1 + + 0 + + + ..\UsrSrc\timer\sys_tim.c + 2 + 149 + 172 + 1 + + 0 + + + ..\UsrSrc\led\led.c + 4 + 105 + 138 + 1 + + 0 + + + ..\UsrSrc\system\system.c + 41 + 58 + 71 + 1 + + 0 + + + ..\UsrInc\vox\vox_module.h + 0 + 112 + 148 + 1 + + 0 + + + ..\UsrInc\uart\uart.h + 0 + 10 + 46 + 1 + + 0 + + + ..\UsrSrc\key\key.c + 23 + 69 + 97 + 1 + + 0 + + + + +
diff --git a/Project/TP3102_Demo.uvgui.GH.bak b/Project/TP3102_Demo.uvgui.GH.bak new file mode 100644 index 0000000..ba6c2fa --- /dev/null +++ b/Project/TP3102_Demo.uvgui.GH.bak @@ -0,0 +1,3682 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + C:\Users\GH\Desktop\todaywork\20220818_tp3102_git\TP3102_Demo_20230329\Src\startup + + + + + + + 38003 + Registers + 115 115 + + + 346 + Code Coverage + 1010 660 + + + 204 + Performance Analyzer + 1670 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 166 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 12 + -254 + 1680 + 1036 + + + + 0 + + 1099 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000800000000000000010000004E433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000FFDC7800FFFFFFFF60433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5573725372635C636861726765725C636861726765725F6D6F64756C652E630000000010636861726765725F6D6F64756C652E6300000000BECEA100FFFFFFFF58433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000F0A0A100FFFFFFFF54433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C557372496E635C696E635C646566696E652E680000000008646566696E652E6800000000BCA8E100FFFFFFFF5B433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5573725372635C7761746368646F675C7761746368646F672E63000000000A7761746368646F672E63000000009CC1B600FFFFFFFF57433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5573725372635C74696D65725C7379735F74696D2E6300000000097379735F74696D2E6300000000F7B88600FFFFFFFF5B433A5C55736572735C47485C4465736B746F705C746F646179776F726B5C32303232303831385F7470333130325F6769745C5450333130325F44656D6F5F4F4B5C5573725372635C766F785F636F6D6D5C564F585F434F4D4D2E43000000000A564F585F434F4D4D2E4300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000061020000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + F40000006600000090050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000031020000 + + + 16 + 70000000870000006001000052010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000031020000 + + + 16 + 70000000870000008C010000C7020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + 63000000D6010000E307000006040000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 70000000870000003803000017010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + 63000000D6010000E307000006040000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000031020000 + + + 16 + 70000000870000008C010000C7020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000031020000 + + + 16 + 70000000870000008C010000C7020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000006202000080070000E6030000 + + + 16 + 670700009B020000E70E0000FF030000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0000000053000000800700004A020000 + + + 16 + 63000000D6010000E307000006040000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000650200007D070000CD030000 + + + 16 + 670700009B020000E70E0000FF030000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 70000000870000003803000017010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 70000000870000003803000017010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 70000000870000003803000017010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 70000000870000003803000017010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 22000000390000001201000004010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 70000000870000003803000017010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000031020000 + + + 16 + 70000000870000008C010000C7020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000650200007D070000CD030000 + + + 16 + D1FFFFFF1F03000051070000FB030000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000650200007D070000CD030000 + + + 16 + 670700009B020000E70E0000FF030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000650200007D070000CD030000 + + + 16 + D1FFFFFF1F03000051070000FB030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000650200007D070000CD030000 + + + 16 + D1FFFFFF1F03000051070000FB030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 70000000870000006001000052010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006A0000007D07000007020000 + + + 16 + B40300001702000070070000E2030000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000004A020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000061020000000000004F000000F00000004A0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000004F000000800700005300000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002E01000080070000FB020000000000005300000080070000E402000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004A020000800700004E0200000100000001000010040000000100000076FEFFFF02020000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006502000080070000FD030000000000004E02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020000001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 1 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000004F00000078000000E6030000 + + + 16 + 63000000D6010000E307000006040000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000099010000 + + + 16 + 22000000390000003E01000079020000 + + + + 1465 + 1465 + 1 + 1 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000075000000CD030000 + + + 16 + 63000000D6010000E307000006040000 + + + + 1466 + 1466 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1467 + 1467 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1468 + 1468 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1935 + 1935 + 1 + 1 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000075000000CD030000 + + + 16 + 63000000D6010000E307000006040000 + + + + 1936 + 1936 + 1 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1937 + 1937 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1939 + 1939 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1940 + 1940 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1941 + 1941 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 1942 + 1942 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000099010000 + + + 16 + 22000000390000003E01000079020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000099010000 + + + 16 + 22000000390000003E01000079020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 198 + 198 + 1 + 1 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000075000000CD030000 + + + 16 + 63000000D6010000E307000006040000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F4000000630000008007000074000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 2507 + 2507 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 22000000390000001201000004010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 22000000390000003E01000079020000 + + + + 437 + 437 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 440 + 440 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 22000000390000003E01000079020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 22000000390000003E01000079020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D07000066000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 1 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000320200007D070000CD030000 + + + 16 + B40300001702000070070000E2030000 + + + + 2879 + 0000000008000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000740000008007000078000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F400000066000000800700008B000000F40000004F00000080070000740000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000E60300000100000002000010040000000100000000000000000000000000000000000000000000000100000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000C9010000000000004F000000F0000000E60300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF040000000000000002000000000000000000000002000000FFFFFFFFFCFFFFFF4F00000000000000E6030000000000000200000004000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000029020000900500002D020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000004402000090050000D4020000000000002D02000090050000BD0200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFF02001200434D756C746950616E654672616D65576E640001009463000000D6010000E30700000604000001000000FFFFFFFF0200000000000000FFFFFFFF03000000C6000000B90500008F0700000180002000000100000063000000D6010000E307000006040000000000004F00000078000000E603000000000000404100560300000007436F6D6D616E6401000000C600000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF1343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC60000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 955 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + ..\UsrSrc\main.c + 0 + 52 + 57 + 1 + + 0 + + + ..\UsrSrc\userapp\userapp.c + 8 + 380 + 416 + 1 + + 0 + + + ..\UsrSrc\charger\charger_module.c + 2 + 140 + 152 + 1 + + 0 + + + ..\Src\startup\STARTUP.A51 + 0 + 118 + 126 + 1 + + 0 + + + ..\UsrInc\inc\define.h + 1 + 43 + 44 + 1 + + 0 + + + ..\UsrSrc\watchdog\watchdog.c + 0 + 39 + 95 + 1 + + 0 + + + ..\UsrSrc\timer\sys_tim.c + 0 + 97 + 105 + 1 + + 0 + + + ..\UsrSrc\vox_comm\vox_comm.c + 50 + 455 + 471 + 1 + + 0 + + + + +
diff --git a/Project/TP3102_Demo.uvopt b/Project/TP3102_Demo.uvopt new file mode 100644 index 0000000..286f244 --- /dev/null +++ b/Project/TP3102_Demo.uvopt @@ -0,0 +1,449 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x0 + MCS-51 + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + + 0 + Data Sheet + DATASHTS\CAST\CAST_R8051XC.PDF + + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 10 + + + + + + + + + + + BIN\SY8831.dll + + + + 0 + DLGDC51 + (94=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(81=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(1201=-1,-1,-1,-1,0)(90=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(5045=-1,-1,-1,-1,0)(5046=-1,-1,-1,-1,0)(5031=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(5015=-1,-1,-1,-1,0)(5160=-1,-1,-1,-1,0)(5057=-1,-1,-1,-1,0)(5166=-1,-1,-1,-1,0)(5164=-1,-1,-1,-1,0)(5165=-1,-1,-1,-1,0) + + + 0 + SY8831 + -S14 -B921600 -O1799 + + + 0 + DLGTC51 + + + + 0 + TP3102 + -S14 -B921600 -O1799 + + + + + + 0 + 1 + n_ADC_Plus,0x0A + + + 1 + 1 + n_Vbat_Data,0x0A + + + 2 + 1 + F_sys_tim_1s + + + 3 + 1 + Protect_Type_Flg + + + 4 + 1 + Decnt_SleepDelay + + + + + 1 + 0 + X:0 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Startup + 1 + 0 + 0 + 0 + + 1 + 1 + 2 + 0 + 0 + 0 + ..\Src\startup\STARTUP.A51 + STARTUP.A51 + 0 + 0 + + + + + UsrSrc + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\UsrSrc\main.c + main.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\UsrSrc\adc\adc.c + adc.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\UsrSrc\charger\charger_module.c + charger_module.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\UsrSrc\discharge\discharge_module.c + discharge_module.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ..\UsrSrc\gpio\gpio.c + gpio.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + ..\UsrSrc\hall\hall.c + hall.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + ..\UsrSrc\key\key.c + key.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + ..\UsrSrc\led\led.c + led.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + ..\UsrSrc\sleep\sleep.c + sleep.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + ..\UsrSrc\system\system.c + system.c + 0 + 0 + + + 2 + 12 + 1 + 0 + 0 + 0 + ..\UsrSrc\uart\uart.c + uart.c + 0 + 0 + + + 2 + 13 + 1 + 0 + 0 + 0 + ..\UsrSrc\userapp\userapp.c + userapp.c + 0 + 0 + + + 2 + 14 + 1 + 0 + 0 + 0 + ..\UsrSrc\vox\vox_module.c + vox_module.c + 0 + 0 + + + 2 + 15 + 1 + 0 + 0 + 0 + ..\UsrSrc\watchdog\watchdog.c + watchdog.c + 0 + 0 + + + 2 + 16 + 1 + 0 + 0 + 0 + ..\UsrSrc\bat\bat.c + bat.c + 0 + 0 + + + 2 + 17 + 1 + 0 + 0 + 0 + ..\UsrSrc\timer\sys_tim.c + sys_tim.c + 0 + 0 + + + +
diff --git a/Project/TP3102_Demo.uvproj b/Project/TP3102_Demo.uvproj new file mode 100644 index 0000000..6938ec6 --- /dev/null +++ b/Project/TP3102_Demo.uvproj @@ -0,0 +1,490 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x0 + MCS-51 + 0 + + + R8051XC + CAST, Inc. + IRAM(0-0xFF) CLOCK(24000000) MOD517DP MDU_R515 + + "LIB\STARTUP.A51" ("Standard 8051 Startup Code") + + 4129 + REG51XC.H + + + + + + + + + + + 0 + 0 + + + + Evatronix\ + Evatronix\ + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + mcu + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 1 + .\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\ + .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0 + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + 65535 + + + S8051.DLL + -PMW -DPC -BSE + DCore51.DLL + -pR8051XC -o38081BDBFFF + S8051.DLL + + TCore51.DLL + -pR8051XC + + + + 0 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + + 0 + 10 + + + + + + + + + + + + + + BIN\SY8831.dll + + + + + 0 + 0 + 0 + 0 + 0 + -1 + + 0 + + "" () + + + + + 0 + + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 9 + 2 + 0 + 1 + 0 + 0 + + + + + ..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Startup + + + STARTUP.A51 + 2 + ..\Src\startup\STARTUP.A51 + + + + + UsrSrc + + + main.c + 1 + ..\UsrSrc\main.c + + + adc.c + 1 + ..\UsrSrc\adc\adc.c + + + charger_module.c + 1 + ..\UsrSrc\charger\charger_module.c + + + discharge_module.c + 1 + ..\UsrSrc\discharge\discharge_module.c + + + gpio.c + 1 + ..\UsrSrc\gpio\gpio.c + + + hall.c + 1 + ..\UsrSrc\hall\hall.c + + + key.c + 1 + ..\UsrSrc\key\key.c + + + led.c + 1 + ..\UsrSrc\led\led.c + + + sleep.c + 1 + ..\UsrSrc\sleep\sleep.c + + + system.c + 1 + ..\UsrSrc\system\system.c + + + uart.c + 1 + ..\UsrSrc\uart\uart.c + + + userapp.c + 1 + ..\UsrSrc\userapp\userapp.c + + + vox_module.c + 1 + ..\UsrSrc\vox\vox_module.c + + + watchdog.c + 1 + ..\UsrSrc\watchdog\watchdog.c + + + bat.c + 1 + ..\UsrSrc\bat\bat.c + + + sys_tim.c + 1 + ..\UsrSrc\timer\sys_tim.c + + + + + + + + + + + <Project Info> + + + + + + 0 + 1 + + + + +
diff --git a/Project/test.txt b/Project/test.txt new file mode 100644 index 0000000..e69de29 diff --git a/Src/startup/STARTUP.A51 b/Src/startup/STARTUP.A51 new file mode 100644 index 0000000..ebc9b6a --- /dev/null +++ b/Src/startup/STARTUP.A51 @@ -0,0 +1,205 @@ +$NOMOD51 +;------------------------------------------------------------------------------ +; This file is part of the C51 Compiler package +; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc. +; Version 8.01 +; +; *** <<< Use Configuration Wizard in Context Menu >>> *** +;------------------------------------------------------------------------------ +; STARTUP.A51: This code is executed after processor reset. +; +; To translate this file use A51 with the following invocation: +; +; A51 STARTUP.A51 +; +; To link the modified STARTUP.OBJ file to your application use the following +; Lx51 invocation: +; +; Lx51 your object file list, STARTUP.OBJ controls +; +;------------------------------------------------------------------------------ +; +; User-defined Power-On Initialization of Memory +; +; With the following EQU statements the initialization of memory +; at processor reset can be defined: +; +; IDATALEN: IDATA memory size <0x0-0x100> +; Note: The absolute start-address of IDATA memory is always 0 +; The IDATA space overlaps physically the DATA and BIT areas. +IDATALEN EQU 100H +; +; XDATASTART: XDATA memory start address <0x0-0xFFFF> +; The absolute start address of XDATA memory +XDATASTART EQU 0 +; +; XDATALEN: XDATA memory size <0x0-0xFFFF> +; The length of XDATA memory in bytes. +XDATALEN EQU 0H +; +; PDATASTART: PDATA memory start address <0x0-0xFFFF> +; The absolute start address of PDATA memory +PDATASTART EQU 0H +; +; PDATALEN: PDATA memory size <0x0-0xFF> +; The length of PDATA memory in bytes. +PDATALEN EQU 0H +; +; +;------------------------------------------------------------------------------ +; +; Reentrant Stack Initialization +; +; The following EQU statements define the stack pointer for reentrant +; functions and initialized it: +; +; Stack Space for reentrant functions in the SMALL model. +; IBPSTACK: Enable SMALL model reentrant stack +; Stack space for reentrant functions in the SMALL model. +IBPSTACK EQU 0 ; set to 1 if small reentrant is used. +; IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF> +; Set the top of the stack to the highest location. +IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 +; +; +; Stack Space for reentrant functions in the LARGE model. +; XBPSTACK: Enable LARGE model reentrant stack +; Stack space for reentrant functions in the LARGE model. +XBPSTACK EQU 0 ; set to 1 if large reentrant is used. +; XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF> +; Set the top of the stack to the highest location. +XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1 +; +; +; Stack Space for reentrant functions in the COMPACT model. +; PBPSTACK: Enable COMPACT model reentrant stack +; Stack space for reentrant functions in the COMPACT model. +PBPSTACK EQU 0 ; set to 1 if compact reentrant is used. +; +; PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF> +; Set the top of the stack to the highest location. +PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 +; +; +;------------------------------------------------------------------------------ +; +; Memory Page for Using the Compact Model with 64 KByte xdata RAM +; Compact Model Page Definition +; +; Define the XDATA page used for PDATA variables. +; PPAGE must conform with the PPAGE set in the linker invocation. +; +; Enable pdata memory page initalization +PPAGEENABLE EQU 0 ; set to 1 if pdata object are used. +; +; PPAGE number <0x0-0xFF> +; uppermost 256-byte address of the page used for PDATA variables. +PPAGE EQU 0 +; +; SFR address which supplies uppermost address byte <0x0-0xFF> +; most 8051 variants use P2 as uppermost address byte +PPAGE_SFR DATA 0A0H +; +; +;------------------------------------------------------------------------------ + +; Standard SFR Symbols +ACC DATA 0E0H +B DATA 0F0H +SP DATA 81H +DPL DATA 82H +DPH DATA 83H +CKCON DATA 8EH +CLKPRE DATA 0D2H +PCON DATA 87H + + NAME ?C_STARTUP + + +?C_C51STARTUP SEGMENT CODE +?STACK SEGMENT IDATA + + RSEG ?STACK + DS 1 + + EXTRN CODE (?C_START) + PUBLIC ?C_STARTUP + + CSEG AT 0 +?C_STARTUP: LJMP STARTUP1 + + RSEG ?C_C51STARTUP + +STARTUP1: +;Set Wait State to 0x30 and CPU CLK Prescaler to 1 to Accelerate Startup + ;MOV PCON, #02H ;Enter Standby + MOV CKCON, #30H ;Wait State = 0x30 + MOV CLKPRE, #0 ;CLK Prescaler = 1 + +IF IDATALEN <> 0 + MOV R0,#IDATALEN - 1 + CLR A +IDATALOOP: MOV @R0,A + DJNZ R0,IDATALOOP +ENDIF + +IF XDATALEN <> 0 + MOV DPTR,#XDATASTART + MOV R7,#LOW (XDATALEN) + IF (LOW (XDATALEN)) <> 0 + MOV R6,#(HIGH (XDATALEN)) +1 + ELSE + MOV R6,#HIGH (XDATALEN) + ENDIF + CLR A +XDATALOOP: MOVX @DPTR,A + INC DPTR + DJNZ R7,XDATALOOP + DJNZ R6,XDATALOOP +ENDIF + +IF PPAGEENABLE <> 0 + MOV PPAGE_SFR,#PPAGE +ENDIF + +IF PDATALEN <> 0 + MOV R0,#LOW (PDATASTART) + MOV R7,#LOW (PDATALEN) + CLR A +PDATALOOP: MOVX @R0,A + INC R0 + DJNZ R7,PDATALOOP +ENDIF + +IF IBPSTACK <> 0 +EXTRN DATA (?C_IBP) + + MOV ?C_IBP,#LOW IBPSTACKTOP +ENDIF + +IF XBPSTACK <> 0 +EXTRN DATA (?C_XBP) + + MOV ?C_XBP,#HIGH XBPSTACKTOP + MOV ?C_XBP+1,#LOW XBPSTACKTOP +ENDIF + +IF PBPSTACK <> 0 +EXTRN DATA (?C_PBP) + MOV ?C_PBP,#LOW PBPSTACKTOP +ENDIF + + MOV SP,#?STACK-1 + +; This code is required if you use L51_BANK.A51 with Banking Mode 4 +; Code Banking +; Select Bank 0 for L51_BANK.A51 Mode 4 +#if 0 +; Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4. +EXTRN CODE (?B_SWITCH0) + CALL ?B_SWITCH0 ; init bank mechanism to code bank 0 +#endif +; + LJMP ?C_START + + END diff --git a/TP3310_Demo.si4project/Backup/adc(1863).h b/TP3310_Demo.si4project/Backup/adc(1863).h new file mode 100644 index 0000000..8d8c729 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(1863).h @@ -0,0 +1,54 @@ +/* + ****************************************************************************** + * + * @file adc.h + * @brief adc module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __ADC_H__ +#define __ADC_H__ + +#include "define.h" + +#define VREF 1000 + +//extern idata uint16_t g_VREF_Value; //IREF ϵͳϵʱɼһΡ + +typedef enum { + ADC_CH0 = 0x00, + ADC_CH1, + ADC_CH2, + ADC_CH3, + ADC_CH4, +}ADC_CHANNELS_E; + + + +#if ADC_ENABLE + +extern void Adc_Init(void); + +extern uint16_t Vref_AdcValue(void); + +extern uint16_t Vbat_Value(void); + +extern uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn); + +#endif + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/adc(3747).c b/TP3310_Demo.si4project/Backup/adc(3747).c new file mode 100644 index 0000000..3f5bcca --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(3747).c @@ -0,0 +1,175 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Vbat_Adc = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) +* +* Description : ȡӦͨĵѹADCֵ +* +* Arguments : NONE + +* Returns : adc Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ + +uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; +#ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); +#endif + adc_data = 0; + } + + adc_data = adc_plus_data >> 3; + +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); +#endif + + return adc_data; +} + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint8_t index = 0; + uint16_t n_Vbat_Data = 0; + uint16_t n_ADC_Plus = 0; + + n_Vbat_Data = ADC_Chn_Data(ADC_BAT); + +#ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + + n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //ȡVREF + + n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / n_ADC_Plus; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, n_ADC_Plus); +#endif + + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_NTC_Value(void) +* +* Description : ȡNTCѹ + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#ifdef ADC_NTC_ENABLE + +uint16_t ADC_NTC_Value(void) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + adc_data = ADC_Chn_Data(ADC_CH0); + +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + adc_plus_data = ADC_Chn_Data(ADC_VREF); //ȡVREF + + adc_data = (uint32_t)(adc_data) * VREF / adc_plus_data; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); +#endif + + return adc_data; +} +#endif + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(3991).c b/TP3310_Demo.si4project/Backup/adc(3991).c new file mode 100644 index 0000000..388112c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(3991).c @@ -0,0 +1,277 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t g_VREF_Value = 0; //IREF ϵͳϵʱɼһΡ + +idata uint16_t Vbat_Adc = 0; + +idata uint16_t VNTC_Adc = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Adc_Init(void) + * + * Description : ADC Initialization. --- ϵͳʼá + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +void Adc_Init(void) +{ +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA &= 0x3F; + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + + //g_VREF_Value = Vref_AdcValue(); + //g_VREF_Value = 311; +} + +#if 1 +/* +******************************************************************************* +* uint16_t Vref_AdcValue(void) +* +* Description : Vref Value.ȡ׼οѹADCֵϵͳϵɼһΡ +* +* Arguments : NONE + +* Returns : Iref Value (mA) + +* Notes : NONE +* +******************************************************************************* +*/ + +uint16_t Vref_AdcValue(void) +{ + uint8_t index = 0; + uint16_t n_Vref_Data = 0; + uint16_t n_ADC_Plus = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B -- ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = 0x61; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vref_Data = ADC_DATL; + + n_Vref_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vref_Data; + + n_Vref_Data = 0; + } + + n_Vref_Data = (n_ADC_Plus / 8); + + return n_Vref_Data; +} + + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint8_t index = 0; + uint16_t n_Vbat_Data = 0; + uint16_t n_ADC_Plus = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = 0x51; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vbat_Data = ADC_DATL; + + n_Vbat_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vbat_Data; +#ifdef _DEBUG_ADC + printf("Vbat:%d,plus:%d.\r\n",(uint16_t)n_Vbat_Data,(uint16_t)n_ADC_Plus); +#endif + n_Vbat_Data = 0; + } + + n_Vbat_Data = ( n_ADC_Plus / 4 ); //VbatֵΪѹֵ +#ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + + g_VREF_Value = Vref_AdcValue(); //ȡVREF + + n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, g_VREF_Value); +#endif + + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +* +* Description : ADC_Chn_Value. ADC0 ~ ADC4 + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#if ADC_CHN_ENABLE + +uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; +#ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); +#endif + adc_data = 0; + } + + adc_data = adc_plus_data / 8; +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + g_VREF_Value = Vref_AdcValue(); //ȡVREF + + adc_plus_data = (uint32_t)(adc_data) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_plus_data, (uint16_t)g_VREF_Value); +#endif + + return adc_plus_data; +} +#endif +#else + +void ADC_Value_Machine(void) +{ + uint8_t i = 0; + uint8_t index = 0; + uint16_t adc_data[8] = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x83; //0x83--ADC EN; Successive mode; ADC CLK divided by 24=460k + + for(i=0; i<7; i++) + { + ADC_CTL1 = (i << 4); //Channel set + ADC_CTL1 |= 1; //Start conversion + + for(index=0; index<8; index++) + { + while( !(IRQ_FLAG10 & 0x01) ); //Wait for conversion complete + IRQ_FLAG10 = 1; //Write 1 to clear + + adc_data[i] = ADC_DATL; //Read low byte first! + + adc_data[i] = adc_data[i] + (u16)(ADC_DATH << 8); + } + + ADC_CTL1 &= 0xFE; //Stop conversion + IRQ_FLAG10 = 1; //Write 1 to clear--Clear possible flag before stop conversion!!! + } + + g_VREF_Value = adc_data[6] / 8; + + Vbat_Adc = (uint32_t)(adc_data[5] / 4) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref + + VNTC_Adc = (uint32_t)(adc_data[4] / 8) * VREF / g_VREF_Value; //Vadx = VREF*DATAadx/DATAvref; + +} +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(4033).c b/TP3310_Demo.si4project/Backup/adc(4033).c new file mode 100644 index 0000000..5261c6b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(4033).c @@ -0,0 +1,173 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Vbat_Adc = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) +* +* Description : ȡӦͨĵѹADCֵ +* +* Arguments : NONE + +* Returns : adc Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ + +uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; +#ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); +#endif + // adc_data = 0; + } + + adc_data = adc_plus_data >> 3; + +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); +#endif + + return adc_data; +} + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint16_t n_Vbat_Data = 0; + //uint16_t n_ADC_Plus = 0; + + n_Vbat_Data = ADC_Chn_Data(ADC_BAT); + +#ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + +// n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //ȡVREF + + n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("bat,Vbat:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_NTC_Value(void) +* +* Description : ȡNTCѹ + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#ifdef ADC_NTC_ENABLE + +uint16_t ADC_NTC_Value(void) +{ + uint16_t adc_data = 0; +// uint16_t adc_plus_data = 0; + + adc_data = ADC_Chn_Data(ADC_CH0); + +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif +// adc_plus_data = ADC_Chn_Data(ADC_VREF); //ȡVREF + + adc_data = (uint32_t)(adc_data) * VREF / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d.\r\n", (uint16_t)adc_data); +#endif + + return adc_data; +} +#endif + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(4064).c b/TP3310_Demo.si4project/Backup/adc(4064).c new file mode 100644 index 0000000..e57b69a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(4064).c @@ -0,0 +1,203 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Vbat_Adc = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* uint16_t Vref_AdcValue(void) +* +* Description : Vref Value.ȡ׼οѹADCֵ +* +* Arguments : NONE + +* Returns : Iref Value (mA) + +* Notes : NONE +* +******************************************************************************* +*/ + +static uint16_t Vref_AdcValue(void) +{ + uint8_t index = 0; + uint16_t n_Vref_Data = 0; + uint16_t n_ADC_Plus = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B -- ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = 0x61; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vref_Data = ADC_DATL; + + n_Vref_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vref_Data; + + n_Vref_Data = 0; + } + + n_Vref_Data = (n_ADC_Plus / 8); + + return n_Vref_Data; +} + + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint8_t index = 0; + uint16_t n_Vbat_Data = 0; + uint16_t n_ADC_Plus = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = 0x51; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vbat_Data = ADC_DATL; + + n_Vbat_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vbat_Data; +#ifdef _DEBUG_ADC + printf("Vbat:%d,plus:%d.\r\n",(uint16_t)n_Vbat_Data,(uint16_t)n_ADC_Plus); +#endif + n_Vbat_Data = 0; + } + + n_Vbat_Data = ( n_ADC_Plus / 4 ); //VbatֵΪѹֵ +#ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + + n_ADC_Plus = Vref_AdcValue(); //ȡVREF + + n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF / n_ADC_Plus; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, n_ADC_Plus); +#endif + + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +* +* Description : ADC_Chn_Value. ADC0 ~ ADC4 + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#if ADC_CHN_ENABLE + +uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; +#ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); +#endif + adc_data = 0; + } + + adc_data = adc_plus_data / 8; +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + adc_plus_data = Vref_AdcValue(); //ȡVREF + + adc_data = (uint32_t)(adc_data) * VREF / adc_plus_data; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); +#endif + + return adc_data; +} +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(4158).h b/TP3310_Demo.si4project/Backup/adc(4158).h new file mode 100644 index 0000000..fe70753 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(4158).h @@ -0,0 +1,51 @@ +/* + ****************************************************************************** + * + * @file adc.h + * @brief adc module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __ADC_H__ +#define __ADC_H__ + +#include "define.h" + +#if ADC_ENABLE + +#define VREF 1000 + +extern idata uint16_t Vbat_Adc; + +extern uint16_t Vbat_Value(void); + +#if ADC_CHN_ENABLE + +typedef enum { + ADC_CH0 = 0x00, + ADC_CH1, + ADC_CH2, + ADC_CH3, + ADC_CH4, +}ADC_CHANNELS_E; + +extern uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn); + +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(4706).h b/TP3310_Demo.si4project/Backup/adc(4706).h new file mode 100644 index 0000000..f27ca3c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(4706).h @@ -0,0 +1,55 @@ +/* + ****************************************************************************** + * + * @file adc.h + * @brief adc module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __ADC_H__ +#define __ADC_H__ + +#include "define.h" + +#if ADC_ENABLE + +#define VREF 1000 + +//extern idata uint16_t g_VREF_Value; //IREF ϵͳϵʱɼһΡ + +extern uint16_t Vbat_Value(void); + +extern void Adc_Init(void); + +extern uint16_t Vref_AdcValue(void); + +#if ADC_CHN_ENABLE + +typedef enum { + ADC_CH0 = 0x00, + ADC_CH1, + ADC_CH2, + ADC_CH3, + ADC_CH4, +}ADC_CHANNELS_E; + +extern uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn); + +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(5034).c b/TP3310_Demo.si4project/Backup/adc(5034).c new file mode 100644 index 0000000..0fbd002 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(5034).c @@ -0,0 +1,203 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Vbat_Adc = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* uint16_t Vref_AdcValue(void) +* +* Description : Vref Value.ȡ׼οѹADCֵϵͳϵɼһΡ +* +* Arguments : NONE + +* Returns : Iref Value (mA) + +* Notes : NONE +* +******************************************************************************* +*/ + +static uint16_t Vref_AdcValue(void) +{ + uint8_t index = 0; + uint16_t n_Vref_Data = 0; + uint16_t n_ADC_Plus = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B -- ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = 0x61; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vref_Data = ADC_DATL; + + n_Vref_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vref_Data; + + n_Vref_Data = 0; + } + + n_Vref_Data = (n_ADC_Plus / 8); + + return n_Vref_Data; +} + + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint8_t index = 0; + uint16_t n_Vbat_Data = 0; + uint16_t n_ADC_Plus = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = 0x51; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vbat_Data = ADC_DATL; + + n_Vbat_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vbat_Data; +#ifdef _DEBUG_ADC + printf("Vbat:%d,plus:%d.\r\n",(uint16_t)n_Vbat_Data,(uint16_t)n_ADC_Plus); +#endif + n_Vbat_Data = 0; + } + + n_Vbat_Data = ( n_ADC_Plus / 4 ); //VbatֵΪѹֵ +#ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + + n_ADC_Plus = Vref_AdcValue(); //ȡVREF + + n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF / n_ADC_Plus; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("bat,Vbat:%d,vref:%d.\r\n",(uint16_t)n_Vbat_Data, n_ADC_Plus); +#endif + + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +* +* Description : ADC_Chn_Value. ADC0 ~ ADC4 + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#if ADC_CHN_ENABLE + +uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; +#ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); +#endif + adc_data = 0; + } + + adc_data = adc_plus_data / 8; +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + adc_plus_data = Vref_AdcValue(); //ȡVREF + + adc_data = (uint32_t)(adc_data) * VREF / adc_plus_data; //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); +#endif + + return adc_data; +} +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/adc(5134).c b/TP3310_Demo.si4project/Backup/adc(5134).c new file mode 100644 index 0000000..7d900e7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(5134).c @@ -0,0 +1,214 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t g_VREF_Value = 0; //IREF ϵͳϵʱɼһΡ + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +******************************************************************************* +* uint16_t Vref_AdcValue(void) +* +* Description : Vref Value.ȡ׼οѹADCֵϵͳϵɼһΡ +* +* Arguments : NONE + +* Returns : Iref Value (mA) + +* Notes : NONE +* +******************************************************************************* +*/ +uint16_t Vref_AdcValue(void) +{ + uint16_t n_Vref_Data = 0; + uint32_t n_ADC_Plus = 0; + uint8_t index = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = (0x06 << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vref_Data = ADC_DATL; + + n_Vref_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vref_Data; + + n_Vref_Data = 0; + } + + n_Vref_Data = (uint16_t)(n_ADC_Plus / 8); + + return n_Vref_Data; +} + +/* + ******************************************************************************* + * void Adc_Init(void) + * + * Description : ADC Initialization. --- ϵͳʼá + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +void Adc_Init(void) +{ +#if 0 + SFRADDR = MFP_CTL0; //Set P01 Pinmux As AD1 Function + SFRDATA &= 0xCF; + SFRDATA |= 0x20; +#endif +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P04 Pinmux As AD3 Function + SFRDATA = 0x02; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x08; +#endif + g_VREF_Value = Vref_AdcValue(); +} + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint16_t n_Vbat_Data = 0; + uint32_t n_ADC_Plus = 0; + uint8_t index = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for( index=0; index<8; index++ ) + { + ADC_CTL1 = (0x05 << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vbat_Data = ADC_DATL; + + n_Vbat_Data |= (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vbat_Data; + + n_Vbat_Data = 0; + } + + n_Vbat_Data = (uint16_t)(n_ADC_Plus / 4); //VbatֵΪѹֵ + + n_Vbat_Data = (uint32_t)( (VREF * n_Vbat_Data) / g_VREF_Value ); //Vadx = VREF*DATAadx/DATAvref +#ifdef _DEBUG_ADC + printf("Get Adc Value,Vbat:%d,Vref:%d.\r\n",(uint16_t)n_Vbat_Data, (uint16_t)g_VREF_Value); +#endif + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +* +* Description : ADC_Chn_Value. ADC0 ~ ADC4 + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#if ADC_CHN_ENABLE +uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t Vadx_data = 0; + uint32_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; + + adc_data = 0; + } + + adc_data = adc_plus_data / 8; + + Vadx_data = (uint32_t)( (VREF * adc_data) / g_VREF_Value ); //Vadx = VREF*DATAadx/DATAvref +#ifdef _DEBUG_ADC + printf("Get Adc Value,Adc_Chn:%d,Vadc:%d,Vref:%d.\r\n", (uint16_t)(ADC_CTL1>>4), (uint16_t)Vadx_data, (uint16_t)g_VREF_Value); +#endif + return (uint16_t)Vadx_data; +} +#endif + +#endif diff --git a/TP3310_Demo.si4project/Backup/adc(6650).c b/TP3310_Demo.si4project/Backup/adc(6650).c new file mode 100644 index 0000000..2dd8f3d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(6650).c @@ -0,0 +1,221 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t g_VREF_Value = 0; //IREF ϵͳϵʱɼһΡ + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +******************************************************************************* +* uint16_t Vref_AdcValue(void) +* +* Description : Vref Value.ȡ׼οѹADCֵϵͳϵɼһΡ +* +* Arguments : NONE + +* Returns : Iref Value (mA) + +* Notes : NONE +* +******************************************************************************* +*/ +#if ADC_ENABLE +uint16_t Vref_AdcValue(void) +{ + uint16_t n_Vref_Data = 0; + uint32_t n_ADC_Plus = 0; + uint8_t index = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0;index<8;index++) + { + ADC_CTL1 = (0x06 << 4); //Channel set + ADC_CTL1 |= 1; //Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vref_Data = ADC_DATL; + + n_Vref_Data += (uint16_t)(ADC_DATH<< 8); + + n_ADC_Plus += n_Vref_Data; + + n_Vref_Data = 0; + } + + n_Vref_Data = n_ADC_Plus / 8; +#ifdef _DEBUG_ADC + printf("Get Adc Value,Vref:%d \r\n",(uint16_t)n_Vref_Data); +#endif + return n_Vref_Data; +} +#endif +/* + ******************************************************************************* + * void Adc_Init(void) + * + * Description : ADC Initialization. --- ϵͳʼá + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if ADC_ENABLE +void Adc_Init(void) +{ +#if 0 + SFRADDR = MFP_CTL0; //Set P01 Pinmux As AD1 Function + SFRDATA &= 0xCF; + SFRDATA |= 0x20; + + SFRADDR = MFP_CTL1; //Set P04 Pinmux As AD3 Function + SFRDATA |= 0x02; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x0A; +#endif + g_VREF_Value = Vref_AdcValue(); +} +#endif +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + #if ADC_ENABLE + uint16_t Vbat_Value(void) + { + uint16_t n_Vbat_Data = 0; + uint32_t n_ADC_Plus = 0; + uint8_t index = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0;index<8;index++) + { + ADC_CTL1 = (0x05 << 4); //Channel set + ADC_CTL1 |= 1; //Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + n_Vbat_Data = ADC_DATL; + + n_Vbat_Data += (uint16_t)(ADC_DATH << 8); + + n_ADC_Plus += n_Vbat_Data; + + n_Vbat_Data = 0; + } + + n_Vbat_Data = n_ADC_Plus / 4; //VbatֵΪѹֵ + + n_Vbat_Data = (uint32_t)(VREF * n_Vbat_Data / g_VREF_Value); //Vadx = VREF*DATAadx/DATAvref +#ifdef _DEBUG_ADC + printf("Get Adc Value,Vbat:%d \r\n",(uint16_t)n_Vbat_Data); +#endif + return n_Vbat_Data; + } +#endif + +/* +******************************************************************************* +* uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +* +* Description : ADC_Chn_Value. ADC0 ~ ADC4 + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#if ADC_ENABLE +uint16_t ADC_Chn_Value(ADC_CHANNELS_E adc_chn) +{ + + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t Vadx_data = 0; + uint32_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4); //Channel set + ADC_CTL1 |= 1; //Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! + + adc_data += (u16)(ADC_DATH << 8); + + adc_plus_data += adc_data; + + adc_data = 0; + } + + adc_data = adc_plus_data / 8; + + Vadx_data = (uint32_t)(VREF * adc_data / g_VREF_Value); //Vadx = VREF*DATAadx/DATAvref +#ifdef _DEBUG_ADC + printf("Get Adc Value,Adc_Chn:%d,Adc:%d \r\n",ADC_CTL1>>4,Vadx_data); +#endif + return (uint16_t)Vadx_data; +} +#endif + + diff --git a/TP3310_Demo.si4project/Backup/adc(6747).h b/TP3310_Demo.si4project/Backup/adc(6747).h new file mode 100644 index 0000000..fb16df3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/adc(6747).h @@ -0,0 +1,53 @@ +/* + ****************************************************************************** + * + * @file adc.h + * @brief adc module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __ADC_H__ +#define __ADC_H__ + +#include "define.h" + +#if ADC_ENABLE + +#define VREF 1000 + +extern idata uint16_t Vbat_Adc; + +extern uint16_t Vbat_Value(void); + +typedef enum { + ADC_CH0 = 0x00, + ADC_CH1, + ADC_CH2, + ADC_CH3, + ADC_CH4, + ADC_BAT, + ADC_VREF, +}ADC_CHANNELS_E; + +#ifdef ADC_NTC_ENABLE + +extern uint16_t ADC_NTC_Value(void); + +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/bat(1019).c b/TP3310_Demo.si4project/Backup/bat(1019).c new file mode 100644 index 0000000..78e93f9 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(1019).c @@ -0,0 +1,127 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +idata uint8_t bat_level = 0; + +#if BAT_VALUE + +#define C_offset_bat_level_MAX 50 +#define C_offset_bat_level_MIN 10 + +#define C_bat_level_protect 0 +#define C_bat_level_lowpower 1 + +bit F_batlevel_low ; //صѹ +bit F_batlevel_protect ; +idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + + +#define C_batLevel_SetMax 10 + +/*صѹḡ,ѹҪԡ*/ +const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] = +{ + 3000, //1 + 3100, //2 + 3300, //3 + 3400, //4 + 3500, //5 + 3650, //6 + 3800, //7 + 3900, //8 + 4050, //9 + 4200 //10 +}; + +const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] = +{ + 3050, //1 + 3150, //2 + 3350, //3 + 3450, //4 + 3550, //5 + 3700, //6 + 3850, //7 + 3950, //8 + 4100, //9 + 4200 //10 +}; + +void check_bat_level(void) +{ + uint8_t i = 0; + //get bat level +#if ADC_ENABLE + for(i=0; i < C_batLevel_SetMax; i++) + { + if(CHIP_STA4 & 0x80) // + { + if( Vbat_Adc < Charging_batlevel_Threshold1[i] ) + break; + } + else //ŵ + { + if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + { + break; + } + } + } +#endif + + if( i > bat_level ) + { + offset_bat_level++; + } + else + { + offset_bat_level--; + } + + //debounce + if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) ) + { + //update + bat_level = i; + offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + } + + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect + 1 ) ) + { + F_batlevel_protect = 0; + } + + if( bat_level <= C_bat_level_lowpower ) + { + F_batlevel_low = 1; + } + else if( bat_level > (C_bat_level_lowpower + 1) ) + { + F_batlevel_low = 0; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/bat(261).h b/TP3310_Demo.si4project/Backup/bat(261).h new file mode 100644 index 0000000..5e9d44c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(261).h @@ -0,0 +1,38 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" +extern idata uint8_t bat_level; +extern bit F_batlevel_low; //صѹ + +#if BAT_VALUE + + +extern bit F_batlevel_protect; //͵籣 + +extern void check_bat_level(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/bat(4532).c b/TP3310_Demo.si4project/Backup/bat(4532).c new file mode 100644 index 0000000..95cd38f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(4532).c @@ -0,0 +1,128 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +idata uint8_t bat_level = 0; +bit F_batlevel_low = 0; //صѹ + +#if BAT_VALUE + +#define C_offset_bat_level_MAX 50 +#define C_offset_bat_level_MIN 10 + +#define C_bat_level_protect 0 +#define C_bat_level_lowpower 1 + + +bit F_batlevel_protect = 0; //͵籣 +idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + + +#define C_batLevel_SetMax 10 + +/*صѹḡ,ѹҪԡ*/ +const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] = +{ + 3000, //1 + 3100, //2 + 3300, //3 + 3400, //4 + 3500, //5 + 3650, //6 + 3800, //7 + 3900, //8 + 4050, //9 + 4200 //10 +}; + +const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] = +{ + 3050, //1 + 3150, //2 + 3350, //3 + 3450, //4 + 3550, //5 + 3700, //6 + 3850, //7 + 3950, //8 + 4100, //9 + 4200 //10 +}; + +void check_bat_level(void) +{ + uint8_t i = 0; + //get bat level +#if ADC_ENABLE + for(i=0; i < C_batLevel_SetMax; i++) + { + if(CHIP_STA4 & 0x80) // + { + if( Vbat_Adc < Charging_batlevel_Threshold1[i] ) + break; + } + else //ŵ + { + if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + { + break; + } + } + } +#endif + + if( i > bat_level ) + { + offset_bat_level++; + } + else + { + offset_bat_level--; + } + + //debounce + if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) ) + { + //update + bat_level = i; + offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + } + + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect + 1 ) ) + { + F_batlevel_protect = 0; + } + + if( bat_level <= C_bat_level_lowpower ) + { + F_batlevel_low = 1; + } + else if( bat_level > (C_bat_level_lowpower + 1) ) + { + F_batlevel_low = 0; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/bat(5818).c b/TP3310_Demo.si4project/Backup/bat(5818).c new file mode 100644 index 0000000..df1d3c4 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(5818).c @@ -0,0 +1,95 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +#if BAT_VALUE + +#define C_offset_bat_level_MAX 50 +#define C_offset_bat_level_MIN 10 + +#define C_bat_level_protect 0 +#define C_bat_level_lowpower 1 + +bit F_batlevel_low ; +bit F_batlevel_protect ; +idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + +idata uint8_t bat_level = 0; +#define C_batLevel_SetMax 5 + + +const uint16_t C_batlevel_Threshold[C_batLevel_SetMax] = +{ + 3000, //1 + 3300, //2 + 3650, //3 + 4000, //4 + 4200 //5 +}; + +void check_bat_level(void) +{ + uint8_t i = 0; + //get bat level +#if ADC_ENABLE + for(i=0; i < C_batLevel_SetMax; i++) + { + if( Vbat_Adc < C_batlevel_Threshold[i] ) + break; + } +#endif + if( i > bat_level ) + { + offset_bat_level ++; + } + else + { + offset_bat_level --; + } + + //debounce + if( (offset_bat_level >C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) ) + { + //update + bat_level = i; + offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + } + + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect+1 ) ) + { + F_batlevel_protect = 0; + } + + if( bat_level <= C_bat_level_lowpower ) + { + F_batlevel_low = 1; + } + else if( bat_level > (C_bat_level_lowpower+1) ) + { + F_batlevel_low = 0; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/bat(5988).h b/TP3310_Demo.si4project/Backup/bat(5988).h new file mode 100644 index 0000000..71dcdbe --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(5988).h @@ -0,0 +1,35 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" +extern idata uint8_t bat_level; + +#if BAT_VALUE + + +extern void check_bat_level(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/bat(6162).h b/TP3310_Demo.si4project/Backup/bat(6162).h new file mode 100644 index 0000000..4365c73 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(6162).h @@ -0,0 +1,28 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" +//extern idata uint8_t bat_level; + +#endif + diff --git a/TP3310_Demo.si4project/Backup/bat(6540).c b/TP3310_Demo.si4project/Backup/bat(6540).c new file mode 100644 index 0000000..1281f69 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(6540).c @@ -0,0 +1,24 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +//idata uint8_t bat_level = 0; + diff --git a/TP3310_Demo.si4project/Backup/bat(6790).h b/TP3310_Demo.si4project/Backup/bat(6790).h new file mode 100644 index 0000000..8272834 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(6790).h @@ -0,0 +1,30 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" +extern idata uint8_t bat_level; + + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/bat(6814).h b/TP3310_Demo.si4project/Backup/bat(6814).h new file mode 100644 index 0000000..6438134 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(6814).h @@ -0,0 +1,34 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" + +#if BAT_VALUE + +extern idata uint8_t bat_level; +extern void check_bat_level(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/bat(7674).c b/TP3310_Demo.si4project/Backup/bat(7674).c new file mode 100644 index 0000000..eea17e1 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(7674).c @@ -0,0 +1,93 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +#if BAT_VALUE + +#define C_offset_bat_level_MAX 50 +#define C_offset_bat_level_MIN 10 + +#define C_bat_level_protect 0 +#define C_bat_level_lowpower 1 + +bit F_batlevel_low ; +bit F_batlevel_protect ; +idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + +idata uint8_t bat_level = 0; +#define C_batLevel_SetMax 5 + + +const uint16_t C_batlevel_Threshold[C_batLevel_SetMax] = +{ + 2900, //1 + 3300, //2 + 3450, //3 + 4200, //4 + 4500 //5 +}; + +void check_bat_level(void) +{ + uint8_t i = 0; + //get bat level + for(i=0; i < C_batLevel_SetMax; i++) + { + if(Vbat_Adc < C_batlevel_Threshold[i]) + break; + } + if(i > bat_level) + { + offset_bat_level ++; + } + else + { + offset_bat_level --; + } + + //debounce + if((offset_bat_level >C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN)) + { + //update + bat_level = i; + offset_bat_level = (C_offset_bat_level_MAX+C_offset_bat_level_MIN)/2; + } + + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect+1 ) ) + { + F_batlevel_protect = 0; + } + + if( bat_level <= C_bat_level_lowpower ) + { + F_batlevel_low = 1; + } + else if( bat_level > (C_bat_level_lowpower+1) ) + { + F_batlevel_low = 0; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/bat(770).c b/TP3310_Demo.si4project/Backup/bat(770).c new file mode 100644 index 0000000..30e64cb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(770).c @@ -0,0 +1,24 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +idata uint8_t bat_level = 0; + diff --git a/TP3310_Demo.si4project/Backup/bat(7882).h b/TP3310_Demo.si4project/Backup/bat(7882).h new file mode 100644 index 0000000..4b2cff8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(7882).h @@ -0,0 +1,37 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" +extern idata uint8_t bat_level; + +#if BAT_VALUE + +extern bit F_batlevel_low; //صѹ +extern bit F_batlevel_protect; //͵籣 + +extern void check_bat_level(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/bat(8043).c b/TP3310_Demo.si4project/Backup/bat(8043).c new file mode 100644 index 0000000..4d86bf5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/bat(8043).c @@ -0,0 +1,127 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +idata uint8_t bat_level = 0; + +#if BAT_VALUE + +#define C_offset_bat_level_MAX 50 +#define C_offset_bat_level_MIN 10 + +#define C_bat_level_protect 0 +#define C_bat_level_lowpower 1 + +bit F_batlevel_low = 0; //صѹ +bit F_batlevel_protect = 0; //͵籣 +idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + + +#define C_batLevel_SetMax 10 + +/*صѹḡ,ѹҪԡ*/ +const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] = +{ + 3000, //1 + 3100, //2 + 3300, //3 + 3400, //4 + 3500, //5 + 3650, //6 + 3800, //7 + 3900, //8 + 4050, //9 + 4200 //10 +}; + +const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] = +{ + 3050, //1 + 3150, //2 + 3350, //3 + 3450, //4 + 3550, //5 + 3700, //6 + 3850, //7 + 3950, //8 + 4100, //9 + 4200 //10 +}; + +void check_bat_level(void) +{ + uint8_t i = 0; + //get bat level +#if ADC_ENABLE + for(i=0; i < C_batLevel_SetMax; i++) + { + if(CHIP_STA4 & 0x80) // + { + if( Vbat_Adc < Charging_batlevel_Threshold1[i] ) + break; + } + else //ŵ + { + if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + { + break; + } + } + } +#endif + + if( i > bat_level ) + { + offset_bat_level++; + } + else + { + offset_bat_level--; + } + + //debounce + if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) ) + { + //update + bat_level = i; + offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + } + + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect + 1 ) ) + { + F_batlevel_protect = 0; + } + + if( bat_level <= C_bat_level_lowpower ) + { + F_batlevel_low = 1; + } + else if( bat_level > (C_bat_level_lowpower + 1) ) + { + F_batlevel_low = 0; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/charger_module(151).c b/TP3310_Demo.si4project/Backup/charger_module(151).c new file mode 100644 index 0000000..468a521 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(151).c @@ -0,0 +1,294 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata TE_CHG_STA ChgStatus; // ϵͳ״̬ + +#ifdef ADC_NTC_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#ifdef ADC_NTC_ENABLE + + NTC_Adc = ADC_NTC_Value(); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ +#if 1 + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + IRQ_FLAG9 = 0x10; //δ磬Charg complete interruptж + ChgStatus = CHG_STA_PULLOUT; + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + { + CHG_CTL &= ~0x01; //Disable Charger + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x0C; + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + return; + } + else /*δʱPlugPlugin\Plugout int*/ + { + if( IRQ_FLAG10 & 0xC0 ) + { + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + } + + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { + return; + } + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + //CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + ChgStatus = CHG_STA_COMPLETED; + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + ChgStatus = CHG_STA_ING; + } +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(1631).c b/TP3310_Demo.si4project/Backup/charger_module(1631).c new file mode 100644 index 0000000..c4bbd39 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(1631).c @@ -0,0 +1,288 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +//idata TE_CHG_STA ChgStatus; // ϵͳ״̬ + +bit Charger_Done = 0; + +#ifdef ADC_NTC_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 100msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ + #ifdef ADC_NTC_ENABLE +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + + NTC_Adc = ADC_NTC_Value(); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return TRUE; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + + return NTC_Flag; +} +#endif +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ +#if 1 + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + IRQ_FLAG9 = 0x10; //δ磬Charg complete interruptж + Charger_Done = 0; + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + { + CHG_CTL &= ~0x01; //Disable Charger + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x0C; + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + return; + } + else /*δʱPlugPlugin\Plugout int*/ + { + if( IRQ_FLAG10 & 0xC0 ) + { + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + } + +#ifdef ADC_NTC_ENABLE + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { + return; + } +#endif + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + //CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + Charger_Done = 1; + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + Charger_Done = 0; + } +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(1740).c b/TP3310_Demo.si4project/Backup/charger_module(1740).c new file mode 100644 index 0000000..b34194b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(1740).c @@ -0,0 +1,415 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +bit Charger_Done = 0; + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + //SFRADDR = PMU_CTL1; + //SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ +// REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ +// REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +#if SET_CHG_TIM + /* Set Charge Time*/ + Set_Charger_Time(); + +#endif + + CHG_CTL &= ~0x80; +} +#endif +/* + ******************************************************************************* + * void Set_Charge_Time(void) + * + * Description : Set Charger Time + * + * Arguments : void + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +#if SET_CHG_TIM +void Set_Charger_Time(void) +{ + CHG_CTL &= 0xF0; + CHG_CTL |= 0x10; //Safety timer enable + CHG_CTL |= 0x01 << 3; //ʱ䣺0:1 hour;1:2:hours + + CHG_CTL |= 0x03 << 2; //úѹʱ:00:3 hours;01:5 hours;10:8 hours;11:13 hours + +} +#endif +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE + + NTC_Adc = ADC_Chn_Value(ADC_CH4); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + NTC_Flag = TRUE; + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + +#ifdef _DEBUG_CHARGER + printf("NTC Pro!NTC_Adc:%d,CHG_CTL:0x%x,(line:%d)\r\n",(uint16)NTC_Adc,(uint16)CHG_CTL,(uint16)__LINE__); +#endif + NTC_Flag = FALSE; + } + } + } +#endif + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Protect_Handle(void) + * + * Description : Charger Protect Handle( UVLO ѹعѹض·NTC ±ICH ·) + * + * Arguments : NONE + + * Returns :uint8_t Protect_Type_Flg (bit0~bit8ֱͬı͡) + + * Notes : NONE + * + ******************************************************************************* + */ + uint8_t Charger_Protect_Handle(void) +{ + uint8_t Pro_Flag = TRUE; + + if( CHIP_STA3 & 0x02 ) //(Die ot) + { + Protect_Type_Flg |= DIE_OT_PRO_TYPE; + +#ifdef _DEBUG_CHARGER + printf("Chg Pro DIR OT!\r\n"); +#endif + return FALSE; + } + + if( CHIP_STA3 & 0x20 ) //VIN Over voltage + { + Protect_Type_Flg |= VBUS_OVERVOL_PRO_TYPE; + +#ifdef _DEBUG_CHARGER + printf("Chg Pro Over Vol!\r\n"); +#endif + return FALSE; + } + + if(Protect_Type_Flg & VBUS_OVERVOL_PRO_TYPE) + { + if( !(CHIP_STA3 & 0x20) ) //ϵͳVBUS Over Volģʽ־λ + { + Protect_Type_Flg &= ~VBUS_OVERVOL_PRO_TYPE; + Pro_Flag = TRUE; + } + } + + if( CHIP_STA4 & 0x10 ) //Charger BAT over voltage + { + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; + +#ifdef _DEBUG_CHARGER + printf("Chg Pro Bat Over Vol!\r\n"); +#endif + return FALSE; + } + + if(Protect_Type_Flg & BAT_OVERVOL_PRO_TYPE) + { + if( !(CHIP_STA4 & 0x10) ) //ϵͳCharger BAT over voltageģʽ־λ + { + Protect_Type_Flg &= ~BAT_OVERVOL_PRO_TYPE; + Pro_Flag = TRUE; + } + } + + return Pro_Flag; +} + +/* + ******************************************************************************* + * uint8_t VIN_Detect_Handle(void) + * + * Description : VIN Detect Handle + * + * Arguments : NONE + + * Returns : Plug State (0:NO Plug; 1:Plug Out; 2:Plug In) + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 + uint8_t VIN_Detect_Handle(void) +{ + uint8_t VIN_Plug_State = 0; + + switch(g_Plug_Irq_Flg) + { + case 0: + + VIN_Plug_State = 0; + + break; + case VBUS_PLGOUT_FLG: + + VIN_Plug_State = 1; + Charger_Done = 0; +#ifdef _DEBUG_CHARGER + printf("Vin PlugOut(line:%d)\r\n",(uint16)__LINE__); +#endif +#if 1 + /* VIN γᴥ DPMDPM ܿͨر! */ + if(CHIP_STA4 & 0x40) //Charger vin DPM status + { + SFRADDR = REG_CHG0; + + SFRDATA &= ~0x04; //رDPM + } +#endif + break; + case VBUS_PLGIN_FLG: + + if(CHIP_STA4 & 0x80) //Power Good + { + VIN_Plug_State = 2; + g_Bat_Det_Flag = 1; + +#ifdef _DEBUG_CHARGER + printf("Vin PlugIn(line:%d)\r\n",(uint16)__LINE__); +#endif + } + + break; + default: + break; + } + g_Plug_Irq_Flg = 0; + return VIN_Plug_State; +} +#endif +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + uint8_t Ret = 0; + uint16_t Bat_Adc = 0; + + Ret = Charger_Protect_Handle(); //Get Charger Protect Type. + if(Ret == FALSE) //硣 + { + CHG_CTL &= ~0x01; //Disable Charger + return; + } + + /*NTC Handle*/ + Ret = PMU_NTC_Control(); //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if(Ret == FALSE) //NTC硣 + { + return; + } + + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + Charger_Done = 0; + return; + } + + if( Charger_Done ) + { + +#if ADC_ENABLE + Bat_Adc = Vbat_Value(); //ȡBatѹ + +#ifdef _DEBUG_CHARGER + printf("Charge Done!\r\n"); +#endif + +#endif + + if( Bat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + Charger_Done = 0; + +#ifdef _DEBUG_CHARGER + printf("Enable Charge!\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Disable Charge!\r\n"); +#endif + } + } + else + { + CHG_CTL |= 0x01; //Enable Charger + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/charger_module(1840).h b/TP3310_Demo.si4project/Backup/charger_module(1840).h new file mode 100644 index 0000000..a1a7336 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(1840).h @@ -0,0 +1,64 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" + +// ״̬ +typedef enum +{ + CHG_STA_ING, // + CHG_STA_COMPLETED, // + CHG_STA_PULLOUT, // γ +} TE_CHG_STA; + + +extern idata TE_CHG_STA ChgStatus; // ϵͳ״̬ + +#if CHARGER_ENABLE +/*ãϵͳʼʱͨüĴREG_CHG1á + +REG_CHG1 = CHG_CURRENT_300MA; + +*/ +#define CHG_CURRENT_100MA 0x00 +#define CHG_CURRENT_200MA 0x01 +#define CHG_CURRENT_250MA 0x02 +#define CHG_CURRENT_300MA 0x03 +#define CHG_CURRENT_350MA 0x04 +#define CHG_CURRENT_400MA 0x05 +#define CHG_CURRENT_450MA 0x06 +#define CHG_CURRENT_500MA 0x07 + + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + + + +extern void Charger_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(1953).c b/TP3310_Demo.si4project/Backup/charger_module(1953).c new file mode 100644 index 0000000..210fc80 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(1953).c @@ -0,0 +1,291 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#if ADC_CHN_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ + +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE + + NTC_Adc = ADC_Chn_Value(ADC_CH4); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + + #ifdef BREATHING_LIGHT //رLED UIʾ + Breathing_Light_On = 0; + #endif + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x08 ) //糬ʱ + { + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x08; + IRQ_FLAG10 = 0xC0; + } + return; + } + + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { + return; + } + +#ifdef BREATHING_LIGHT //LED UIʾ + Breathing_Light_On = 1; +#endif + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { +#ifdef LED_DISPLAY + LED_B_OFF(); +#endif +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(2186).h b/TP3310_Demo.si4project/Backup/charger_module(2186).h new file mode 100644 index 0000000..727acf9 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(2186).h @@ -0,0 +1,52 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" + + +#if CHARGER_ENABLE +/*ãϵͳʼʱͨüĴREG_CHG1á + +REG_CHG1 = CHG_CURRENT_300MA; + +*/ +#define CHG_CURRENT_100MA 0x00 +#define CHG_CURRENT_200MA 0x01 +#define CHG_CURRENT_250MA 0x02 +#define CHG_CURRENT_300MA 0x03 +#define CHG_CURRENT_350MA 0x04 +#define CHG_CURRENT_400MA 0x05 +#define CHG_CURRENT_450MA 0x06 +#define CHG_CURRENT_500MA 0x07 + + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +extern void Charger_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(2753).c b/TP3310_Demo.si4project/Backup/charger_module(2753).c new file mode 100644 index 0000000..9afbda2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(2753).c @@ -0,0 +1,293 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata TE_CHG_STA ChgStatus; // ϵͳ״̬ + +#if ADC_CHN_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE + + NTC_Adc = ADC_Chn_Value(ADC_CH4); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + IRQ_FLAG9 = 0x10; //δ磬Charg complete interruptж + ChgStatus = CHG_STA_PULLOUT; + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + { + CHG_CTL &= ~0x01; //Disable Charger + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x0C; + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + return; + } + else /*δʱPlugPlugin\Plugout int*/ + { + if( IRQ_FLAG10 & 0xC0 ) + { + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + } + + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { + return; + } + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { + +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + ChgStatus = CHG_STA_COMPLETED; + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + ChgStatus = CHG_STA_ING; + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(4483).h b/TP3310_Demo.si4project/Backup/charger_module(4483).h new file mode 100644 index 0000000..e6583a7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(4483).h @@ -0,0 +1,136 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" + +#define VBUS_PLGOUT_FLG 1 +#define VBUS_PLGIN_FLG 2 +extern bit Charger_Done; + +#if CHARGER_ENABLE + + +#if 0 +/*Charger NTC Type Select*/ +#define NTC_JEITA 1 +#define NTC_IEC 0 + +#define CHARGER_CV_SET 0x08 //ѹCVѹ4.2VãͨREG_CHG2Ĵֵá + + +#define BAT_CV 4200 //4.20V +#define BAT_PRE 3000 //3.0v +#define BAT_RECHARG 4075 //4200mv - 135mv = 4075mv + +#define BAT_RECHARG_OFFSET 150 //150mv + +#define VBUS_PLGOUT_FLG 1 +#define VBUS_PLGIN_FLG 2 + +/**/ +#define TRICKLE_CUR_MIN 0 //СֵΪ10mA +#define TRICKLE_CUR_DEFAULT 0x40 //Tickle charge Ĭֵ20mAãͨĴREG_CHG1(BIT[7:5])á +#define TRICKLE_CUR_MAX 0xE0 //СֵΪ80mA + +#define ITERM_CUR_MIN 0 //ֹСֵ5mA +#define ITERM_CUR_DEFAULT 1 //Iterm charge Ĭֵ10mAãͨĴREG_CHG4(BIT[3:0])á +#define ITERM_CUR_MAX 9 //ֵֹ50mA + +#define CONSTANT_CUR_MIN 0 //Сֵ25mA +#define CONSTANT_CUR_DEFAULT 0x03 //Ĭֵ100mAãͨĴREG_CHG1(BIT[4:0])á +#define CONSTANT_CUR_250MA 0x08 //250mA +#define CONSTANT_CUR_500MA 0x12 //500mA +#define CONSTANT_CUR_MAX 0x17 //ֵ600mA 0x17 - 0x1FΪ600mA +/*ʱ*/ +#define PRECHG_TIME_1HOUR 0 //Safety timer set during prechg. Default 1 hour reg:CHG_CTL[BIT3] +#define PRECHG_TIME_2HOUR 1 //Safety timer set during prechg. 2 hour + +#define FASTCHG_TIME_3HOUR 0 //Safety timer set during fastchg. 3 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_5HOUR 1 //Safety timer set during fastchg. 5 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_8HOUR 2 //Safety timer set during fastchg. 8 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_13HOUR 3 //Safety timer set during fastchg. 13 hour reg:CHG_CTL[BIT2:1] + +#define CHG_CONSTANT_CUR_TIM 1 + + +/*20uA Դ½ 104K NTC 貢һ82Kõĵѹֵ*/ +#define T_N20C 1530 //-20(76.5K * 20uA) NTC:1151K + +#define T_N15C 1495 + +#define T_N10C 1440 //-10(72K * 20uA) NTC:629K + +#define T_0C 1334 //-0(66.7K * 20uA) NTC:357K + +#define T_3C 1300 + +#define T_8C 1200 + +#define T_10C 1178 //10(58.9K * 20uA) NTC:209.7K + +#define T_12C 1100 + +#define T_42C 580 + +#define T_45C 546 //45(27.3K * 20uA) NTC:40.9K + +#define T_47C 500 + +#define T_57C 370 + +#define T_60C 350 //60(17.5K * 20uA) NTC:22.2K + +#define T_75C 250 + +#define T_80C 188 //80(9.4K * 20uA) NTC:10.6K + +#endif + + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +/* Getting Charger Status */ +typedef enum { + nPower_Good = 0x00, //VBUS power good status, set when VBUS plugin and VBUS>BAT+0.15V. + nCharger_DPM, //Charger vin DPM status. + nCharger_CV, //Charger in CV mode. + nCharger_CC, //Charger CC status + nCharger_Tricl, //Tricle charge status + nCharger_Complete, //Charge end status, set when in CV and charger current less than iterm +} e_gCharger_Status; + +//extern uint8_t g_Plug_Irq_Flg; //1:Plugout; 2:Plugin +//extern bit g_Bat_Det_Flag; //ؼ⿪ʼ־λ1VIN룻2ʱ4s3Chg DoneһΣChg Doneÿ4sһΡ + + +//extern void Charger_Init(void); +extern void Set_Charger_Time( void ); +extern uint8_t PMU_NTC_Control(void); +extern uint8_t Charger_Protect_Handle(void); +//extern uint8_t VIN_Detect_Handle(void); +extern void Charger_Handler(void); + +#endif +#endif diff --git a/TP3310_Demo.si4project/Backup/charger_module(4502).c b/TP3310_Demo.si4project/Backup/charger_module(4502).c new file mode 100644 index 0000000..c5b168e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(4502).c @@ -0,0 +1,363 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" + + +idata bit Charger_Done = 0; + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +#define CHG_CUR_1K 150 //ADCںԴ20uA1K裬ѹ0.2VΪ֤ȡֵЧȡ0.15V +#define CHG_CUR_5K 800 //ADCںԴ20uA5K裬ѹ1VΪ֤ȡֵЧȡ0.8V +#define CHG_CUR_10K 1800 //ADCںԴ20uA10K裬ѹ2VΪ֤ȡֵЧȡ1.8V +#define CHG_CUR_NONE 3000 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + +bit g_Bat_Det_Flag = 0; //ؼ⿪ʼ־λ1VIN룻2ûе¶ʱ4s3Chg DoneһΣChg Doneÿ4sһΡ + +idata uint8_t Cnt_Bat_Det_Tim = 0; + +idata uint8_t Cnt_Die_OT_Tim = 0; + + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + //SFRADDR = PMU_CTL1; + //SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ +// REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ +// REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +#if SET_CHG_TIM + /* Set Charge Time*/ + Set_Charger_Time(); + +#endif + + CHG_CTL &= ~0x80; +} +#endif +/* + ******************************************************************************* + * void Set_Charge_Time(void) + * + * Description : Set Charger Time + * + * Arguments : void + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +#if SET_CHG_TIM +void Set_Charger_Time(void) +{ + CHG_CTL &= 0xF0; + CHG_CTL |= 0x10; //Safety timer enable + CHG_CTL |= 0x01 << 3; //ʱ䣺0:1 hour;1:2:hours + + CHG_CTL |= 0x03 << 2; //úѹʱ:00:3 hours;01:5 hours;10:8 hours;11:13 hours + +} +#endif +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = FALSE; + + +// NTC_Adc = VTS_Value(); +// NTC_Adc = ADCx_Value(ADC_CH4); + + if(NTC_Adc >= 0xFFF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Protect_Handle(void) + * + * Description : Charger Protect Handle( UVLO ѹعѹض·NTC ±ICH ·) + * + * Arguments : NONE + + * Returns :uint8_t Protect_Type_Flg (bit0~bit8ֱͬı͡) + + * Notes : NONE + * + ******************************************************************************* + */ + uint8_t Charger_Protect_Handle(void) +{ + uint16_t VIN_Adc = 0; + uint8_t Pro_Flag = TRUE; + + if( CHIP_STA3 & 0x02 ) //(Die ot) + { + Protect_Type_Flg |= DIE_OT_PRO_TYPE; + Cnt_Die_OT_Tim = 0; +#ifdef _DEBUG_CHARGER + printf("Chg Pro DIR OT!\r\n"); +#endif + return FALSE; + } + + if( CHIP_STA3 & 0x20 ) //VIN Over voltage + { + Protect_Type_Flg |= VBUS_OVERVOL_PRO_TYPE; +#ifdef _DEBUG_CHARGER + printf("Chg Pro Over Vol!\r\n"); +#endif + return FALSE; + } + + if(Protect_Type_Flg & VBUS_OVERVOL_PRO_TYPE) + { + if( !(CHIP_STA3 & 0x20) ) //ϵͳVBUS Over Volģʽ־λ + { + Protect_Type_Flg &= ~VBUS_OVERVOL_PRO_TYPE; + Pro_Flag = TRUE; + } + } + + if( CHIP_STA4 & 0x10 ) //Charger BAT over voltage + { + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; +#ifdef _DEBUG_CHARGER + printf("Chg Pro Bat Over Vol!\r\n"); +#endif + return FALSE; + } + + if(Protect_Type_Flg & BAT_OVERVOL_PRO_TYPE) + { + if( !(CHIP_STA4 & 0x10) ) //ϵͳCharger BAT over voltageģʽ־λ + { + Protect_Type_Flg &= ~BAT_OVERVOL_PRO_TYPE; + Pro_Flag = TRUE; + } + } + + return Pro_Flag; +} + +/* + ******************************************************************************* + * uint8_t VIN_Detect_Handle(void) + * + * Description : VIN Detect Handle + * + * Arguments : NONE + + * Returns : Plug State (0:NO Plug; 1:Plug Out; 2:Plug In) + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 + uint8_t VIN_Detect_Handle(void) +{ + uint8_t VIN_Plug_State = 0; + + switch(g_Plug_Irq_Flg) + { + case 0: + + VIN_Plug_State = 0; + + break; + case VBUS_PLGOUT_FLG: + + VIN_Plug_State = 1; + Charger_Done = 0; +#ifdef _DEBUG_CHARGER + printf("Vin PlugOut(line:%d)\r\n",(uint16)__LINE__); +#endif +#if 1 + /* VIN γᴥ DPMDPM ܿͨر! */ + if(CHIP_STA4 & 0x40) //Charger vin DPM status + { + SFRADDR = REG_CHG0; + + SFRDATA &= ~0x04; //رDPM + } +#endif + break; + case VBUS_PLGIN_FLG: + + if(CHIP_STA4 & 0x80) //Power Good + { + VIN_Plug_State = 2; + g_Bat_Det_Flag = 1; + +#ifdef _DEBUG_CHARGER + printf("Vin PlugIn(line:%d)\r\n",(uint16)__LINE__); +#endif + } + + break; + default: + break; + } + g_Plug_Irq_Flg = 0; + return VIN_Plug_State; +} +#endif +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Charger_Handler(void) +{ + uint8_t Ret = 0; + uint16_t Vbat_Adc = 0; + uint16_t Bat_Adc = 0; + + Ret = Charger_Protect_Handle(); //Get Charger Protect Type. + if(Ret == FALSE) //硣 + { + CHG_CTL &= ~0x01; //Disable Charger + return; + } + + /*NTC Handle*/ + Ret = PMU_NTC_Control(); //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if(Ret == FALSE) //NTC硣 + { + return; + } + + /*VIN Detection and Power good.עӲѶVIN*/ + //VIN_Detect_Handle(); + + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + Charger_Done = 0; + return; + } + + if( Charger_Done ) + { + #if ADC_ENABLE + Bat_Adc = Vbat_Value(); //ȡBatѹ + +#ifdef _DEBUG_CHARGER + printf("Charge Done!\r\n"); +#endif + #endif + if( Bat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + Charger_Done = 0; +#ifdef _DEBUG_CHARGER + printf("Enable Charge!\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Disable Charge!\r\n"); +#endif + } + } + else + { + CHG_CTL |= 0x01; //Enable Charger + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/charger_module(4541).h b/TP3310_Demo.si4project/Backup/charger_module(4541).h new file mode 100644 index 0000000..c5ef4ad --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(4541).h @@ -0,0 +1,136 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" + +#define VBUS_PLGOUT_FLG 1 +#define VBUS_PLGIN_FLG 2 +extern idata bit Charger_Done; + +#if CHARGER_ENABLE + + +#if 0 +/*Charger NTC Type Select*/ +#define NTC_JEITA 1 +#define NTC_IEC 0 + +#define CHARGER_CV_SET 0x08 //ѹCVѹ4.2VãͨREG_CHG2Ĵֵá + + +#define BAT_CV 4200 //4.20V +#define BAT_PRE 3000 //3.0v +#define BAT_RECHARG 4075 //4200mv - 135mv = 4075mv + +#define BAT_RECHARG_OFFSET 150 //150mv + +#define VBUS_PLGOUT_FLG 1 +#define VBUS_PLGIN_FLG 2 + +/**/ +#define TRICKLE_CUR_MIN 0 //СֵΪ10mA +#define TRICKLE_CUR_DEFAULT 0x40 //Tickle charge Ĭֵ20mAãͨĴREG_CHG1(BIT[7:5])á +#define TRICKLE_CUR_MAX 0xE0 //СֵΪ80mA + +#define ITERM_CUR_MIN 0 //ֹСֵ5mA +#define ITERM_CUR_DEFAULT 1 //Iterm charge Ĭֵ10mAãͨĴREG_CHG4(BIT[3:0])á +#define ITERM_CUR_MAX 9 //ֵֹ50mA + +#define CONSTANT_CUR_MIN 0 //Сֵ25mA +#define CONSTANT_CUR_DEFAULT 0x03 //Ĭֵ100mAãͨĴREG_CHG1(BIT[4:0])á +#define CONSTANT_CUR_250MA 0x08 //250mA +#define CONSTANT_CUR_500MA 0x12 //500mA +#define CONSTANT_CUR_MAX 0x17 //ֵ600mA 0x17 - 0x1FΪ600mA +/*ʱ*/ +#define PRECHG_TIME_1HOUR 0 //Safety timer set during prechg. Default 1 hour reg:CHG_CTL[BIT3] +#define PRECHG_TIME_2HOUR 1 //Safety timer set during prechg. 2 hour + +#define FASTCHG_TIME_3HOUR 0 //Safety timer set during fastchg. 3 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_5HOUR 1 //Safety timer set during fastchg. 5 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_8HOUR 2 //Safety timer set during fastchg. 8 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_13HOUR 3 //Safety timer set during fastchg. 13 hour reg:CHG_CTL[BIT2:1] + +#define CHG_CONSTANT_CUR_TIM 1 + + +/*20uA Դ½ 104K NTC 貢һ82Kõĵѹֵ*/ +#define T_N20C 1530 //-20(76.5K * 20uA) NTC:1151K + +#define T_N15C 1495 + +#define T_N10C 1440 //-10(72K * 20uA) NTC:629K + +#define T_0C 1334 //-0(66.7K * 20uA) NTC:357K + +#define T_3C 1300 + +#define T_8C 1200 + +#define T_10C 1178 //10(58.9K * 20uA) NTC:209.7K + +#define T_12C 1100 + +#define T_42C 580 + +#define T_45C 546 //45(27.3K * 20uA) NTC:40.9K + +#define T_47C 500 + +#define T_57C 370 + +#define T_60C 350 //60(17.5K * 20uA) NTC:22.2K + +#define T_75C 250 + +#define T_80C 188 //80(9.4K * 20uA) NTC:10.6K + +#endif + + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +/* Getting Charger Status */ +typedef enum { + nPower_Good = 0x00, //VBUS power good status, set when VBUS plugin and VBUS>BAT+0.15V. + nCharger_DPM, //Charger vin DPM status. + nCharger_CV, //Charger in CV mode. + nCharger_CC, //Charger CC status + nCharger_Tricl, //Tricle charge status + nCharger_Complete, //Charge end status, set when in CV and charger current less than iterm +} e_gCharger_Status; + +//extern uint8_t g_Plug_Irq_Flg; //1:Plugout; 2:Plugin +extern bit g_Bat_Det_Flag; //ؼ⿪ʼ־λ1VIN룻2ʱ4s3Chg DoneһΣChg Doneÿ4sһΡ + + +//extern void Charger_Init(void); +extern void Set_Charger_Time( void ); +extern uint8_t PMU_NTC_Control(void); +extern uint8_t Charger_Protect_Handle(void); +//extern uint8_t VIN_Detect_Handle(void); +extern void Charger_Handler(void); + +#endif +#endif diff --git a/TP3310_Demo.si4project/Backup/charger_module(4777).h b/TP3310_Demo.si4project/Backup/charger_module(4777).h new file mode 100644 index 0000000..6e8efd3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(4777).h @@ -0,0 +1,38 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" + + +#if CHARGER_ENABLE + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +extern void Charger_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(5227).c b/TP3310_Demo.si4project/Backup/charger_module(5227).c new file mode 100644 index 0000000..7f497d4 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(5227).c @@ -0,0 +1,252 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" + +bit Charger_Done = 0; + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#if ADC_CHN_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +#if 1 +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE +#if 1 + NTC_Adc = ADC_Chn_Value(ADC_CH4); +#else + NTC_Adc = VNTC_Adc; +#endif + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + NTC_Flag = TRUE; + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} +#endif +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + uint8_t Ret = 0; +#if 1 + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + Charger_Done = 0; + return; + } + + if( CHIP_STA4 & 0x70 ) //Charger BAT over voltageVIN DPMtemp loop. + { + CHG_CTL &= ~0x01; //Disable Charger + return; + } + + /*NTC Handle*/ + Ret = PMU_NTC_Control(); //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( Ret == FALSE ) //NTC硣 + { + return; + } + + if( Charger_Done ) + { +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + Charger_Done = 0; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + +#endif + } + else +#endif + { + CHG_CTL |= 0x01; //Enable Charger + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(5869).h b/TP3310_Demo.si4project/Backup/charger_module(5869).h new file mode 100644 index 0000000..a3f044f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(5869).h @@ -0,0 +1,65 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" +#if 0 +// ״̬ +typedef enum +{ + CHG_STA_ING, // + CHG_STA_COMPLETED, // + CHG_STA_PULLOUT, // γ +} TE_CHG_STA; + + +extern idata TE_CHG_STA ChgStatus; // ϵͳ״̬ +#endif + +extern bit Charger_Done; + +#if CHARGER_ENABLE +/*ãϵͳʼʱͨüĴREG_CHG1á + +REG_CHG1 = CHG_CURRENT_300MA; + +*/ +#define CHG_CURRENT_100MA 0x00 +#define CHG_CURRENT_200MA 0x01 +#define CHG_CURRENT_250MA 0x02 +#define CHG_CURRENT_300MA 0x03 +#define CHG_CURRENT_350MA 0x04 +#define CHG_CURRENT_400MA 0x05 +#define CHG_CURRENT_450MA 0x06 +#define CHG_CURRENT_500MA 0x07 + + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +extern void Charger_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(6180).c b/TP3310_Demo.si4project/Backup/charger_module(6180).c new file mode 100644 index 0000000..266dfdb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(6180).c @@ -0,0 +1,287 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#if ADC_CHN_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE + + NTC_Adc = ADC_Chn_Value(ADC_CH4); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + { + CHG_CTL &= ~0x01; //Disable Charger + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x0C; + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + return; + } + else /*δʱPlugPlugin\Plugout int*/ + { + if( IRQ_FLAG10 & 0xC0 ) + { + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + } + + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { + return; + } + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { + +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(6738).c b/TP3310_Demo.si4project/Backup/charger_module(6738).c new file mode 100644 index 0000000..3b1adce --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(6738).c @@ -0,0 +1,250 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" + +bit Charger_Done = 0; + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#if ADC_CHN_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ + +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE + +// NTC_Adc = ADC_Chn_Value(ADC_CH4); + NTC_Adc = VNTC_Adc; + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + NTC_Flag = TRUE; + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + uint8_t Ret = 0; + + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + Charger_Done = 0; + return; + } + + if( CHIP_STA4 & 0x70 ) //Charger BAT over voltageVIN DPMtemp loop. + { + CHG_CTL &= ~0x01; //Disable Charger + return; + } + + /*NTC Handle*/ + Ret = PMU_NTC_Control(); //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( Ret == FALSE ) //NTC硣 + { + return; + } + + if( Charger_Done ) + { +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + Charger_Done = 0; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(7555).c b/TP3310_Demo.si4project/Backup/charger_module(7555).c new file mode 100644 index 0000000..c9b2dad --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(7555).c @@ -0,0 +1,304 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#if ADC_CHN_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +uint8_t NTC_Pro_Debounce_Cnt = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 250msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + +#if ADC_CHN_ENABLE + + NTC_Adc = ADC_Chn_Value(ADC_CH4); + + if(NTC_Adc >= 0x2FF) ////NTCܣNTCգ NTC ܣ + { + return NTC_Flag; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + NTC_Pro_Debounce_Cnt++; + if(NTC_Pro_Debounce_Cnt > NTC_PRO_DEBOUNCE_TIM) //100ms + { + NTC_Pro_Debounce_Cnt = 0; + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + } + +#endif + + return NTC_Flag; +} + +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + +#ifdef BREATHING_LIGHT //رLED UIʾ + Breathing_Light_On = 0; +#endif + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + { + CHG_CTL &= ~0x01; //Disable Charger + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x0C; + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } +#ifdef BREATHING_LIGHT //رLED UIʾ + Breathing_Light_On = 0; +#endif + return; + } + else /*δʱPlugPlugin\Plugout int*/ + { + if( IRQ_FLAG10 & 0xC0 ) + { + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + } + + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { +#ifdef BREATHING_LIGHT //رLED UIʾ + Breathing_Light_On = 0; +#endif + return; + } + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { +#ifdef BREATHING_LIGHT //رLED UIʾ + Breathing_Light_On = 0; +#endif + +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + +#ifdef BREATHING_LIGHT //LED UIʾ + Breathing_Light_On = 1; +#endif + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/charger_module(7886).h b/TP3310_Demo.si4project/Backup/charger_module(7886).h new file mode 100644 index 0000000..c0559c3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/charger_module(7886).h @@ -0,0 +1,39 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" + +extern bit Charger_Done; + +#if CHARGER_ENABLE + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +extern void Charger_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/config(1471).h b/TP3310_Demo.si4project/Backup/config(1471).h new file mode 100644 index 0000000..1346aea --- /dev/null +++ b/TP3310_Demo.si4project/Backup/config(1471).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file Config.h + * @brief Config module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#include "define.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/*Charger Module Config Para Setting*/ + + +#define CHARGER_CV_SET 0x08 //ѹCVѹ4.2VãͨREG_CHG2Ĵֵá + +#define BAT_CV 4200 //CVѹã4.20V +#define BAT_PRE 3000 //ѹ3.0v +#define BAT_RECHARG 4075 //ظѹ4200mv - 135mv = 4075mv + +/**/ +#define TRICKLE_CUR_MIN 0 //СֵΪ10mA +#define TRICKLE_CUR_DEFAULT 0x40 //Tickle charge Ĭֵ20mAãͨĴREG_CHG1(BIT[7:5])á +#define TRICKLE_CUR_MAX 0xE0 //СֵΪ80mA + +#define ITERM_CUR_MIN 0 //ֹСֵ5mA +#define ITERM_CUR_DEFAULT 1 //Iterm charge Ĭֵ10mAãͨĴREG_CHG4(BIT[3:0])á +#define ITERM_CUR_MAX 9 //ֵֹ50mA + +#define CONSTANT_CUR_MIN 0 //Сֵ25mA +#define CONSTANT_CUR_DEFAULT 0x03 //Ĭֵ100mAãͨĴREG_CHG1(BIT[4:0])á +#define CONSTANT_CUR_200MA 0x07 //200mA +#define CONSTANT_CUR_300MA 0x0B //300mA +#define CONSTANT_CUR_500MA 0x12 //500mA +#define CONSTANT_CUR_MAX 0x17 //ֵ600mA 0x17 - 0x1FΪ600mA + +/*ʱ*/ +#define PRECHG_TIME_1HOUR 0 //Safety timer set during prechg. Default 1 hour reg:CHG_CTL[BIT3] +#define PRECHG_TIME_2HOUR 1 //Safety timer set during prechg. 2 hour + +#define FASTCHG_TIME_3HOUR 0 //Safety timer set during fastchg. 3 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_5HOUR 1 //Safety timer set during fastchg. 5 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_8HOUR 2 //Safety timer set during fastchg. 8 hour reg:CHG_CTL[BIT2:1] +#define FASTCHG_TIME_13HOUR 3 //Safety timer set during fastchg. 13 hour reg:CHG_CTL[BIT2:1] + +/*20uA Դ½ 104K NTC 貢һ82Kõĵѹֵ*/ +#define T_N20C 1530 //-20(76.5K * 20uA) NTC:1151K + +#define T_N15C 1495 //-15 ¶ + +#define T_N10C 1440 //-10(72K * 20uA) NTC:629K + +#define T_0C 1334 //-0(66.7K * 20uA) NTC:357K + +#define T_3C 1300 + +#define T_8C 1200 + +#define T_10C 1178 //10(58.9K * 20uA) NTC:209.7K + +#define T_12C 1100 + +#define T_42C 580 + +#define T_45C 546 //45(27.3K * 20uA) NTC:40.9K + +#define T_47C 500 + +#define T_57C 370 + +#define T_60C 350 //60(17.5K * 20uA) NTC:22.2K + +#define T_75C 250 + +#define T_80C 188 //80(9.4K * 20uA) NTC:10.6K + +/*Boost Module Config Para Setting*/ +#define OPEN_BOOST_VIN 3600 //Boost uvloVIN£Boostٴλָĵѹ3.6V +#define OPEN_BOOST_NOVIN 3300 //Boost uvloVIN£Boostٴλָĵѹ3.3V + +/*KEY And Hall Module Setting*/ +#define HALL_OPEN_LEV_SET 1 //ǸߵƽΪǻǵ͵ƽΪǡ1:ߵƽΪǣ0:͵ƽΪ + +/*Sleep Module Setting*/ +/*Enter Sleep Time Debounce*/ +#define ENTER_STANDBYMODE_CNT 10 //Standby Mode ӳʱ䣬λ +#define ENTER_SHIPMODE_CNT 5 //ShipMode ӳʱ䣬λ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + UserCfg.Functions definitions +\******************************************************************************/ + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/config(4038).h b/TP3310_Demo.si4project/Backup/config(4038).h new file mode 100644 index 0000000..f1e8735 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/config(4038).h @@ -0,0 +1,87 @@ +/* + ****************************************************************************** + * + * @file Config.h + * @brief Config module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __CONFIG_H__ +#define __CONFIG_H__ + +#include "define.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/*Charger Module Config Para Setting*/ + +#define BAT_CV 4200 //CVѹã4.20V +#define BAT_PRE 3000 //ѹ3.0v +#define BAT_RECHARG 4075 //ظѹ4200mv - 135mv = 4075mv + +/*20uA Դ½ 104K NTC 貢һ82Kõĵѹֵ*/ +#define T_N20C 1530 //-20(76.5K * 20uA) NTC:1151K + +#define T_N15C 1495 //-15 ¶ + +#define T_N10C 1440 //-10(72K * 20uA) NTC:629K + +#define T_0C 1334 //-0(66.7K * 20uA) NTC:357K + +#define T_3C 1300 + +#define T_8C 1200 + +#define T_10C 1178 //10(58.9K * 20uA) NTC:209.7K + +#define T_12C 1100 + +#define T_42C 580 + +#define T_45C 546 //45(27.3K * 20uA) NTC:40.9K + +#define T_47C 500 + +#define T_57C 370 + +#define T_60C 350 //60(17.5K * 20uA) NTC:22.2K + +#define T_75C 250 + +#define T_80C 188 //80(9.4K * 20uA) NTC:10.6K + +/*Boost Module Config Para Setting*/ +#define OPEN_BOOST_VIN 3600 //Boost uvloVIN£Boostٴλָĵѹ3.6V +#define OPEN_BOOST_NOVIN 3300 //Boost uvloVIN£Boostٴλָĵѹ3.3V + +/*KEY And Hall Module Setting*/ +#define HALL_OPEN_LEV_SET 1 //ǸߵƽΪǻǵ͵ƽΪǡ1:ߵƽΪǣ0:͵ƽΪ + +/*Sleep Module Setting*/ +/*Enter Sleep Time Debounce*/ +#define ENTER_STANDBYMODE_CNT 10 //Standby Mode ӳʱ䣬λ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + UserCfg.Functions definitions +\******************************************************************************/ + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(1137).h b/TP3310_Demo.si4project/Backup/define(1137).h new file mode 100644 index 0000000..6b716fc --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(1137).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _DEFINE_H_ +#define _DEFINE_H_ + +#include "config.h" + +/*Function Selectѡ궨*/ + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 0 //Timer1 ʱ100us(46Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 0 //Źʹ + +//#define LED_DISPLAY //LEDʾ (756Bytes) + +#define KEY_HALL_ENABLE 0 //KeyHallܡ(216Bytes) + +#define SET_CHG_TIM 0 //óʱ䡣 + +#define VOX_ENABLE 0 //663Bytes + +#define CHARGER_ENABLE 1 //135Bytes + +#define DISCHARGE_ENABLE 1 //121Bytes + +#define BOOST_AOUT + +#define SLEEP_ENABLE 0 //131Bytes + +#define ADC_ENABLE 1 + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 //284Bytes +#endif + +#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL + #define _DEBUG_ADC + #define _DEBUG_DISCHARGE + #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(117).h b/TP3310_Demo.si4project/Backup/define(117).h new file mode 100644 index 0000000..6c5b6d0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(117).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +#define FW_VER 0x01 //汾 + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 1 //Timer1 ʱ1msҪBES Rest Pattern(46Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (154Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define VOX_ENABLE 1 //652Bytes + +#define CHARGER_ENABLE 1 //204Bytes + +#define DISCHARGE_ENABLE 1 //103Bytes + +#define SLEEP_ENABLE 1 //131Bytes + +#define ADC_ENABLE 1 //804Bytes + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 +#endif + +#define BAT_VALUE 1 //182Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP + #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(1197).h b/TP3310_Demo.si4project/Backup/define(1197).h new file mode 100644 index 0000000..1a1d796 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(1197).h @@ -0,0 +1,122 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +#define FW_VER 0x01 //汾 + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪBES Rest Pattern(119Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(133Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (267Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(Hall 46Bytes) + +#define VOX_ENABLE 1 //104Bytes + +#define VOX_TX //575Bytes + +#define VOX_TX_RST_PATTERN //BES Reset Pattern (118Bytes) + +#define VOX_RX //405Bytes + +#define CHARGER_ENABLE 1 //225Bytes + +#define DISCHARGE_ENABLE 1 //75Bytes + +#define SLEEP_ENABLE 1 //110Bytes + +#define ADC_ENABLE 1 //710Bytes adc drvier 443Bytes + +#if ADC_ENABLE +#define ADC_NTC_ENABLE //213Bytes ChargerеIECش +#endif + +#define BAT_VALUE 1 //147Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(1310).h b/TP3310_Demo.si4project/Backup/define(1310).h new file mode 100644 index 0000000..c7f32f2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(1310).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _DEFINE_H_ +#define _DEFINE_H_ + +#include "config.h" + +/*Function Selectѡ궨*/ + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 0 //Timer1 ʱ100us(46Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +//#define LED_DISPLAY //LEDʾ (756Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define SET_CHG_TIM 0 //óʱ䡣 + +#define VOX_ENABLE 0 //663Bytes + +#define CHARGER_ENABLE 1 //135Bytes + +#define DISCHARGE_ENABLE 1 //121Bytes + +#define BOOST_AOUT + +#define SLEEP_ENABLE 1 //131Bytes + +#define ADC_ENABLE 1 + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 0 //284Bytes +#endif + +#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + + #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL + #define _DEBUG_ADC + // #define _DEBUG_DISCHARGE + // #define _DEBUG_CHARGER + // #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(2561).h b/TP3310_Demo.si4project/Backup/define(2561).h new file mode 100644 index 0000000..28566eb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(2561).h @@ -0,0 +1,120 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪ188ʾ(46Bytes) + +#if TIMER1_ENABLE +#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes +#endif + +#define UART0_ENABLE 0 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ (681Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define VOX_ENABLE 0 //663Bytes + +#define CHARGER_ENABLE 1 //135Bytes + +#define DISCHARGE_ENABLE 1 //121Bytes + +//#define BOOST_AOUT /* ??? ??? */ + +#define SLEEP_ENABLE 1 //131Bytes + +#define ADC_ENABLE 1 //545Bytes + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 //274Bytes +#endif + +#define BAT_VALUE 1 //125Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + + #define _DEBUG_MAIN + #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(3459).h b/TP3310_Demo.si4project/Backup/define(3459).h new file mode 100644 index 0000000..418a76d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(3459).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*Function Selectѡ궨*/ + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪ188ʾ(46Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +//#define LED_DISPLAY //LEDʾ (756Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define VOX_ENABLE 0 //663Bytes + +#define CHARGER_ENABLE 0 //135Bytes + +#define DISCHARGE_ENABLE 0 //121Bytes + +#define BOOST_AOUT /* ??? ??? */ + +#define SLEEP_ENABLE 0 //131Bytes + +#define ADC_ENABLE 1 + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 //274Bytes +#endif + +#define BAT_VALUE 0 //125Bytes + +#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + + #define _DEBUG_MAIN + #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(3685).h b/TP3310_Demo.si4project/Backup/define(3685).h new file mode 100644 index 0000000..1a1d796 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(3685).h @@ -0,0 +1,122 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +#define FW_VER 0x01 //汾 + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪBES Rest Pattern(119Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(133Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (267Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(Hall 46Bytes) + +#define VOX_ENABLE 1 //104Bytes + +#define VOX_TX //575Bytes + +#define VOX_TX_RST_PATTERN //BES Reset Pattern (118Bytes) + +#define VOX_RX //405Bytes + +#define CHARGER_ENABLE 1 //225Bytes + +#define DISCHARGE_ENABLE 1 //75Bytes + +#define SLEEP_ENABLE 1 //110Bytes + +#define ADC_ENABLE 1 //710Bytes adc drvier 443Bytes + +#if ADC_ENABLE +#define ADC_NTC_ENABLE //213Bytes ChargerеIECش +#endif + +#define BAT_VALUE 1 //147Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(3744).h b/TP3310_Demo.si4project/Backup/define(3744).h new file mode 100644 index 0000000..9537c81 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(3744).h @@ -0,0 +1,126 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 1 //Timer1 ʱ1ms or 100usҪ188ʾ\ơ(46Bytes) + +#if TIMER1_ENABLE +//#define DISPLAY_LED_188 //188ʾ,Timer11msʱɨ裨631Bytes +#endif + +#if TIMER1_ENABLE +#define BREATHING_LIGHT //ƹܣTimer1жϴУ100us(124Bytes) +#endif + +#define UART0_ENABLE 0 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ (450Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define VOX_ENABLE 1 //652Bytes + +#define CHARGER_ENABLE 1 //204Bytes + +#define DISCHARGE_ENABLE 1 //103Bytes + +#if DISCHARGE_ENABLE +#define BOOST_AOUT /* ??? ??? */ +#endif + +#define SLEEP_ENABLE 1 //131Bytes + +#define ADC_ENABLE 1 //804Bytes + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 +#endif + +#define BAT_VALUE 1 //182Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP + #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(3871).h b/TP3310_Demo.si4project/Backup/define(3871).h new file mode 100644 index 0000000..b91ac3f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(3871).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _DEFINE_H_ +#define _DEFINE_H_ + +#include "config.h" + +/*Function Selectѡ궨*/ +#define TEST 0 + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 1 //Timer1 ʱ100us + +#define UART0_ENABLE 0 //UART0ܣڳԡ + +#define WTG_ENABLE 0 //Źʹ + +//#define LED_DISPLAY //LEDʾ 888Bytes + +#define KEY_HALL_ENABLE 1 //KeyHallܡ390Bytes + +#define SET_CHG_TIM 0 //óʱ䡣 + +#define VOX_ENABLE 0 + +#define CHARGER_ENABLE 0 + +#define DISCHARGE_ENABLE 0 + +#define SLEEP_ENABLE 0 + +#define ADC_ENABLE 1 + +//#define _DEBUG_ALL //򿪴ӡ + +//#define _DEBUG_LED +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN + #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + + +#endif + + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(4196).h b/TP3310_Demo.si4project/Backup/define(4196).h new file mode 100644 index 0000000..d65cabe --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(4196).h @@ -0,0 +1,128 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*ѡ*/ +//#define QIANCHENG //ة + +#define ZHONGKELANXUN + + +#define FW_VER 0x01 //汾 + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪBES Rest Pattern(119Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(133Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (267Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(Hall 46Bytes) + +#define VOX_ENABLE 1 //104Bytes + +#define VOX_TX //575Bytes + +#define VOX_TX_RST_PATTERN //BES Reset Pattern (118Bytes) + +#define VOX_RX //405Bytes + +#define CHARGER_ENABLE 1 //225Bytes + +#define DISCHARGE_ENABLE 1 //75Bytes + +#define SLEEP_ENABLE 1 //110Bytes + +#define ADC_ENABLE 1 //710Bytes adc drvier 443Bytes + +#if ADC_ENABLE +#define ADC_NTC_ENABLE //213Bytes ChargerеIECش +#endif + +#define BAT_VALUE 1 //147Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(593).h b/TP3310_Demo.si4project/Backup/define(593).h new file mode 100644 index 0000000..834db8a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(593).h @@ -0,0 +1,126 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 1 //Timer1 ʱ100usҪ188ʾ(46Bytes) + +#if TIMER1_ENABLE +//#define DISPLAY_LED_188 //188ʾ,Timer11msʱɨ裨631Bytes +#endif + +#if TIMER1_ENABLE +//#define BREATHING_LIGHT //ƹܣTimer1жϴУ100us(133Bytes) +#endif + +#define UART0_ENABLE 0 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ (450Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define VOX_ENABLE 1 //652Bytes + +#define CHARGER_ENABLE 1 //204Bytes + +#define DISCHARGE_ENABLE 1 //103Bytes + +#if DISCHARGE_ENABLE +#define BOOST_AOUT /* ??? ??? */ +#endif + +#define SLEEP_ENABLE 1 //131Bytes + +#define ADC_ENABLE 1 //804Bytes + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 +#endif + +#define BAT_VALUE 1 //125Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + + #define _DEBUG_MAIN + #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(5937).h b/TP3310_Demo.si4project/Backup/define(5937).h new file mode 100644 index 0000000..5bcfa59 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(5937).h @@ -0,0 +1,118 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +#define FW_VER 0x01 //汾 + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 1 //Timer1 ʱ1msҪBES Rest Pattern(119Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(153Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (267Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(46Bytes) + +#define VOX_ENABLE 1 //293Bytes + +#define VOX_TX //497Bytes + +#define CHARGER_ENABLE 1 //232Bytes + +#define DISCHARGE_ENABLE 1 //75Bytes + +#define SLEEP_ENABLE 1 //110Bytes + +#define ADC_ENABLE 1 //710Bytes adc drvier 443Bytes + +#if ADC_ENABLE +#define ADC_NTC_ENABLE //199Bytes ChargerеIECش +#endif + +#define BAT_VALUE 1 //184Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(6235).h b/TP3310_Demo.si4project/Backup/define(6235).h new file mode 100644 index 0000000..867e866 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(6235).h @@ -0,0 +1,120 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +#define FW_VER 0x01 //汾 + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 1 //Timer1 ʱ1msҪBES Rest Pattern(119Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(153Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (267Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(46Bytes) + +#define VOX_ENABLE 1 //293Bytes + +#define VOX_TX //497Bytes + +#define VOX_RX + +#define CHARGER_ENABLE 1 //232Bytes + +#define DISCHARGE_ENABLE 1 //75Bytes + +#define SLEEP_ENABLE 1 //110Bytes + +#define ADC_ENABLE 1 //710Bytes adc drvier 443Bytes + +#if ADC_ENABLE +#define ADC_NTC_ENABLE //199Bytes ChargerеIECش +#endif + +#define BAT_VALUE 1 //184Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(6596).h b/TP3310_Demo.si4project/Backup/define(6596).h new file mode 100644 index 0000000..97eaa68 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(6596).h @@ -0,0 +1,118 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _DEFINE_H_ +#define _DEFINE_H_ + +#include "config.h" + +/*Function Selectѡ궨*/ +#define TEST 0 + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 0 //Timer1 ʱ100us + +#define UART0_ENABLE 0 //UART0ܣڳԡ + +#define WTG_ENABLE 1 //Źʹ + +//#define LED_DISPLAY //LEDʾ 888Bytes + +#define KEY_HALL_ENABLE 1 //KeyHallܡ390Bytes + +#define SET_CHG_TIM 0 //óʱ䡣 + +#define VOX_ENABLE 1 + +#define CHARGER_ENABLE 1 + +#define DISCHARGE_ENABLE 1 + +//#define BOOST_AOUT + +#define SLEEP_ENABLE 1 + +#define ADC_ENABLE 1 + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 0 +#endif + +//#define _DEBUG_ALL //򿪴ӡ + +//#define _DEBUG_LED +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(7356).h b/TP3310_Demo.si4project/Backup/define(7356).h new file mode 100644 index 0000000..d52c9c0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(7356).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _DEFINE_H_ +#define _DEFINE_H_ + +#include "config.h" + +/*Function Selectѡ궨*/ +#define TEST 0 + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 1 //Timer1 ʱ100us + +#define UART0_ENABLE 1 //UART0ܣڳԡ + +#define WTG_ENABLE 1 //Źʹ + +//#define LED_DISPLAY //LEDʾ 888Bytes + +#define KEY_HALL_ENABLE 1 //KeyHallܡ390Bytes + +#define SET_CHG_TIM 0 //óʱ䡣 + +#define VOX_ENABLE 0 + +#define CHARGER_ENABLE 0 + +#define DISCHARGE_ENABLE 0 + +#define SLEEP_ENABLE 0 + +#define ADC_ENABLE 1 + +#define _DEBUG_ALL //򿪴ӡ + +//#define _DEBUG_LED +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN + #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + + +#endif + + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(8191).h b/TP3310_Demo.si4project/Backup/define(8191).h new file mode 100644 index 0000000..2fec38c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(8191).h @@ -0,0 +1,120 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪ188ʾ(46Bytes) + +#if TIMER1_ENABLE + +#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#endif + +#define UART0_ENABLE 0 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ (756Bytes) + +#define KEY_HALL_ENABLE 1 //KeyHallܡ(216Bytes) + +#define VOX_ENABLE 1 //663Bytes + +#define CHARGER_ENABLE 1 //135Bytes + +#define DISCHARGE_ENABLE 1 //121Bytes + +#define BOOST_AOUT /* ??? ??? */ + +#define SLEEP_ENABLE 1 //131Bytes + +#define ADC_ENABLE 1 //545Bytes + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 0 //274Bytes +#endif + +#define BAT_VALUE 1 //125Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + + #define _DEBUG_MAIN + #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/define(943).h b/TP3310_Demo.si4project/Backup/define(943).h new file mode 100644 index 0000000..41f4ba9 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/define(943).h @@ -0,0 +1,116 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef _DEFINE_H_ +#define _DEFINE_H_ + +#include "config.h" + +/*Function Selectѡ궨*/ + +//#define DISPLAY_LED_188 //188ʾ,Timer1ʱɨ裨631Bytes + +#define TIMER1_ENABLE 0 //Timer1 ʱ100us(46Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(55Bytes) + +#define WTG_ENABLE 1 //Źʹ + +#define LED_DISPLAY //LEDʾ (756Bytes) + +#define KEY_HALL_ENABLE 0 //KeyHallܡ(216Bytes) + +#define SET_CHG_TIM 0 //óʱ䡣 + +#define VOX_ENABLE 0 //663Bytes + +#define CHARGER_ENABLE 0 //135Bytes + +#define DISCHARGE_ENABLE 0 //121Bytes + +#define BOOST_AOUT + +#define SLEEP_ENABLE 1 + +#define ADC_ENABLE 1 + +#if ADC_ENABLE +#define ADC_CHN_ENABLE 1 //284Bytes +#endif + +#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX +// #define _DEBUG_HALL + #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#include "reg3310.h" +#include "uart.h" + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(1255).c b/TP3310_Demo.si4project/Backup/discharge_module(1255).c new file mode 100644 index 0000000..1a285b8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(1255).c @@ -0,0 +1,293 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gBoost_Prepared_Flag = 0; //Boost㿪 +bit gBoost_Opened_Flag = 0; //Boost + +bit gBoost_UVLO_Flag = 0; + +uint8_t Boost_Open_Debounce = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +#ifndef BOOST_AOUT + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( BST_EN & 0x01 ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } + +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰѹ·عѹ UVLO ŵNTC ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + + /* ѹ --- Ӳʵ֣ޱ־λ */ + + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + + /*· -- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( CHIP_STA0 & 0x40 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + BST_EN = 1; //250msʱһBoost + } + return; + } + + /*Boost Input UVLO Ӳ*/ + if( CHIP_STA0 & 0x80 ) //bit8:1:UVLO;0:normal + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + gBoost_UVLO_Flag = 1; //ڵؼУ + BST_EN = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Uvlo!\r\n"); +#endif + return; + } + + /*BAT Low*/ + if( CHIP_STA2 & 0x04 ) //bat lowboost BAT LOW detection enabled only when boost is enabled. δBoostڽStandby Modeǻᱻص͵绽ѡ + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; + +#ifdef _DEBUG_DISCHARGE + printf("BAT LOW Pro!\r\n"); +#endif + return; + } + +#ifndef BOOST_AOUT + + if( gBoost_UVLO_Flag ) + { + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + */ + if( CHIP_STA4 & 0x07 ) //Get In Charger Mode + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } + else + { + if( Vbat_Adc >= OPEN_BOOST_NOVIN ) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } +#endif + + } + else + { + gBoost_Prepared_Flag = 1; + } + +#else + + gBoost_Prepared_Flag = 1; //δBoostرԿBoost + + if( gBoost_UVLO_Flag ) + { + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + */ + if( CHIP_STA4 & 0x07 ) //Get In Charger Mode + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + if( gBoost_Prepared_Flag ) + { + BST_EN = 1; + gBoost_Opened_Flag = 1; + gBoost_UVLO_Flag = 0; + } + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + } + } + else + { + if( Vbat_Adc >= OPEN_BOOST_NOVIN ) + { + if( gBoost_Prepared_Flag ) + { + BST_EN = 1; + gBoost_Opened_Flag = 1; + gBoost_UVLO_Flag = 0; + } + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + } + } +#endif + + } + else + { + if( gBoost_Prepared_Flag ) + { + if( !(BST_EN & 0x01) ) + { + BST_EN = 1; +#ifdef LED_DISPLAY + LED_R_FLASH(50,10); + LED_G_FLASH(50,10); +#endif + } + Boost_Open_Debounce++; + if( Boost_Open_Debounce >= BOOST_OPEN_TIM ) //Boost Ҫʱһʱ䡣 + { + gBoost_Opened_Flag = 1; + Boost_Open_Debounce = 0; + } + } + } +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(1717).h b/TP3310_Demo.si4project/Backup/discharge_module(1717).h new file mode 100644 index 0000000..35c5936 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(1717).h @@ -0,0 +1,38 @@ +/* + ****************************************************************************** + * + * @file discharge_module.h + * @brief discharge module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __DISCHARGE_MODULE_H__ +#define __DISCHARGE_MODULE_H__ + +#include "define.h" +#if DISCHARGE_ENABLE + +#define BOOST_HICCUP_TIM 10 +#define NTC_PROTECT_TEMP 1500 + +extern uint8_t Boost_Protect_Type; +extern bit gBoost_Prepared_Flag; //Boost㿪 +extern bit gBoost_Opened_Flag; //Boost + +//extern void Boost_Init(void); +extern void DisCharge_Boost_Protect_Handle(void); +extern void DisCharge_Handler(void); +#endif +#endif diff --git a/TP3310_Demo.si4project/Backup/discharge_module(1764).c b/TP3310_Demo.si4project/Backup/discharge_module(1764).c new file mode 100644 index 0000000..1f92a24 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(1764).c @@ -0,0 +1,189 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +bit gBoost_Prepared_Flag = 0; //Boost㿪 + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + + +bit gBoost_UVLO_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +#if 0 +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰ· UVLO ŵ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + /*ŵ --- Ӳʵ*/ +#if 0 + gBoost_Prepared_Flag = 1; +#else + /*± --- Ӳʵ*/ + if( CHIP_STA3 & 0x02 ) + { + gBoost_Prepared_Flag = 0; + return; + } + + /*Boost Input UVLO Ӳʵ*/ + if( (CHIP_STA0 & 0x80) ) //־λ + { + gBoost_Prepared_Flag = 0; + gBoost_UVLO_Flag = 1; + return; + } + + /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( IRQ_FLAG0 & 0x01 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + gBoost_Prepared_Flag = 0; + + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + IRQ_FLAG0 = 0x01; + + BST_EN = 1; //250msʱһBoost + } + return; + } + + gBoost_Prepared_Flag = 1; + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + ֻעVINʱUVLOָBoostVINӲ + */ + if ( gBoost_UVLO_Flag ) + { + if( CHIP_STA4 & 0x80 ) //Power GOOD + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + gBoost_UVLO_Flag = 0; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } + } + +#endif +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(2099).h b/TP3310_Demo.si4project/Backup/discharge_module(2099).h new file mode 100644 index 0000000..1a14ba2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(2099).h @@ -0,0 +1,40 @@ +/* + ****************************************************************************** + * + * @file discharge_module.h + * @brief discharge module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __DISCHARGE_MODULE_H__ +#define __DISCHARGE_MODULE_H__ + +#include "define.h" + +#if DISCHARGE_ENABLE + +#define BOOST_OPEN_TIM 10 + +extern bit gBoost_Prepared_Flag; //Boost㿪 + +extern void DisCharge_Boost_Open(void); +extern void DisCharge_Boost_Close(void); + +extern void DisCharge_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(3046).c b/TP3310_Demo.si4project/Backup/discharge_module(3046).c new file mode 100644 index 0000000..b629823 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(3046).c @@ -0,0 +1,312 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gBoost_Prepared_Flag = 0; //Boost㿪 +bit gBoost_Opened_Flag = 0; //Boost + +bit gBoost_UVLO_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* void DisCharge_init(void) +* +* Description : DisCharger Initialization +* +* Arguments : uint8_t Boost_Vout:BoostѹڣDefault:5V00000~00111:4.0VӲ趨Сֵ01000:4.05 .... 11111:5.2Vñȵصѹͣᴥ· + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +#if 0 +void Boost_Init(void) +{ + if(Boost_Vout <= 0x07) + { + BST_EN = 0x01; + } +} +#endif +#ifndef BOOST_AOUT + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if(!(BST_EN & 0x01) && gBoost_Prepared_Flag) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Boost Open!\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( BST_EN & 0x01 ) + { + BST_EN = 0; //Boost Disable + } +#ifdef _DEBUG_DISCHARGE + printf("Boost Close!\r\n"); +#endif + gBoost_Prepared_Flag = 0; + } + +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰѹ·عѹ UVLO ŵNTC ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ +void DisCharge_Handler(void) +{ + uint16_t Vbat_Adc = 0; + + /* ѹ --- Ӳʵ֣ޱ־λ */ + + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + if(CHIP_STA3 & 0x02) + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro DIR OT!\r\n"); +#endif + return; + } + + /*· -- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if(Protect_Type_Flg & BOOST_OUTPUT_SHORT_PRO_TYPE) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + //һֱ + if(F_sys_tim_250ms) + { + F_sys_tim_250ms = 0; + Protect_Type_Flg &= ~BOOST_OUTPUT_SHORT_PRO_TYPE; + BST_EN = 1; //250msʱһBoost + } + return; + } + + /*Boost Input UVLO Ӳ*/ + if( CHIP_STA0 & 0x80 ) //bit8:1:UVLO;0:normal + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + gBoost_UVLO_Flag = 1; //ڵؼУ + BST_EN = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Uvlo!\r\n"); +#endif + return; + } + /*BAT Low*/ + if( CHIP_STA2 & 0x04 ) //bat lowboost BAT LOW detection enabled only when boost is enabled. δBoostڽStandby Modeǻᱻص͵绽ѡ + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; + +#ifdef _DEBUG_DISCHARGE + printf("BAT LOW Pro!\r\n"); +#endif + return; + } + +#ifndef BOOST_AOUT + + if( gBoost_UVLO_Flag ) + { +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + */ + if( CHIP_STA4 & 0x07 ) //Get In Charger Mode + { + if(Vbat_Adc >= OPEN_BOOST_VIN) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } + else + { + if(Vbat_Adc >= OPEN_BOOST_NOVIN) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } + } + else + { + gBoost_Prepared_Flag = 1; + } + +#else + + gBoost_Prepared_Flag = 1; //δBoostرԿBoost + + if( gBoost_UVLO_Flag ) + { + + #if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ + #endif + + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + */ + + if( CHIP_STA4 & 0x07 ) //Get In Charger Mode + { + if(Vbat_Adc >= OPEN_BOOST_VIN) + { + if( gBoost_Prepared_Flag ) + { + BST_EN = 1; + gBoost_Opened_Flag = 1; + gBoost_UVLO_Flag = 0; + } + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + } + } + else + { + if(Vbat_Adc >= OPEN_BOOST_NOVIN) + { + if( gBoost_Prepared_Flag ) + { + BST_EN = 1; + gBoost_Opened_Flag = 1; + gBoost_UVLO_Flag = 0; + } + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + } + } + } + else + { + if( gBoost_Prepared_Flag ) + { + gBoost_Opened_Flag = 1; + BST_EN = 1; + } + } +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(3516).h b/TP3310_Demo.si4project/Backup/discharge_module(3516).h new file mode 100644 index 0000000..0e4a3e5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(3516).h @@ -0,0 +1,42 @@ +/* + ****************************************************************************** + * + * @file discharge_module.h + * @brief discharge module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __DISCHARGE_MODULE_H__ +#define __DISCHARGE_MODULE_H__ + +#include "define.h" +#if DISCHARGE_ENABLE + +#define BOOST_HICCUP_TIM 10 +#define NTC_PROTECT_TEMP 1500 + +extern bit gBoost_Prepared_Flag; //Boost㿪 +extern bit gBoost_Opened_Flag; //Boost + +//extern void Boost_Init(void); +#ifndef BOOST_AOUT +extern void DisCharge_Boost_Open(void); +extern void DisCharge_Boost_Close(void); +#endif + +extern void DisCharge_Handler(void); + +#endif +#endif diff --git a/TP3310_Demo.si4project/Backup/discharge_module(5430).c b/TP3310_Demo.si4project/Backup/discharge_module(5430).c new file mode 100644 index 0000000..e63b7b1 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(5430).c @@ -0,0 +1,210 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gBoost_Prepared_Flag = 0; //Boost㿪 +bit gBoost_Opened_Flag = 0; //Boost +bit gBoost_Uvlo_Flag = 0; + +uint8_t Boost_Open_Debounce = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +#ifndef BOOST_AOUT + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } + +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰ· UVLO ŵ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + if( CHIP_STA3 & 0x02 ) + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + return; + } + + /*Boost Input UVLO Ӳʵ*/ + if( (CHIP_STA0 & 0x80) ) //־λ + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + gBoost_Uvlo_Flag = 1; + return; + } + + /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( IRQ_FLAG0 & 0x01 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + IRQ_FLAG0 = 0x01; + BST_EN = 1; //250msʱһBoost + } + return; + } + + gBoost_Prepared_Flag = 1; + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + ֻעVINʱUVLOָBoostVINӲ + */ + if ( gBoost_Uvlo_Flag ) + { + if( CHIP_STA4 & 0x80 ) //Power GOOD + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + } + } + } + +#endif + + +#ifdef BOOST_AOUT + + if( gBoost_Prepared_Flag ) + { + if( !(BST_EN & 0x01) ) + { + BST_EN = 1; + } + Boost_Open_Debounce++; + if( Boost_Open_Debounce >= BOOST_OPEN_TIM ) //Boost Ҫʱһʱ䣨1ms + { + gBoost_Opened_Flag = 1; + Boost_Open_Debounce = 0; + } + } + +#endif + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(5455).h b/TP3310_Demo.si4project/Backup/discharge_module(5455).h new file mode 100644 index 0000000..605f4b4 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(5455).h @@ -0,0 +1,49 @@ +/* + ****************************************************************************** + * + * @file discharge_module.h + * @brief discharge module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __DISCHARGE_MODULE_H__ +#define __DISCHARGE_MODULE_H__ + +#include "define.h" + +#if DISCHARGE_ENABLE + +#define BOOST_OPEN_TIM 10 + +extern bit gBoost_Prepared_Flag; //Boost㿪 +extern bit gBoost_Opened_Flag; //Boost + +#ifdef BOOST_AOUT +extern bit gBoost_Opened_Flag; //Boost +#endif + +#ifndef BOOST_AOUT + +extern void DisCharge_Boost_Open(void); +extern void DisCharge_Boost_Close(void); + +#endif + +extern void DisCharge_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(6056).h b/TP3310_Demo.si4project/Backup/discharge_module(6056).h new file mode 100644 index 0000000..199045e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(6056).h @@ -0,0 +1,45 @@ +/* + ****************************************************************************** + * + * @file discharge_module.h + * @brief discharge module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __DISCHARGE_MODULE_H__ +#define __DISCHARGE_MODULE_H__ + +#include "define.h" + +#if DISCHARGE_ENABLE + +#define BOOST_OPEN_TIM 10 + +extern bit gBoost_Prepared_Flag; //Boost㿪 +extern bit gBoost_Opened_Flag; //Boost + +#ifndef BOOST_AOUT + +extern void DisCharge_Boost_Open(void); +extern void DisCharge_Boost_Close(void); + +#endif + +extern void DisCharge_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(6639).c b/TP3310_Demo.si4project/Backup/discharge_module(6639).c new file mode 100644 index 0000000..b0a1ad9 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(6639).c @@ -0,0 +1,225 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gBoost_Prepared_Flag = 0; //Boost㿪 +#ifdef BOOST_AOUT +bit gBoost_Opened_Flag = 0; //Boost +#endif + +bit gBoost_UVLO_Flag = 0; + +uint8_t Boost_Open_Debounce = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +#ifndef BOOST_AOUT + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } + +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰ· UVLO ŵ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + if( CHIP_STA3 & 0x02 ) + { + gBoost_Prepared_Flag = 0; +#ifdef BOOST_AOUT + gBoost_Opened_Flag = 0; +#endif + return; + } + + /*Boost Input UVLO Ӳʵ*/ + if( (CHIP_STA0 & 0x80) ) //־λ + { + gBoost_Prepared_Flag = 0; +#ifdef BOOST_AOUT + gBoost_Opened_Flag = 0; +#endif + gBoost_UVLO_Flag = 1; + return; + } + + /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( IRQ_FLAG0 & 0x01 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + gBoost_Prepared_Flag = 0; +#ifdef BOOST_AOUT + gBoost_Opened_Flag = 0; +#endif + + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + IRQ_FLAG0 = 0x01; + + BST_EN = 1; //250msʱһBoost + } + return; + } + + gBoost_Prepared_Flag = 1; + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + ֻעVINʱUVLOָBoostVINӲ + */ + if ( gBoost_UVLO_Flag ) + { + if( CHIP_STA4 & 0x80 ) //Power GOOD + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + gBoost_UVLO_Flag = 0; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; +#ifdef BOOST_AOUT + gBoost_Opened_Flag = 0; +#endif + } + } + } + +#endif + + +#ifdef BOOST_AOUT + + if( gBoost_Prepared_Flag ) + { + if( !(BST_EN & 0x01) ) + { + BST_EN = 1; + } + Boost_Open_Debounce++; + if( Boost_Open_Debounce >= BOOST_OPEN_TIM ) //Boost Ҫʱһʱ䣨1ms + { + gBoost_Opened_Flag = 1; + Boost_Open_Debounce = 0; + } + } + +#endif + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(6754).c b/TP3310_Demo.si4project/Backup/discharge_module(6754).c new file mode 100644 index 0000000..9d254d6 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(6754).c @@ -0,0 +1,345 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t Boost_Short_Tim = 0; + +uint8_t Boost_Protect_Type = 0; + +bit gBoost_Prepared_Flag = 0; //Boost㿪 +bit gBoost_Opened_Flag = 0; //Boost + +bit gBoost_UVLO_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* void DisCharge_init(void) +* +* Description : DisCharger Initialization +* +* Arguments : uint8_t Boost_Vout:BoostѹڣDefault:5V00000~00111:4.0VӲ趨Сֵ01000:4.05 .... 11111:5.2Vñȵصѹͣᴥ· + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +#if 0 +void Boost_Init(void) +{ + if(Boost_Vout <= 0x07) + { + BST_EN = 0x01; + } +} +#endif +#if 0 + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if(!(BST_EN & 0x01) && gBoost_Prepared_Flag) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Boost Open!\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( BST_EN & 0x01 ) + { + BST_EN = 0; //Boost Disable + } +#ifdef _DEBUG_DISCHARGE + printf("Boost Close!\r\n"); +#endif + gBoost_Prepared_Flag = 0; + } + +#endif +/* +******************************************************************************* +* void DisCharge_Boost_Protect_Handle(void) +* +* Description : Boostŵıܰѹ·عѹ UVLO ŵNTC ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Boost_Protect_Handle(void) +{ + uint8_t Irq_Flag = 0; + + uint16_t nNTC_Adc_Value = 0; + + uint16_t Vbat_Adc = 0; + + uint8_t Ret = 0; + + /* ѹ --- Ӳʵ֣ޱ־λ */ + + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + if(CHIP_STA3 & 0x02) + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro DIR OT!\r\n"); +#endif + return; + } + + /*⣺Ӵ󣬹Ƿָ*/ +#if 1 + /*NTC */ + Ret = PMU_NTC_Control(); //ʹChargerǰȼNTC¶ȣ쳣ͲBoostڷŵʱҪ standby ģʽʱʱϵͳ NTC ¶ȡ + if(Ret == FALSE) //NTC硣 + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro ntc error!\r\n"); +#endif + return; + } +#endif + /*· -- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + //Reg_Chip_Sta = CHIP_STA0; + if(Protect_Type_Flg & BOOST_OUTPUT_SHORT_PRO_TYPE) /**/ + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif +#if 0 //BOOST_HICCUP_TIMκ󣬲ٿBoostϵͳ + if(Boost_Short_Tim <= BOOST_HICCUP_TIM) + { + if(F_sys_tim_250ms) + { + F_sys_tim_250ms = 0; + Protect_Type_Flg &= ~BOOST_OUTPUT_SHORT_PRO_TYPE; + + BST_EN = 1; //250msʱһBoost + Boost_Short_Tim++; + } + } + else + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; + } +#else //һֱ + + if(F_sys_tim_250ms) + { + F_sys_tim_250ms = 0; + Protect_Type_Flg &= ~BOOST_OUTPUT_SHORT_PRO_TYPE; + BST_EN = 1; //250msʱһBoost + } + +#endif + return; + } + + /*Boost Input UVLO Ӳ*/ + if(!(CHIP_STA0 & 0x80)) + { + Boost_Protect_Type |= BOOST_UVLO_PRO_TYPE; + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + gBoost_UVLO_Flag = 1; //ڵؼУ + BST_EN = 0; +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Uvlo!\r\n"); +#endif + return; + } +#if 1 + /*BAT Low*/ + if( CHIP_STA2 & 0x04 ) //bat lowboost BAT LOW detection enabled only when boost is enabled. δBoostڽStandby Modeǻᱻص͵绽ѡ + { + Boost_Protect_Type |= BAT_LOW_PRO_TYPE; + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + BST_EN = 0; + // LEDR_TOG(); +#ifdef _DEBUG_DISCHARGE + printf("BAT LOW Pro!\r\n"); +#endif + return; + } + +#endif + + gBoost_Prepared_Flag = 1; //δBoostرԿBoost + + if( 1 == gBoost_UVLO_Flag ) + { + #if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ + #endif + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + */ + if( CHIP_STA4 & 0x07 ) //Get In Charger Mode + { + if(Vbat_Adc >= OPEN_BOOST_VIN) + { + if(gBoost_Prepared_Flag) + { + gBoost_Opened_Flag = 1; + BST_EN = 1; + gBoost_UVLO_Flag = 0; + Boost_Protect_Type &= ~BOOST_OUTPUT_SHORT_PRO_TYPE; + Boost_Protect_Type &= ~BOOST_UVLO_PRO_TYPE; + Boost_Short_Tim = 0; + } + } + else + { + Boost_Protect_Type |= BOOST_UVLO_PRO_TYPE; + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + } + } + else + { + if(Vbat_Adc >= OPEN_BOOST_NOVIN) + { + if(gBoost_Prepared_Flag) + { + gBoost_Opened_Flag = 1; + BST_EN = 1; + gBoost_UVLO_Flag = 0; + Boost_Protect_Type &= ~BOOST_OUTPUT_SHORT_PRO_TYPE; + Boost_Protect_Type &= ~BOOST_UVLO_PRO_TYPE; + Boost_Short_Tim = 0; + } + } + else + { + Boost_Protect_Type |= BOOST_UVLO_PRO_TYPE; + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + } + } + } + else + { + if(gBoost_Prepared_Flag) + { + gBoost_Opened_Flag = 1; + BST_EN = 1; + } + } + +} + +/* +******************************************************************************* +* void DisCharge_While_Charging(void) +* +* Description : ߳߷š +* +* Arguments : uint8_t Ext_MOS --- 0:No External MOS;1:Exist External MOS, GPIO Control. + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + + +void DisCharge_Handler(void) +{ + DisCharge_Boost_Protect_Handle(); +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(7137).c b/TP3310_Demo.si4project/Backup/discharge_module(7137).c new file mode 100644 index 0000000..2bb6503 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(7137).c @@ -0,0 +1,222 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gBoost_Prepared_Flag = 0; //Boost㿪 +bit gBoost_Opened_Flag = 0; //Boost +bit gBoost_Uvlo_Flag = 0; + +uint8_t Boost_Open_Debounce = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +#ifndef BOOST_AOUT + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } + +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰ· UVLO ŵ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + #if 1 + if( CHIP_STA3 & 0x02 ) + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + return; + } + #endif + /*Boost Input UVLO Ӳʵ*/ + if( (CHIP_STA0 & 0x80) ) //־λ + { + gBoost_Prepared_Flag = 0; + gBoost_Opened_Flag = 0; + gBoost_Uvlo_Flag = 1; + return; + } + + /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( IRQ_FLAG0 & 0x0x01 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + IRQ_FLAG0 = 0x01; + BST_EN = 1; //250msʱһBoost + } + return; + } + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + ֻעVINʱUVLOָBoostVINӲ + */ + if ( gBoost_Uvlo_Flag ) + { + if( CHIP_STA4 & 0x80 ) //Power GOOD + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + + } + } + else + { + if( Vbat_Adc >= OPEN_BOOST_NOVIN ) + { + gBoost_Prepared_Flag = 1; + } + else + { + BST_EN = 0; //Boost Disable + + } + } + } +#else + + gBoost_Prepared_Flag = 1; + +#endif + + +#ifdef BOOST_AOUT + + if( gBoost_Prepared_Flag ) + { + if( !(BST_EN & 0x01) ) + { + BST_EN = 1; + } + Boost_Open_Debounce++; + if( Boost_Open_Debounce >= BOOST_OPEN_TIM ) //Boost Ҫʱһʱ䣨1ms + { + gBoost_Opened_Flag = 1; + Boost_Open_Debounce = 0; + } + } + +#endif + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/discharge_module(932).c b/TP3310_Demo.si4project/Backup/discharge_module(932).c new file mode 100644 index 0000000..ea9d708 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/discharge_module(932).c @@ -0,0 +1,187 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gBoost_Prepared_Flag = 0; //Boost㿪 + +bit gBoost_UVLO_Flag = 0; + +uint8_t Boost_Open_Debounce = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } + +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰ· UVLO ŵ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + /*ŵ --- Ӳʵ*/ + + /*± --- Ӳʵ*/ + if( CHIP_STA3 & 0x02 ) + { + gBoost_Prepared_Flag = 0; + return; + } + + /*Boost Input UVLO Ӳʵ*/ + if( (CHIP_STA0 & 0x80) ) //־λ + { + gBoost_Prepared_Flag = 0; + gBoost_UVLO_Flag = 1; + return; + } + + /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( IRQ_FLAG0 & 0x01 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + gBoost_Prepared_Flag = 0; + + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + IRQ_FLAG0 = 0x01; + + BST_EN = 1; //250msʱһBoost + } + return; + } + + gBoost_Prepared_Flag = 1; + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + ֻעVINʱUVLOָBoostVINӲ + */ + if ( gBoost_UVLO_Flag ) + { + if( CHIP_STA4 & 0x80 ) //Power GOOD + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + gBoost_UVLO_Flag = 0; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } + } + +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/gpio(1939).h b/TP3310_Demo.si4project/Backup/gpio(1939).h new file mode 100644 index 0000000..ce1085d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/gpio(1939).h @@ -0,0 +1,35 @@ +/* + ****************************************************************************** + * + * @file gpio.h + * @brief gpio module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#include "define.h" + +extern bit Enter_Ship_Mode_Flag; +extern bit Ship_Mode_Comm_Flag; + +extern void GPIO_Init(void); +//extern void Enter_ShipMode(void); + + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/gpio(2630).h b/TP3310_Demo.si4project/Backup/gpio(2630).h new file mode 100644 index 0000000..766d404 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/gpio(2630).h @@ -0,0 +1,33 @@ +/* + ****************************************************************************** + * + * @file gpio.h + * @brief gpio module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#include "define.h" + + +extern void GPIO_Init(void); +//extern void Enter_ShipMode(void); + + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/gpio(3587).c b/TP3310_Demo.si4project/Backup/gpio(3587).c new file mode 100644 index 0000000..215be03 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/gpio(3587).c @@ -0,0 +1,66 @@ +/* + ****************************************************************************** + * + * @file gpio.c + * @brief gpio module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "gpio.h" +#include "sleep.h" +#include "userapp.h" +#include "led.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +//uint8_t System_Rst_Cnt = 0; //ϵͳλʱ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Gpio_Init(void) + * + * Description : gpio Initialization. --- ϵͳʼá + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 1 +void GPIO_Init(void) +{ + /* GPIO */ + +// SFRADDR = P0_OE; +// SFRDATA |= 0x1C; //P02,P03,P04óģʽ + + SFRADDR = P1_OE; + SFRDATA = 0x01; +} +#endif + + diff --git a/TP3310_Demo.si4project/Backup/gpio(5246).c b/TP3310_Demo.si4project/Backup/gpio(5246).c new file mode 100644 index 0000000..cb94f28 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/gpio(5246).c @@ -0,0 +1,110 @@ +/* + ****************************************************************************** + * + * @file gpio.c + * @brief gpio module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "gpio.h" +#include "sleep.h" +#include "userapp.h" +#include "led.h" + + + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define SYSTEM_RST_CNT 20 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t System_Rst_Cnt = 0; //ϵͳλʱ +bit Enter_Ship_Mode_Flag = 0; +bit Ship_Mode_Comm_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Gpio_Init(void) + * + * Description : gpio Initialization. --- ϵͳʼá + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 1 +void GPIO_Init(void) +{ + /* GPIO */ + + SFRADDR = P0_OE; + SFRDATA |= 0x1C; //P02,P03,P04óģʽ +} +#endif +#if 0 +/* + ******************************************************************************* + * void Enter_ShipMode(void) + * + * Description : System Rset (Set P03 as Rest GPIO) + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Enter_ShipMode(void) +{ + if(P03 == 1) + { + System_Rst_Cnt++; + if(System_Rst_Cnt > SYSTEM_RST_CNT) + { + System_Rst_Cnt = 0; + if(P03 == 1) + { + if(!Enter_Ship_Mode_Flag) + { + Enter_Ship_Mode_Flag = 1; + Ship_Mode_Comm_Flag = 1; + Systerm_State.Next_State = SLEEP_STATE; //Sleep Mode + Enter_ShipMode_Debounce = 0; + +#ifdef _DEBUG_MAIN + printf("Enter ShipMode!\r\n"); +#endif + } + } + } + } + +} +#endif + + diff --git a/TP3310_Demo.si4project/Backup/hall(124).h b/TP3310_Demo.si4project/Backup/hall(124).h new file mode 100644 index 0000000..1d270fa --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(124).h @@ -0,0 +1,46 @@ +/* + ****************************************************************************** + * + * @file hall.h + * @brief hall module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __HALL_H__ +#define __HALL_H__ + +#include "define.h" + +#if KEY_HALL_ENABLE + + +typedef enum{ + + CLOSE = 0, + OPEN = !CLOSE + +} CoverStatus_E; + +extern CoverStatus_E CoverStatus; + +extern bit CoverEvent_Flg; + +extern void Hall_Init(void); +extern void Hall_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/hall(3518).c b/TP3310_Demo.si4project/Backup/hall(3518).c new file mode 100644 index 0000000..d943b21 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(3518).c @@ -0,0 +1,156 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Hall_Init(void) +{ +#if 0 + SFRADDR = MFP_CTL1; //Set P06 as Hall Function + SFRDATA &= ~0x30; + SFRDATA |= 0x10; +#endif + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } +#if 0 + SFRADDR = PMU_CTL0; + SFRDATA |= 0x08; //Hall Detect Enable +#endif +} +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Hall_Handler(void) + { + if(Hall_Positive_Flg) //Hall status with analog debounce + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + + Hall_Positive_Flg = 0; + CoverEvent_Flg = 1; +#ifdef LED_DISPLAY + LED_G_OFF(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + if(Hall_Negative_Flg) + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + + Hall_Negative_Flg = 0; + CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + } + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(3671).h b/TP3310_Demo.si4project/Backup/hall(3671).h new file mode 100644 index 0000000..69f030d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(3671).h @@ -0,0 +1,45 @@ +/* + ****************************************************************************** + * + * @file hall.h + * @brief hall module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __HALL_H__ +#define __HALL_H__ + +#include "define.h" + +#if KEY_HALL_ENABLE + +typedef enum{ + + CLOSE = 0, + OPEN = !CLOSE + +} CoverStatus_E; + +extern CoverStatus_E CoverStatus; + +extern bit CoverEvent_Flg; + +extern void Hall_Init(void); +extern void Hall_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/hall(4185).c b/TP3310_Demo.si4project/Backup/hall(4185).c new file mode 100644 index 0000000..e976fd7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(4185).c @@ -0,0 +1,165 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" +#include "vox_module.h" +#include "userapp.h" +#include "charger_module.h" + + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t Hall_Sta_bk = 0xff; + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ +bit CoverEvent_Flg_led = 0; + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 0 + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } + + //Hall_Sta_bk = (CHIP_STA0 & 0x08); +} + #endif +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Hall_Handler(void) + { + uint8_t Hall_Sta = 0; + if( CHIP_STA0 & 0x10 ) + { + Hall_Sta = CHIP_STA0 & 0x08; + if( Hall_Sta != Hall_Sta_bk) + { + if(CHIP_STA0 & 0x08) //Hall ߵƽ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#else + CoverStatus = OPEN; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + + CoverEvent_Flg = 1; + CoverEvent_Flg_led = 1; + LED_On_Timer = 0; + //LED_On_Timer1 = 0; + Vox_TX_Timer = 0; + Hall_Sta_bk = Hall_Sta; + } + } + } + + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(5154).c b/TP3310_Demo.si4project/Backup/hall(5154).c new file mode 100644 index 0000000..5b83481 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(5154).c @@ -0,0 +1,150 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +CoverStatus_E CoverStatus; + +//bit CoverEvent_Flg = 0; //Hallش¼־λ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } +} +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Hall_Handler(void) + { + if(Hall_Positive_Flg) //Hall status with analog debounce + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + + Hall_Positive_Flg = 0; + //CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_B_OFF(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + if(Hall_Negative_Flg) + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + + Hall_Negative_Flg = 0; + //CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_B_ON(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + } + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(5543).h b/TP3310_Demo.si4project/Backup/hall(5543).h new file mode 100644 index 0000000..86c158a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(5543).h @@ -0,0 +1,47 @@ +/* + ****************************************************************************** + * + * @file hall.h + * @brief hall module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __HALL_H__ +#define __HALL_H__ + +#include "define.h" + + + +typedef enum{ + + CLOSE = 0, + OPEN = !CLOSE + +} CoverStatus_E; + +extern CoverStatus_E CoverStatus; + +extern bit CoverEvent_Flg; +extern bit CoverEvent_Flg_led; +#if KEY_HALL_ENABLE + +//extern void Hall_Init(void); +extern void Hall_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/hall(5574).c b/TP3310_Demo.si4project/Backup/hall(5574).c new file mode 100644 index 0000000..a170dba --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(5574).c @@ -0,0 +1,165 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" +#include "vox_module.h" +#include "userapp.h" +#include "charger_module.h" + + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t Hall_Sta_bk = 0xff; + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ +bit CoverEvent_Flg_led = 0; + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 0 + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } + + //Hall_Sta_bk = (CHIP_STA0 & 0x08); +} + #endif +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Hall_Handler(void) + { + uint8_t Hall_Sta = 0; + if( CHIP_STA0 & 0x10 ) + { + Hall_Sta = CHIP_STA0 & 0x08; + if( Hall_Sta != Hall_Sta_bk) + { + if(CHIP_STA0 & 0x08) //Hall ߵƽ + { + //P10 = 1; +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + { + //P10 = 0; +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#else + CoverStatus = OPEN; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + + CoverEvent_Flg = 1; + CoverEvent_Flg_led = 1; + LED_On_Timer = 0; + //LED_On_Timer1 = 0; + Vox_TX_Timer = 0; + Hall_Sta_bk = Hall_Sta; + } + } + } + + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(6524).c b/TP3310_Demo.si4project/Backup/hall(6524).c new file mode 100644 index 0000000..6d69204 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(6524).c @@ -0,0 +1,164 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" +#include "vox_module.h" +#include "userapp.h" +#include "charger_module.h" + + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t Hall_Sta_bk = 0xff; + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ +bit CoverEvent_Flg_led = 0; + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 0 + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } + + //Hall_Sta_bk = (CHIP_STA0 & 0x08); +} + #endif +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Hall_Handler(void) + { + uint8_t Hall_Sta = 0; + if( CHIP_STA0 & 0x10 ) + { + Hall_Sta = CHIP_STA0 & 0x08; + if( Hall_Sta != Hall_Sta_bk) + { + if(CHIP_STA0 & 0x08) //Hall ߵƽ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#else + CoverStatus = OPEN; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + + CoverEvent_Flg = 1; + CoverEvent_Flg_led = 1; + LED_On_Timer = 0; + Vox_TX_Timer = 0; + Hall_Sta_bk = Hall_Sta; + } + } + } + + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(6688).c b/TP3310_Demo.si4project/Backup/hall(6688).c new file mode 100644 index 0000000..eb04608 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(6688).c @@ -0,0 +1,164 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" +#include "vox_module.h" +#include "userapp.h" +#include "charger_module.h" + + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t Hall_Sta_bk = 0xff; + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ +bit CoverEvent_Flg_led = 0; + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 0 + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } + + //Hall_Sta_bk = (CHIP_STA0 & 0x08); +} + #endif +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Hall_Handler(void) + { + uint8_t Hall_Sta = 0; + if( CHIP_STA0 & 0x10 ) + { + Hall_Sta = CHIP_STA0&0x08; + if( Hall_Sta != Hall_Sta_bk) + { + if(CHIP_STA0 & 0x08) //Hall ߵƽ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; + led_blink_1time_flag = 0; + +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; + led_blink_1time_flag = 0; + +#else + CoverStatus = OPEN; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + CoverEvent_Flg = 1; + CoverEvent_Flg_led = 1; + LED_On_Timer = 0; + Hall_Sta_bk = Hall_Sta; + } + } + } + + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(7144).c b/TP3310_Demo.si4project/Backup/hall(7144).c new file mode 100644 index 0000000..0f50024 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(7144).c @@ -0,0 +1,155 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" +#include "vox_module.h" + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +bit Hall_Positive_Flg = 0; +bit Hall_Negative_Flg = 0; + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } +} +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Hall_Handler(void) + { + if(Hall_Positive_Flg) //Hall status with analog debounce + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + + Hall_Positive_Flg = 0; + CoverEvent_Flg = 1; + /*ʾظǵЧ*/ + /*todo*/ +#ifdef LED_DISPLAY + //LED_B_OFF(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + if(Hall_Negative_Flg) + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + + Hall_Negative_Flg = 0; + CoverEvent_Flg = 1; + /*ʾǵЧ*/ + /*todo*/ +#ifdef LED_DISPLAY + //LED_B_ON(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + } + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(7306).c b/TP3310_Demo.si4project/Backup/hall(7306).c new file mode 100644 index 0000000..1e59a92 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(7306).c @@ -0,0 +1,151 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } + +} +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Hall_Handler(void) + { + if(Hall_Positive_Flg) //Hall status with analog debounce + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + + Hall_Positive_Flg = 0; + CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_G_OFF(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + if(Hall_Negative_Flg) + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + + Hall_Negative_Flg = 0; + CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + } + #endif + diff --git a/TP3310_Demo.si4project/Backup/hall(735).c b/TP3310_Demo.si4project/Backup/hall(735).c new file mode 100644 index 0000000..4fc07f6 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(735).c @@ -0,0 +1,171 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Hall_Init(void) +{ +#if 0 + SFRADDR = MFP_CTL1; //Set P06 as Hall Function + SFRDATA &= ~0x30; + SFRDATA |= 0x10; +#endif + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif +#ifdef LED_DISPLAY + + LED_G_OFF(); + +#endif + + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif +#ifdef LED_DISPLAY + + LED_G_ON(); + +#endif + + } +#if 0 + SFRADDR = PMU_CTL0; + SFRDATA |= 0x08; //Hall Detect Enable +#endif +} +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Hall_Handler(void) + { + if(Hall_Positive_Flg) //Hall status with analog debounce + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + + Hall_Positive_Flg = 0; + CoverEvent_Flg = 1; +#ifdef LED_DISPLAY + + LED_G_OFF(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + if(Hall_Negative_Flg) + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + + Hall_Negative_Flg = 0; + CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + + LED_G_ON(); + +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + + } + #endif diff --git a/TP3310_Demo.si4project/Backup/hall(738).h b/TP3310_Demo.si4project/Backup/hall(738).h new file mode 100644 index 0000000..d391fc1 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(738).h @@ -0,0 +1,48 @@ +/* + ****************************************************************************** + * + * @file hall.h + * @brief hall module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __HALL_H__ +#define __HALL_H__ + +#include "define.h" + +#if KEY_HALL_ENABLE + +extern bit Hall_Positive_Flg; +extern bit Hall_Negative_Flg; + +typedef enum{ + + CLOSE = 0, + OPEN = !CLOSE + +} CoverStatus_E; + +extern CoverStatus_E CoverStatus; + +extern bit CoverEvent_Flg; + +extern void Hall_Init(void); +extern void Hall_Handler(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/hall(8114).c b/TP3310_Demo.si4project/Backup/hall(8114).c new file mode 100644 index 0000000..ff667b2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/hall(8114).c @@ -0,0 +1,150 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" + +#if KEY_HALL_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +CoverStatus_E CoverStatus; + +//bit CoverEvent_Flg = 0; //Hallش¼־λ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } +} +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Hall_Handler(void) + { + if(Hall_Positive_Flg) //Hall status with analog debounce + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + + Hall_Positive_Flg = 0; + //CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_G_OFF(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + if(Hall_Negative_Flg) + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + + Hall_Negative_Flg = 0; + //CoverEvent_Flg = 1; + +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + } + #endif + diff --git a/TP3310_Demo.si4project/Backup/key(1459).h b/TP3310_Demo.si4project/Backup/key(1459).h new file mode 100644 index 0000000..6fe55eb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(1459).h @@ -0,0 +1,52 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" + +#if KEY_HALL_ENABLE + +extern bit Key_Press_short_irq; +extern bit Key_Press_l_irq; +extern bit Key_Press_ll_irq; + +extern bit Key_l_Flag; + +extern bit Hall_Positive_Flg; +extern bit Hall_Negative_Flg; + +typedef enum { + KEY_EVENT_Empty = 0x00, + KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag + KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag + KEY_EVENT_LL_8S, //Key super long press for 8s interrupt flag +}KEY_EVENT_E; + + +extern idata KEY_EVENT_E Event_key; + +extern void Key_Handler(void ); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(2966).c b/TP3310_Demo.si4project/Backup/key(2966).c new file mode 100644 index 0000000..6903ada --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(2966).c @@ -0,0 +1,133 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" + +#if 0 +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +idata KEY_EVENT_E Event_key = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ + Event_key = KEY_EVENT_L_2S; + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_LL_8S; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_SHORT; + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(3194).c b/TP3310_Demo.si4project/Backup/key(3194).c new file mode 100644 index 0000000..1c57f69 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(3194).c @@ -0,0 +1,141 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" + +#if KEY_HALL_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +bit Hall_Positive_Flg = 0; +bit Hall_Negative_Flg = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ +#ifdef LED_DISPLAY + LED_R_FLASH(50,5); + // LED_B_FLASH(50, bat_level); +#endif + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ +#ifdef LED_DISPLAY + LED_R_FLASH(50,8); +#endif + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ +#ifdef LED_DISPLAY + LED_R_FLASH(50,3); +#endif + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(378).c b/TP3310_Demo.si4project/Backup/key(378).c new file mode 100644 index 0000000..99452df --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(378).c @@ -0,0 +1,248 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" + +#if KEY_HALL_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata KEY_EVENT_E Event_key = 0; + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +//bit Key_short_Flag = 0; +bit Key_l_Flag = 0; +//bit Key_ll_Flag = 0; + +bit Hall_Positive_Flg = 0; +bit Hall_Negative_Flg = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + +/* + ******************************************************************************* + * void KEY_irq(void) + * + * Description : INT4 жϴжϰж͡ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void KEY_irq(void) + { + uint8_t IRQ7_Status = 0; + + IRQ7_Status = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Status; + + if( IRQ7_Status & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + Event_key = KEY_EVENT_SHORT; + } + + if( IRQ7_Status & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + Event_key = KEY_EVENT_L_2S; + } + + if( IRQ7_Status & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + Event_key = KEY_EVENT_LL_8; + } + + if( IRQ7_Status & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( (IRQ7_Status & 0xF0) == 0xF0 ) + { + gIrq_Event_Type |= KEY_IRQ_EVENT; + } + } +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã10msг(ʱ2s(or 3s))Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + + Event_key = KEY_EVENT_L_2S; + +#ifdef LED_DISPLAY + + LED_R_FLASH(500,8); + +#endif + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + + Event_key = KEY_EVENT_LL_8; + +#ifdef LED_DISPLAY + + LED_R_FLASH(500,5); +#endif + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + + Event_key = KEY_EVENT_SHORT; + +#ifdef LED_DISPLAY + LED_R_FLASH(500,3); +#endif + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + uint8_t IRQ10_Status = 0; + + IRQ10_Status = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Status; + + KEY_irq(); + + if(IRQ10_Status & 0x08) + { + Hall_Negative_Flg = 1; + } + else + if(IRQ10_Status & 0x04) + { + Hall_Positive_Flg = 1; + } + + if(IRQ10_Status & 0x0C) + { + gIrq_Event_Type |= HALL_IRQ_EVENT; + } +#if 0 + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(4100).c b/TP3310_Demo.si4project/Backup/key(4100).c new file mode 100644 index 0000000..cf99d85 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(4100).c @@ -0,0 +1,248 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" + +#if KEY_HALL_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata KEY_EVENT_E Event_key = 0; + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +//bit Key_short_Flag = 0; +bit Key_l_Flag = 0; +//bit Key_ll_Flag = 0; + +bit Hall_Positive_Flg = 0; +bit Hall_Negative_Flg = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + +/* + ******************************************************************************* + * void KEY_irq(void) + * + * Description : INT4 жϴжϰж͡ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void KEY_irq(void) + { + uint8_t IRQ7_Status = 0; + + IRQ7_Status = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Status; + + if( IRQ7_Status & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + Event_key = KEY_EVENT_SHORT; + } + + if( IRQ7_Status & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + Event_key = KEY_EVENT_L_2S; + } + + if( IRQ7_Status & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + Event_key = KEY_EVENT_LL_8; + } + + if( IRQ7_Status & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( (IRQ7_Status & 0xF0) == 0xF0 ) + { + gIrq_Event_Type |= KEY_IRQ_EVENT; + } + } +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã10msг(ʱ2s(or 3s))Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + + Event_key = KEY_EVENT_L_2S; + +#ifdef LED_DISPLAY + + LED_R_FLASH(500,8); + +#endif + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + + Event_key = KEY_EVENT_LL_8; + +#ifdef LED_DISPLAY + + LED_R_FLASH(500,5); +#endif + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + + Event_key = KEY_EVENT_SHORT; + +#ifdef LED_DISPLAY + LED_R_FLASH(500,3); +#endif + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + uint8_t IRQ10_Status = 0; + + IRQ10_Status = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Status; + + KEY_irq(); + + if(IRQ10_Status & 0x08) + { + Hall_Negative_Flg = 1; + } + else + if(IRQ10_Status & 0x04) + { + Hall_Positive_Flg = 1; + } + + if(IRQ10_Status & 0x0C) + { + gIrq_Event_Type |= HALL_IRQ_EVENT; + } + +#if SLEEP_ENABLE + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(445).h b/TP3310_Demo.si4project/Backup/key(445).h new file mode 100644 index 0000000..0756f5b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(445).h @@ -0,0 +1,47 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" +#if KEY_HALL_ENABLE + +extern bit Hall_Positive_Flg; +extern bit Hall_Negative_Flg; + + +typedef enum { + KEY_EVENT_Empty = 0x00, + KEY_EVENT_IN, //Key press interrupt flag + KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag + KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag + KEY_EVENT_LL_8, //Key super long press for 8s interrupt flag +}KEY_EVENT_E; + + +extern idata KEY_EVENT_E Event_key; + +//extern void Key_Init(void); +extern void Key_Handler(void ); +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(5084).c b/TP3310_Demo.si4project/Backup/key(5084).c new file mode 100644 index 0000000..8ca59cb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(5084).c @@ -0,0 +1,136 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" +#include "vox_module.h" + +#if 1 +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +idata KEY_EVENT_E Event_key = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ + Event_key = KEY_EVENT_L_2S; + /**/ + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_LL_8S; + // Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_SHORT; + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(5262).c b/TP3310_Demo.si4project/Backup/key(5262).c new file mode 100644 index 0000000..05bf31e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(5262).c @@ -0,0 +1,143 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" + +#if 0 +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +idata KEY_EVENT_E Event_key = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ + Event_key = KEY_EVENT_L_2S; +#ifdef LED_DISPLAY + //LED_B_FLASH(50,5); + // LED_B_FLASH(50, bat_level); +#endif + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_LL_8S; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#ifdef LED_DISPLAY + //LED_B_FLASH(50,8); +#endif + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_SHORT; +#ifdef LED_DISPLAY + //LED_B_FLASH(50,3); +#endif + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(6175).h b/TP3310_Demo.si4project/Backup/key(6175).h new file mode 100644 index 0000000..bb390df --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(6175).h @@ -0,0 +1,42 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" + +#if KEY_HALL_ENABLE + +extern bit Key_Press_short_irq; +extern bit Key_Press_l_irq; +extern bit Key_Press_ll_irq; + +extern bit Key_l_Flag; + +extern bit Hall_Positive_Flg; +extern bit Hall_Negative_Flg; + +extern void Key_Handler(void ); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(6316).h b/TP3310_Demo.si4project/Backup/key(6316).h new file mode 100644 index 0000000..9b8945e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(6316).h @@ -0,0 +1,49 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" + +#if 0 + +extern bit Key_Press_short_irq; +extern bit Key_Press_l_irq; +extern bit Key_Press_ll_irq; + +extern bit Key_l_Flag; + +typedef enum { + KEY_EVENT_Empty = 0x00, + KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag + KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag + KEY_EVENT_LL_8S, //Key super long press for 8s interrupt flag +}KEY_EVENT_E; + + +extern idata KEY_EVENT_E Event_key; + +extern void Key_Handler(void ); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(6444).h b/TP3310_Demo.si4project/Backup/key(6444).h new file mode 100644 index 0000000..4f5a6f1 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(6444).h @@ -0,0 +1,45 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" +#if KEY_HALL_ENABLE + +extern bit Hall_Positive_Flg; +extern bit Hall_Negative_Flg; + +typedef enum { + KEY_EVENT_Empty = 0x00, + KEY_EVENT_IN, //Key press interrupt flag + KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag + KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag + KEY_EVENT_LL_8, //Key super long press for 8s interrupt flag +}KEY_EVENT_E; + +extern idata KEY_EVENT_E Event_key; + +//extern void Key_Init(void); +extern void Key_Handler(void ); +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(6475).h b/TP3310_Demo.si4project/Backup/key(6475).h new file mode 100644 index 0000000..70032cf --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(6475).h @@ -0,0 +1,44 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" + +#if KEY_HALL_ENABLE + +extern bit Key_Press_short_irq; +extern bit Key_Press_l_irq; +extern bit Key_Press_ll_irq; + +extern bit Key_l_Flag; + +extern bit Hall_Positive_Flg; +extern bit Hall_Negative_Flg; + +//extern void Key_Init(void); +extern void Key_Handler(void ); +//extern void KEY_irq(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(6481).c b/TP3310_Demo.si4project/Backup/key(6481).c new file mode 100644 index 0000000..c7d7ce4 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(6481).c @@ -0,0 +1,136 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" +#include "vox_module.h" + +#if 0 +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +idata KEY_EVENT_E Event_key = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ + Event_key = KEY_EVENT_L_2S; + /**/ + + Box_To_Bes_Comm_Debounce = 0; +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_LL_8S; + // Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_SHORT; + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(6492).h b/TP3310_Demo.si4project/Backup/key(6492).h new file mode 100644 index 0000000..9b8945e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(6492).h @@ -0,0 +1,49 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" + +#if 0 + +extern bit Key_Press_short_irq; +extern bit Key_Press_l_irq; +extern bit Key_Press_ll_irq; + +extern bit Key_l_Flag; + +typedef enum { + KEY_EVENT_Empty = 0x00, + KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag + KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag + KEY_EVENT_LL_8S, //Key super long press for 8s interrupt flag +}KEY_EVENT_E; + + +extern idata KEY_EVENT_E Event_key; + +extern void Key_Handler(void ); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/key(825).c b/TP3310_Demo.si4project/Backup/key(825).c new file mode 100644 index 0000000..b0cebba --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(825).c @@ -0,0 +1,141 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" + +#if KEY_HALL_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +bit Hall_Positive_Flg = 0; +bit Hall_Negative_Flg = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã10msг(ʱ2s(or 3s))Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + +#ifdef LED_DISPLAY + LED_R_FLASH(50,5); + // LED_B_FLASH(50, bat_level); +#endif + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + +#ifdef LED_DISPLAY + LED_R_FLASH(50,8); +#endif + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + +#ifdef LED_DISPLAY + LED_R_FLASH(50,3); +#endif + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + #endif diff --git a/TP3310_Demo.si4project/Backup/key(879).c b/TP3310_Demo.si4project/Backup/key(879).c new file mode 100644 index 0000000..323967f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/key(879).c @@ -0,0 +1,146 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" + +#if KEY_HALL_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +bit Hall_Positive_Flg = 0; +bit Hall_Negative_Flg = 0; + +idata KEY_EVENT_E Event_key = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ + Event_key = KEY_EVENT_L_2S; +#ifdef LED_DISPLAY + LED_B_FLASH(50,5); + // LED_B_FLASH(50, bat_level); +#endif + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_LL_8S; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#ifdef LED_DISPLAY + LED_B_FLASH(50,8); +#endif + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_SHORT; +#ifdef LED_DISPLAY + LED_B_FLASH(50,3); +#endif + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + } + + #endif diff --git a/TP3310_Demo.si4project/Backup/led(2052).h b/TP3310_Demo.si4project/Backup/led(2052).h new file mode 100644 index 0000000..2b62433 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(2052).h @@ -0,0 +1,189 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +sbit pin_LED_1 = P0^2; +sbit pin_LED_2 = P0^3; +sbit pin_LED_3 = P0^4; + +#if 0 +#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02 +#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03 +#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04 +#endif + +// LED˿ڶ +#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN() + +#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() p02 +#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF() +#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN() + +#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() p04 +#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF() +#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LEDض壬˳Ϸĺ궨屣һ +enum LED_ID +{ + LED_R, + LED_G, + LED_B, + LED_ID_MAX +}; + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING, + LED_BREATHING_LIGHT +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State[LED_ID_MAX];//LED Ĺ״̬ + uint8_t Flash_Duty[LED_ID_MAX];//LEDռձȣʱ + uint8_t Flash_Period[LED_ID_MAX];//LED + uint8_t Flash_Times[LED_ID_MAX];//˸ + uint8_t Timer[LED_ID_MAX];//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +//extern void LED_Clr(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ + +/* +* : LED_Set +* : LEDʽ +* : LedIdID / Stateʽ / Duty:˸ռձ(ٷְ٣1-100) / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Duty,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0,0) +#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, 50,Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0,0) +#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0,0) +#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, 50,Fre,n) +#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0,0) +#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0,0) +#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, 50,Fre,n) +#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0) +#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0) + +//------------------------------------------------------------------------------ +#endif + +#ifdef DISPLAY_LED_188 + +extern uint8_t g_188_Num; + +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable. +#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable. +#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable. +#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable. +#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable. +#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable. +#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable. +#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable. +#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable. +#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable. +#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable. +#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable. + +extern void LED_188_Init(void); +extern void Set_AllLed_Down(void); +extern void LED_188_Drive(uint8_t Num); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(2129).h b/TP3310_Demo.si4project/Backup/led(2129).h new file mode 100644 index 0000000..8dfd0da --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(2129).h @@ -0,0 +1,206 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +sbit pin_LED_1 = P0^2; +sbit pin_LED_2 = P0^3; +sbit pin_LED_3 = P0^4; + +#if 0 +#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02 +#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03 +#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04 +#endif + +// LED˿ڶ +#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN() + +#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() p02 +#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF() +#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN() + +#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() p04 +#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF() +#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LEDض壬˳Ϸĺ궨屣һ +enum LED_ID +{ + LED_R, + LED_G, + LED_B, + LED_ID_MAX +}; + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING, + LED_BREATHING_LIGHT +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State[LED_ID_MAX];//LED Ĺ״̬ + uint8_t Flash_Duty[LED_ID_MAX];//LEDռձȣʱ + uint8_t Flash_Period[LED_ID_MAX];//LED + uint8_t Flash_Times[LED_ID_MAX];//˸ + uint8_t Timer[LED_ID_MAX];//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +//extern void LED_Clr(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ +/* +* : LED_Set +* : LEDʽ +* : LedIdID / Stateʽ / Duty:˸ռձ(ٷְ٣1-100) / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0) +#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, Fre,0) + +#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0) +#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0) +#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, Fre,n) +#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, Fre,0) + +#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0) +#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0) +#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, Fre,n) +#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, Fre,0) + +#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0) +#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0) + +//------------------------------------------------------------------------------ +#endif + + +#ifdef BREATHING_LIGHT + +extern bit Breathing_Light_On; +/* +* : LED_Breathing_Light +* : LED100usʱƬ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Breathing_Light(void); +/******************************************************************************/ + +#endif + +extern uint8_t g_188_Num; + +#ifdef DISPLAY_LED_188 + + + +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable. +#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable. +#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable. +#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable. +#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable. +#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable. +#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable. +#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable. +#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable. +#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable. +#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable. +#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable. + +extern void LED_188_Init(void); +extern void Set_AllLed_Down(void); +extern void LED_188_Drive(uint8_t Num); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(2145).c b/TP3310_Demo.si4project/Backup/led(2145).c new file mode 100644 index 0000000..795f0e2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(2145).c @@ -0,0 +1,547 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA = 0x1C; + + SFRADDR = P0_DRV; + SFRDATA = 0x3F; + + P0 &= ~0x1C; +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + default: + break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; + + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; + + default: + break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +#if 0 +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i = 0; + for(i=0; i= LED.Flash_Period[i] )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if( LED.Flash_Times[i] > 0 ) + { + LED.Flash_Times[i]--; + } + if( LED.Flash_Times[i] == 0 ) + { + LED.State[i] = LED_OFF; + } + } + break; + + case LED_KEEP_FLASHING: + if( LED.Timer[i] <= LED.Flash_Duty[i] ) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if( LED.Timer[i] >= LED.Flash_Period[i] ) + { + LED.Timer[i] = 0; + } + break; + + default: + LED_Off(i); + break; + } + } + + for(i = 0;i < LED_ID_MAX;i++) + { + LED.Timer[i] += LED_PLUS_TIME; + } +} + +#endif + + +#ifdef BREATHING_LIGHT + +uint8_t BL_Timer = 0; +uint8_t BL_Flash_Duty = 0; +idata bit Flash_Duty_Rising = 1; +idata bit Flash_Duty_Declining = 0; +idata bit Breathing_Light_On = 0; //ʹܱ־λ +/* +* : LED_Breathing_Light +* : LED100usʱƬУÿ20msıһռձȡ +ģͺռ1.5s۵ͼʱ0.04s1/24֡棩 +0.04s40ms20ms20msۿӦһֱ +ƣǸı40msУռõİٷְ١ +1500/20=75ڣ40ms/75=266us75仯Уÿ1λ266us +75ڸպ40msܴﵽȫ֮ȫ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Breathing_Light(void) +/******************************************************************************/ +{ + if( BL_Timer <= BL_Flash_Duty ) + { + //LEDB_ON(); + P04 = 1; + } + else + { + //LEDB_OFF(); + P04 = 0; + } + + if( BL_Timer >= 170 ) + { + BL_Timer = 0; + + if(Flash_Duty_Declining) + { + BL_Flash_Duty -= 1; + } + else + if(Flash_Duty_Rising) + { + BL_Flash_Duty += 1; + } + + } + + if( 170 <= BL_Flash_Duty ) + { + Flash_Duty_Declining = 1; + Flash_Duty_Rising = 0; + } + else + if( BL_Flash_Duty <= 1 ) + { + Flash_Duty_Rising = 1; + Flash_Duty_Declining = 0; + } + + BL_Timer += 1; +} + +#endif + +uint8_t g_188_Num = 0; //188ʾȫֱ + +#ifdef DISPLAY_LED_188 + + + + +code uint16_t Segment[3][11] = { + + {0x0000,0x0006,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},//λ + + {0x0770,0x0420,0x0741,0x0661,0x0431,0x0271,0x0371,0x0460,0x0771,0x0671,0x0000},//ʮλ + + {0xE888,0x8080,0xD808,0xD880,0xB080,0x7880,0x7888,0x8880,0xF888,0xF880,0x0000} //λ + +}; + +/* + ******************************************************************************* + * void LED_188_Init(void) + * + * Description : LED 188 Initialization. --- ϵͳʼá + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void LED_188_Init(void) +{ + P0 &= ~0xE0; //P00P01P02P03P04 + + SFRADDR = P0_OE; + SFRDATA |= 0x1f; + +} + + +/* + ******************************************************************************* + * void Set_AllLed_Down(void) + * + * Description : LED 188 Ϩʾ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Set_AllLed_Down(void) +{ + PIN0_IN(); + + PIN1_IN(); + + PIN2_IN(); + + PIN3_IN(); + + PIN4_IN(); +} +/* + ******************************************************************************* + * void Display_Scan(uint8_t Pin,uint16_t Display_Sram) + * + * Description : LED 188 IOںͶ봦 + * + * Arguments : uint8_t Pin --- GPIO + uint16_t Display_Sram --- + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +static void Display_Scan(uint8_t Pin,uint16_t Display_Sram) +{ + switch(Pin) + { + case 0: + { + PIN0_L(); //Pin0 + + if(Display_Sram & 0x8000) + PIN1_H(); + + if(Display_Sram & 0x4000) + PIN2_H(); + + if(Display_Sram & 0x2000) + PIN3_H(); + + if(Display_Sram & 0x1000) + PIN4_H(); + } + break; + + case 1: + { + PIN1_L(); //Pin1 + + if(Display_Sram & 0x0800) + PIN0_H(); + + if(Display_Sram & 0x0400) + PIN2_H(); + + if(Display_Sram & 0x0200) + PIN3_H(); + + if(Display_Sram & 0x0100) + PIN4_H(); + } + break; + + case 2: + { + PIN2_L(); //Pin2 + + if(Display_Sram & 0x0080) + PIN0_H(); + + if(Display_Sram & 0x0040) + PIN1_H(); + + if(Display_Sram & 0x0020) + PIN3_H(); + + if(Display_Sram & 0x0010) + PIN4_H(); + } + break; + + case 3: + { + PIN3_L(); //Pin3 + + if(Display_Sram & 0x0008) + PIN0_H(); + + if(Display_Sram & 0x0004) + PIN1_H(); + + if(Display_Sram & 0x0002) + PIN2_H(); + + if(Display_Sram & 0x0001) + PIN4_H(); + } + break; +#if 0 + case 4: + { + PIN4_L(); //Pin4 + + if(Display_Sram & 0x0008) + PIN0_H(); + + if(Display_Sram & 0x0004) + PIN1_H(); + + if(Display_Sram & 0x0002) + PIN2_H(); + + if(Display_Sram & 0x0001) + PIN3_H(); + } + break; +#endif + + default: + break; + } +} +/* + ******************************************************************************* + * void LED_188_Drive(uint8_t Num) + * + * Description : LED 188 Drive. --- 188 LED ʾʱɨ衣 + * + * Arguments : uint8_t Num (00~188) + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void LED_188_Drive(uint8_t Num) +{ + static uint8_t Case_Cnt; //ɨ + + uint8_t Num_Hundred = 0 ,Num_Decade = 0 ,Num_Uint = 0; + + uint16_t nDisplay_Sram = 0; + + if(Num > 188) + { + Num = 188; + } + + Num_Hundred = Num / 100; //λ + + Num_Decade = (Num % 100) / 10; //ʮλ + + Num_Uint = (Num % 100) % 10; //λ + + Set_AllLed_Down(); //Ӱ + + nDisplay_Sram = 0; + + nDisplay_Sram = Segment[0][Num_Hundred] | Segment[1][Num_Decade] | Segment[2][Num_Uint]; //ʾλʮλλ + + switch(Case_Cnt) + { + case 0: + Display_Scan(0,nDisplay_Sram); + Case_Cnt++; + break; + + case 1: + Display_Scan(1,nDisplay_Sram); + Case_Cnt++; + break; + + case 2: + Display_Scan(2,nDisplay_Sram); + Case_Cnt++; + break; + + case 3: + Display_Scan(3,nDisplay_Sram); + Case_Cnt = 0; + break; + default: + Case_Cnt = 0; + break; + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(2524).h b/TP3310_Demo.si4project/Backup/led(2524).h new file mode 100644 index 0000000..0628cfa --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(2524).h @@ -0,0 +1,205 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +sbit pin_LED_1 = P0^2; +sbit pin_LED_2 = P0^3; +sbit pin_LED_3 = P0^4; + +#if 0 +#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02 +#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03 +#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04 +#endif + +// LED˿ڶ +#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN() + +#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() p02 +#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF() +#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN() + +#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() p04 +#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF() +#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LEDض壬˳Ϸĺ궨屣һ +enum LED_ID +{ + LED_R, + LED_G, + LED_B, + LED_ID_MAX +}; + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING, + LED_BREATHING_LIGHT +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State[LED_ID_MAX];//LED Ĺ״̬ + uint8_t Flash_Duty[LED_ID_MAX];//LEDռձȣʱ + uint8_t Flash_Period[LED_ID_MAX];//LED + uint8_t Flash_Times[LED_ID_MAX];//˸ + uint8_t Timer[LED_ID_MAX];//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +//extern void LED_Clr(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ +/* +* : LED_Set +* : LEDʽ +* : LedIdID / Stateʽ / Duty:˸ռձ(ٷְ٣1-100) / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0) +#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, Fre,0) + +#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0) +#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0) +#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, Fre,n) +#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, Fre,0) + +#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0) +#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0) +#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, Fre,n) +#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, Fre,0) + +#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0) +#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0) + +//------------------------------------------------------------------------------ +#endif + + +#ifdef BREATHING_LIGHT + +extern bit Breathing_Light_On; +/* +* : LED_Breathing_Light +* : LED100usʱƬ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Breathing_Light(void); +/******************************************************************************/ + +#endif + + +#ifdef DISPLAY_LED_188 + +extern uint8_t g_188_Num; + +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable. +#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable. +#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable. +#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable. +#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable. +#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable. +#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable. +#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable. +#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable. +#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable. +#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable. +#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable. + +extern void LED_188_Init(void); +extern void Set_AllLed_Down(void); +extern void LED_188_Drive(uint8_t Num); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(2693).h b/TP3310_Demo.si4project/Backup/led(2693).h new file mode 100644 index 0000000..ab20da6 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(2693).h @@ -0,0 +1,188 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +sbit pin_LED_1 = P0^2; +sbit pin_LED_2 = P0^3; +sbit pin_LED_3 = P0^4; + +#if 0 +#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02 +#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03 +#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04 +#endif + +// LED˿ڶ +#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() +#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN() + +#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() +#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF() +#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN() + +#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() +#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF() +#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LEDض壬˳Ϸĺ궨屣һ +enum LED_ID +{ + LED_R, + LED_G, + LED_B, + LED_ID_MAX +}; + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State[LED_ID_MAX];//LED Ĺ״̬ + uint16_t Flash_Duty[LED_ID_MAX];//LEDռձȣʱ + uint16_t Flash_Period[LED_ID_MAX];//LED + uint16_t Flash_Times[LED_ID_MAX];//˸ + uint16_t Timer[LED_ID_MAX];//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Clr(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ + +/* +* : LED_Set +* : LEDʽ +* : LedIdID / Stateʽ / Duty:˸ռձ(ٷְ٣1-100) / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Duty,uint16_t Period,uint16_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0,0) +#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, 50,Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0,0) +#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0,0) +#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, 50,Fre,n) +#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0,0) +#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0,0) +#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, 50,Fre,n) +#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0) +#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0) + +//------------------------------------------------------------------------------ +#endif + +#ifdef DISPLAY_LED_188 + +extern uint8_t g_188_Num; + +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable. +#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable. +#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable. +#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable. +#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable. +#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable. +#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable. +#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable. +#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable. +#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable. +#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable. +#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable. + +extern void LED_188_Init(void); +extern void Set_AllLed_Down(void); +extern void LED_188_Drive(uint8_t Num); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(2916).c b/TP3310_Demo.si4project/Backup/led(2916).c new file mode 100644 index 0000000..2d58bb6 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(2916).c @@ -0,0 +1,144 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA |= 0x08; + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +} + +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(Ƶʣλms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Set(uint8_t State,uint8_t Period,uint8_t Times) +/******************************************************************************/ +{ + LED.State = State; + LED.Flash_Duty = Period / 2; + LED.Flash_Period = Period; + LED.Flash_Times = Times; + LED.Timer = 0; +} + +/* +* : LED_Service +* : LED100msʱƬ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Drv(void) +/******************************************************************************/ +{ + switch(LED.State) + { + case LED_ON: + LEDR_ON(); + break; + + case LED_OFF: + LEDR_OFF(); + break; + + case LED_FLASH: + if( LED.Timer < LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + + if( LED.Timer >= LED.Flash_Period )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer = 0; + if( LED.Flash_Times > 0 ) + { + LED.Flash_Times--; + } + if( LED.Flash_Times == 0 ) + { + LED.State = LED_OFF; + } + } + break; + + case LED_KEEP_FLASHING: + if( LED.Timer <= LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + if( LED.Timer >= LED.Flash_Period ) + { + LED.Timer = 0; + } + break; + + default: + LEDR_OFF(); + break; + } + + LED.Timer += LED_PLUS_TIME; +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/led(3031).c b/TP3310_Demo.si4project/Backup/led(3031).c new file mode 100644 index 0000000..60437a5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(3031).c @@ -0,0 +1,147 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +idata volatile uint8_t Display_Sta = LED_OFF; // ʾ״̬ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA |= 0x08; + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +} + +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(Ƶʣλms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Set(uint8_t State,uint8_t Period,uint8_t Times) +/******************************************************************************/ +{ + LED.State = State; + LED.Flash_Duty = Period / 2; + LED.Flash_Period = Period; + LED.Flash_Times = Times; + LED.Timer = 0; +} + +/* +* : LED_Service +* : LED100msʱƬ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Drv(void) +/******************************************************************************/ +{ + switch(LED.State) + { + case LED_ON: + LEDR_ON(); + break; + + case LED_OFF: + LEDR_OFF(); + break; + + case LED_FLASH: + if( LED.Timer < LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + + if( LED.Timer >= LED.Flash_Period )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer = 0; + if( LED.Flash_Times > 0 ) + { + LED.Flash_Times--; + } + if( LED.Flash_Times == 0 ) + { + LED.State = LED_OFF; + Display_Sta = LED_OFF; // LED_OFF == DISPLAY_OFF + } + } + break; + + case LED_KEEP_FLASHING: + if( LED.Timer <= LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + if( LED.Timer >= LED.Flash_Period ) + { + LED.Timer = 0; + } + break; + + default: + LEDR_OFF(); + break; + } + + LED.Timer += LED_PLUS_TIME; +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/led(3915).h b/TP3310_Demo.si4project/Backup/led(3915).h new file mode 100644 index 0000000..91d45c3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(3915).h @@ -0,0 +1,242 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H +#define __LED_H + +#include "define.h" + +#if 1 + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +//#define _DEBUG_LED_3 +//#define _DEBUG_LED_4 +#endif + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +sbit pin_LED_1 = P0^2; +sbit pin_LED_2 = P0^3; +sbit pin_LED_3 = P0^4; + + +#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02 +#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03 +#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04 + + +// LED˿ڶ +#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() +#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN() + +#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() +#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF() +#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN() + +#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() +#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF() +#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() + + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LEDض壬˳Ϸĺ궨屣һ +enum LED_ID +{ + LED_R, + LED_G, + LED_B, + + LED_ID_MAX +}; + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING +}; + +//LEDƽṹ +typedef struct{ + uint8_t State[LED_ID_MAX];//LED Ĺ״̬ + uint16_t Flash_Duty[LED_ID_MAX];//LEDռձȣʱ + uint16_t Flash_Period[LED_ID_MAX];//LED + uint16_t Flash_Times[LED_ID_MAX];//˸ + uint16_t Timer[LED_ID_MAX];//ʱ 1msһ +}TS_LED_INFO; +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Clr(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ + +/* +* : LED_Set +* : LEDʽ +* : LedIdID / Stateʽ / Duty:˸ռձ(ٷְ٣1-100) / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Duty,uint16_t Period,uint16_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0,0) +#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, 50,Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0,0) +#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0,0) +#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, 50,Fre,n) +#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0,0) +#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0,0) +#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, 50,Fre,n) +#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, 50,Fre,0) + + +#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0) +#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0) + +//------------------------------------------------------------------------------ +#endif + +#else + +/* PWM Channels */ +typedef enum { + LED_CH0 = 0x00, + LED_CH1, + LED_CH2, + LED_CH3 +}LED_Channels_e; + +extern LED_Channels_e LED_Chn; + + + +//extern void LED_Init(void); + +//extern void LED_GPIO_Drive_On(LED_Channels_e LED_Chn ,uint8_t Driver_Cur); + +//extern void LED_PWM_Drive(Pwm_Channels_e ePWM_Ch,s_gPWM_Para_Cfg nPWM_Cfg); +//extern void LED_Drive_On(LED_Channels_e LED_Chn ,uint8_t Driver_Type, uint8_t Driver_Cur,s_gPWM_Para_Cfg nPWM_Cfg); +extern void LED_Drive_On(LED_Channels_e nLED_Chn , uint8_t Driver_Cur); + +extern void LED_GPIO_Drive_Off(LED_Channels_e LED_Chn); + +#endif + +#ifdef DISPLAY_LED_188 + +extern uint8_t g_188_Num; +#if 0 +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= ~0x80;SFRADDR = P0_IE;SFRDATA |= 0x80;}while(0) //Set P07 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x01;SFRADDR = P1_IE;SFRDATA |= 0x01;}while(0) //Set P10 Input Enable. +#define PIN2_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x04;SFRADDR = P1_IE;SFRDATA |= 0x04;}while(0) //Set P12 Input Enable. +#define PIN3_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x08;SFRADDR = P1_IE;SFRDATA |= 0x08;}while(0) //Set P13 Input Enable. +#define PIN4_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x10;SFRADDR = P1_IE;SFRDATA |= 0x10;}while(0) //Set P14 Input Enable. +#define PIN5_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x20;SFRADDR = P1_IE;SFRDATA |= 0x20;}while(0) //Set P15 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_IE;SFRDATA &= ~0x80;SFRADDR = P0_OE;SFRDATA |= 0x80;P07 = 0;}while(0) //Set P07 output low Enable. +#define PIN1_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x01;SFRADDR = P1_OE;SFRDATA |= 0x01;P10 = 0;}while(0) //Set P10 output low Enable. +#define PIN2_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x04;SFRADDR = P1_OE;SFRDATA |= 0x04;P12 = 0;}while(0) //Set P12 output low Enable. +#define PIN3_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x08;SFRADDR = P1_OE;SFRDATA |= 0x08;P13 = 0;}while(0) //Set P13 output low Enable. +#define PIN4_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x10;SFRADDR = P1_OE;SFRDATA |= 0x10;P14 = 0;}while(0) //Set P14 output low Enable. +#define PIN5_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x20;SFRADDR = P1_OE;SFRDATA |= 0x20;P15 = 0;}while(0) //Set P15 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_IE;SFRDATA &= ~0x80;SFRADDR = P0_OE;SFRDATA |= 0x80;P07 = 1;}while(0) //Set P07 output high Enable. +#define PIN1_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x01;SFRADDR = P1_OE;SFRDATA |= 0x01;P10 = 1;}while(0) //Set P10 output high Enable. +#define PIN2_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x04;SFRADDR = P1_OE;SFRDATA |= 0x04;P12 = 1;}while(0) //Set P12 output high Enable. +#define PIN3_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x08;SFRADDR = P1_OE;SFRDATA |= 0x08;P13 = 1;}while(0) //Set P13 output high Enable. +#define PIN4_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x10;SFRADDR = P1_OE;SFRDATA |= 0x10;P14 = 1;}while(0) //Set P14 output high Enable. +#define PIN5_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x20;SFRADDR = P1_OE;SFRDATA |= 0x20;P15 = 1;}while(0) //Set P15 output high Enable. +#else + +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable. +#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable. +#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable. +#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable. +#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable. +#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable. +#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable. +#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable. +#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable. +#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable. +#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable. +#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable. + +#endif + +extern void LED_188_Init(void); + +extern void LED_188_Drive(uint8_t Num); + +#endif + +#endif diff --git a/TP3310_Demo.si4project/Backup/led(4388).c b/TP3310_Demo.si4project/Backup/led(4388).c new file mode 100644 index 0000000..4fc2327 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(4388).c @@ -0,0 +1,546 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA = 0x1C; + + SFRADDR = P0_DRV; + SFRDATA = 0x3F; + + P0 &= ~0x1C; +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + default: + break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; + + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; + + default: + break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +#if 0 +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i = 0; + for(i=0; i= LED.Flash_Period[i] )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if( LED.Flash_Times[i] > 0 ) + { + LED.Flash_Times[i]--; + } + if( LED.Flash_Times[i] == 0 ) + { + LED.State[i] = LED_OFF; + } + } + break; + + case LED_KEEP_FLASHING: + if( LED.Timer[i] <= LED.Flash_Duty[i] ) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if( LED.Timer[i] >= LED.Flash_Period[i] ) + { + LED.Timer[i] = 0; + } + break; + + default: + LED_Off(i); + break; + } + } + + for(i = 0;i < LED_ID_MAX;i++) + { + LED.Timer[i] += LED_PLUS_TIME; + } +} + +#endif + + +#ifdef BREATHING_LIGHT + +uint8_t BL_Timer = 0; +uint8_t BL_Flash_Duty = 0; +idata bit Flash_Duty_Rising = 1; +idata bit Flash_Duty_Declining = 0; +idata bit Breathing_Light_On = 0; //ʹܱ־λ +/* +* : LED_Breathing_Light +* : LED100usʱƬУÿ20msıһռձȡ +ģͺռ1.5s۵ͼʱ0.04s1/24֡棩 +0.04s40ms20ms20msۿӦһֱ +ƣǸı40msУռõİٷְ١ +1500/20=75ڣ40ms/75=266us75仯Уÿ1λ266us +75ڸպ40msܴﵽȫ֮ȫ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Breathing_Light(void) +/******************************************************************************/ +{ + if( BL_Timer <= BL_Flash_Duty ) + { + //LEDB_ON(); + P04 = 1; + } + else + { + //LEDB_OFF(); + P04 = 0; + } + + if( BL_Timer >= 170 ) + { + BL_Timer = 0; + + if(Flash_Duty_Declining) + { + BL_Flash_Duty -= 1; + } + else + if(Flash_Duty_Rising) + { + BL_Flash_Duty += 1; + } + + } + + if( 170 <= BL_Flash_Duty ) + { + Flash_Duty_Declining = 1; + Flash_Duty_Rising = 0; + } + else + if( BL_Flash_Duty <= 1 ) + { + Flash_Duty_Rising = 1; + Flash_Duty_Declining = 0; + } + + BL_Timer += 1; +} + +#endif + + +#ifdef DISPLAY_LED_188 + +uint8_t g_188_Num = 0; //188ʾȫֱ + + +code uint16_t Segment[3][11] = { + + {0x0000,0x0006,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},//λ + + {0x0770,0x0420,0x0741,0x0661,0x0431,0x0271,0x0371,0x0460,0x0771,0x0671,0x0000},//ʮλ + + {0xE888,0x8080,0xD808,0xD880,0xB080,0x7880,0x7888,0x8880,0xF888,0xF880,0x0000} //λ + +}; + +/* + ******************************************************************************* + * void LED_188_Init(void) + * + * Description : LED 188 Initialization. --- ϵͳʼá + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void LED_188_Init(void) +{ + P0 &= ~0xE0; //P00P01P02P03P04 + + SFRADDR = P0_OE; + SFRDATA |= 0x1f; + +} + + +/* + ******************************************************************************* + * void Set_AllLed_Down(void) + * + * Description : LED 188 Ϩʾ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Set_AllLed_Down(void) +{ + PIN0_IN(); + + PIN1_IN(); + + PIN2_IN(); + + PIN3_IN(); + + PIN4_IN(); +} +/* + ******************************************************************************* + * void Display_Scan(uint8_t Pin,uint16_t Display_Sram) + * + * Description : LED 188 IOںͶ봦 + * + * Arguments : uint8_t Pin --- GPIO + uint16_t Display_Sram --- + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +static void Display_Scan(uint8_t Pin,uint16_t Display_Sram) +{ + switch(Pin) + { + case 0: + { + PIN0_L(); //Pin0 + + if(Display_Sram & 0x8000) + PIN1_H(); + + if(Display_Sram & 0x4000) + PIN2_H(); + + if(Display_Sram & 0x2000) + PIN3_H(); + + if(Display_Sram & 0x1000) + PIN4_H(); + } + break; + + case 1: + { + PIN1_L(); //Pin1 + + if(Display_Sram & 0x0800) + PIN0_H(); + + if(Display_Sram & 0x0400) + PIN2_H(); + + if(Display_Sram & 0x0200) + PIN3_H(); + + if(Display_Sram & 0x0100) + PIN4_H(); + } + break; + + case 2: + { + PIN2_L(); //Pin2 + + if(Display_Sram & 0x0080) + PIN0_H(); + + if(Display_Sram & 0x0040) + PIN1_H(); + + if(Display_Sram & 0x0020) + PIN3_H(); + + if(Display_Sram & 0x0010) + PIN4_H(); + } + break; + + case 3: + { + PIN3_L(); //Pin3 + + if(Display_Sram & 0x0008) + PIN0_H(); + + if(Display_Sram & 0x0004) + PIN1_H(); + + if(Display_Sram & 0x0002) + PIN2_H(); + + if(Display_Sram & 0x0001) + PIN4_H(); + } + break; +#if 0 + case 4: + { + PIN4_L(); //Pin4 + + if(Display_Sram & 0x0008) + PIN0_H(); + + if(Display_Sram & 0x0004) + PIN1_H(); + + if(Display_Sram & 0x0002) + PIN2_H(); + + if(Display_Sram & 0x0001) + PIN3_H(); + } + break; +#endif + + default: + break; + } +} +/* + ******************************************************************************* + * void LED_188_Drive(uint8_t Num) + * + * Description : LED 188 Drive. --- 188 LED ʾʱɨ衣 + * + * Arguments : uint8_t Num (00~188) + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void LED_188_Drive(uint8_t Num) +{ + static uint8_t Case_Cnt; //ɨ + + uint8_t Num_Hundred = 0 ,Num_Decade = 0 ,Num_Uint = 0; + + uint16_t nDisplay_Sram = 0; + + if(Num > 188) + { + Num = 188; + } + + Num_Hundred = Num / 100; //λ + + Num_Decade = (Num % 100) / 10; //ʮλ + + Num_Uint = (Num % 100) % 10; //λ + + Set_AllLed_Down(); //Ӱ + + nDisplay_Sram = 0; + + nDisplay_Sram = Segment[0][Num_Hundred] | Segment[1][Num_Decade] | Segment[2][Num_Uint]; //ʾλʮλλ + + switch(Case_Cnt) + { + case 0: + Display_Scan(0,nDisplay_Sram); + Case_Cnt++; + break; + + case 1: + Display_Scan(1,nDisplay_Sram); + Case_Cnt++; + break; + + case 2: + Display_Scan(2,nDisplay_Sram); + Case_Cnt++; + break; + + case 3: + Display_Scan(3,nDisplay_Sram); + Case_Cnt = 0; + break; + default: + Case_Cnt = 0; + break; + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(462).c b/TP3310_Demo.si4project/Backup/led(462).c new file mode 100644 index 0000000..bc2a5c2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(462).c @@ -0,0 +1,814 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + +#if 1 + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit F_led_sleep; +bit F_led_blink = 0; + +idata volatile uint8_t Display_RSta = 0; // ʾ״̬ +idata volatile uint8_t Display_GSta = 0; // ʾ״̬ + +static idata TS_LED_INFO LED; +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + LED_1_CONFIG(); + LED_2_CONFIG(); + LED_3_CONFIG(); + + LEDR_OFF(); + LEDG_OFF(); + LEDB_OFF(); + +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + break; + default: break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; + + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; + + + default: break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i; + for(i=0;i= LED.Flash_Period[i])//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if(LED.Flash_Times[i] > 0) + { + LED.Flash_Times[i]--; + } + if(LED.Flash_Times[i] == 0) + { + LED.State[i] = LED_OFF; + + if (i == LED_R) { + Display_RSta = LED_OFF; // LED_OFF == DISPLAY_OFF + } + else if (i == LED_G) { + Display_GSta = LED_OFF; // LED_OFF == DISPLAY_OFF + } + } + } + break; + + case LED_KEEP_FLASHING: + if(LED.Timer[i] <= LED.Flash_Duty[i]) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if(LED.Timer[i] >= LED.Flash_Period[i]) + { + LED.Timer[i] = 0; + } + break; + + default: + LED_Off(i); + break; + } + } + + for(i=0;i 3) //LED ܴ4mA + { + Driver_Cur = 0x01; + } + + +#if 1 + switch(LED_Chn) + { + case LED_CH0: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0x30; + SFRDATA |= 0x10; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<4) & 0x30; + + break; + + case LED_CH1: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0xC0; + SFRDATA |= 0x40; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<6) & 0xC0; + + break; + + case LED_CH2: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x03; + + break; + + case LED_CH3: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x0C; + + break; + + default: + break; + } + +#else + + SFRADDR = MFP_CTL2 + LED_Chn/2; + + if(LED_Chn/2) + { + SFRDATA &= ~(0x03 << (LED_Chn%2)*2); + SFRDATA |= 0x01 << (LED_Chn%2)*2; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & (0x03 << (LED_Chn%2)*2); + } + else + { + SFRDATA &= ~(0x30 << (LED_Chn%2)*2); + SFRDATA |= 0x10 << (LED_Chn%2)*2; + + SFRADDR = P1_DRV0; + SFRDATA |= Driver_Cur << (4 + (LED_Chn%2)*2) & (0x30 << (LED_Chn%2)*2); + } +#endif + + LED_CTL |= 1< 3) //LED ܴ4mA + { + Driver_Cur = 0x01; + } + + switch(LED_Chn) + { + case LED_CH0: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0x30; + SFRDATA |= 0x10; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<4) & 0x30; + + break; + + case LED_CH1: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0xC0; + SFRDATA |= 0x40; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<6) & 0xC0; + + break; + + case LED_CH2: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x03; + + break; + + case LED_CH3: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x0C; + + break; + + default: + break; + } + + +// LED_CTL |= 1< 188) + { + Num = 188; + } + + Num_Hundred = Num / 100; //λ + + Num_Decade = (Num % 100) / 10; //ʮλ + + Num_Uint = (Num % 100) % 10; //λ + + Set_AllLed_Down(); //Ӱ + + nDisplay_Sram = 0; + + nDisplay_Sram = Segment[0][Num_Hundred] | Segment[1][Num_Decade] | Segment[2][Num_Uint]; //ʾλʮλλ + + switch(Case_Cnt) + { + case 0: + Display_Scan(0,nDisplay_Sram); + Case_Cnt++; + break; + + case 1: + Display_Scan(1,nDisplay_Sram); + Case_Cnt++; + break; + + case 2: + Display_Scan(2,nDisplay_Sram); + Case_Cnt++; + break; + + case 3: + Display_Scan(3,nDisplay_Sram); + Case_Cnt = 0; + break; + default: + Case_Cnt = 0; + break; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/led(476).c b/TP3310_Demo.si4project/Backup/led(476).c new file mode 100644 index 0000000..62ad39d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(476).c @@ -0,0 +1,494 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA = 0x1C; + + SFRADDR = P0_DRV; + SFRDATA = 0x3F; + + P0 &= ~0x1C; +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + default: + break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; + + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; + + default: + break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +#if 0 +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i = 0; + for(i=0; i= LED.Flash_Period[i] )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if( LED.Flash_Times[i] > 0 ) + { + LED.Flash_Times[i]--; + } + if( LED.Flash_Times[i] == 0 ) + { + LED.State[i] = LED_OFF; + } + } + break; + + case LED_KEEP_FLASHING: + if( LED.Timer[i] <= LED.Flash_Duty[i] ) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if( LED.Timer[i] >= LED.Flash_Period[i] ) + { + LED.Timer[i] = 0; + } + break; + + case LED_BREATHING_LIGHT: + if( LED.Timer[i] <= LED.Flash_Duty[i] ) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if( LED.Timer[i] >= LED.Flash_Period[i] ) + { + LED.Timer[i] = 0; + LED.Flash_Duty[i]++; + } + + break; + + default: + LED_Off(i); + break; + } + } + + for(i = 0;i < LED_ID_MAX;i++) + { + LED.Timer[i] += LED_PLUS_TIME; + } +} + +#endif + +#ifdef DISPLAY_LED_188 + +uint8_t g_188_Num = 0; //188ʾȫֱ + + +code uint16_t Segment[3][11] = { + + {0x0000,0x0006,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},//λ + + {0x0770,0x0420,0x0741,0x0661,0x0431,0x0271,0x0371,0x0460,0x0771,0x0671,0x0000},//ʮλ + + {0xE888,0x8080,0xD808,0xD880,0xB080,0x7880,0x7888,0x8880,0xF888,0xF880,0x0000} //λ + +}; + +/* + ******************************************************************************* + * void LED_188_Init(void) + * + * Description : LED 188 Initialization. --- ϵͳʼá + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void LED_188_Init(void) +{ + P0 &= ~0xE0; //P00P01P02P03P04 + + SFRADDR = P0_OE; + SFRDATA |= 0x1f; + +} + + +/* + ******************************************************************************* + * void Set_AllLed_Down(void) + * + * Description : LED 188 Ϩʾ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Set_AllLed_Down(void) +{ + PIN0_IN(); + + PIN1_IN(); + + PIN2_IN(); + + PIN3_IN(); + + PIN4_IN(); +} +/* + ******************************************************************************* + * void Display_Scan(uint8_t Pin,uint16_t Display_Sram) + * + * Description : LED 188 IOںͶ봦 + * + * Arguments : uint8_t Pin --- GPIO + uint16_t Display_Sram --- + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +static void Display_Scan(uint8_t Pin,uint16_t Display_Sram) +{ + switch(Pin) + { + case 0: + { + PIN0_L(); //Pin0 + + if(Display_Sram & 0x8000) + PIN1_H(); + + if(Display_Sram & 0x4000) + PIN2_H(); + + if(Display_Sram & 0x2000) + PIN3_H(); + + if(Display_Sram & 0x1000) + PIN4_H(); + } + break; + + case 1: + { + PIN1_L(); //Pin1 + + if(Display_Sram & 0x0800) + PIN0_H(); + + if(Display_Sram & 0x0400) + PIN2_H(); + + if(Display_Sram & 0x0200) + PIN3_H(); + + if(Display_Sram & 0x0100) + PIN4_H(); + } + break; + + case 2: + { + PIN2_L(); //Pin2 + + if(Display_Sram & 0x0080) + PIN0_H(); + + if(Display_Sram & 0x0040) + PIN1_H(); + + if(Display_Sram & 0x0020) + PIN3_H(); + + if(Display_Sram & 0x0010) + PIN4_H(); + } + break; + + case 3: + { + PIN3_L(); //Pin3 + + if(Display_Sram & 0x0008) + PIN0_H(); + + if(Display_Sram & 0x0004) + PIN1_H(); + + if(Display_Sram & 0x0002) + PIN2_H(); + + if(Display_Sram & 0x0001) + PIN4_H(); + } + break; +#if 0 + case 4: + { + PIN4_L(); //Pin4 + + if(Display_Sram & 0x0008) + PIN0_H(); + + if(Display_Sram & 0x0004) + PIN1_H(); + + if(Display_Sram & 0x0002) + PIN2_H(); + + if(Display_Sram & 0x0001) + PIN3_H(); + } + break; +#endif + + default: + break; + } +} +/* + ******************************************************************************* + * void LED_188_Drive(uint8_t Num) + * + * Description : LED 188 Drive. --- 188 LED ʾʱɨ衣 + * + * Arguments : uint8_t Num (00~188) + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void LED_188_Drive(uint8_t Num) +{ + static uint8_t Case_Cnt; //ɨ + + uint8_t Num_Hundred = 0 ,Num_Decade = 0 ,Num_Uint = 0; + + uint16_t nDisplay_Sram = 0; + + if(Num > 188) + { + Num = 188; + } + + Num_Hundred = Num / 100; //λ + + Num_Decade = (Num % 100) / 10; //ʮλ + + Num_Uint = (Num % 100) % 10; //λ + + Set_AllLed_Down(); //Ӱ + + nDisplay_Sram = 0; + + nDisplay_Sram = Segment[0][Num_Hundred] | Segment[1][Num_Decade] | Segment[2][Num_Uint]; //ʾλʮλλ + + switch(Case_Cnt) + { + case 0: + Display_Scan(0,nDisplay_Sram); + Case_Cnt++; + break; + + case 1: + Display_Scan(1,nDisplay_Sram); + Case_Cnt++; + break; + + case 2: + Display_Scan(2,nDisplay_Sram); + Case_Cnt++; + break; + + case 3: + Display_Scan(3,nDisplay_Sram); + Case_Cnt = 0; + break; + default: + Case_Cnt = 0; + break; + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(4781).h b/TP3310_Demo.si4project/Backup/led(4781).h new file mode 100644 index 0000000..3a8fca7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(4781).h @@ -0,0 +1,134 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +sbit pin_LED_1 = P0^3; + +// LED˿ڶ +#define LEDR_ON() pin_LED_1 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ + +extern idata volatile uint8_t Display_Sta; // ʾ״̬ + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING, +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State;//LED Ĺ״̬ + uint8_t Flash_Duty;//LEDռձȣʱ + uint8_t Flash_Period;//LED + uint8_t Flash_Times;//˸ + uint8_t Timer;//ʱ 1msһ + +}TS_LED_INFO; + +// LEDʾض +// LEDʾ߼ +// -- ɫLEDڳָʾԭϣʱ˸곣δϨ +// -- ɫLEDڲָʾԭϣ롢ȡǡظʱ˸һμ +typedef enum { +// DISPLAY_NONE, + DISPLAY_ON, + DISPLAY_OFF, + DISPLAY_FLASH, + DISPLAY_KEEP_FLASH, +// DISPLAY_MAX +} TE_DISPLAY_STA; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t State,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_ON, 0,0) +#define LED_R_OFF() LED_Set(LED_OFF, 0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_FLASH, Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_KEEP_FLASHING, Fre,0) + +#define Display_Red_On() {LED_R_ON();Display_Sta=DISPLAY_ON;} +#define Display_Red_Off() {LED_R_OFF();Display_Sta=DISPLAY_OFF;} +#define Display_Red_Flash(n) {LED_R_FLASH(100,n);Display_Sta=DISPLAY_FLASH;} +#define Display_Red_KeepFlash() {LED_R_KEEP_FLASHING(100);Display_Sta=DISPLAY_KEEP_FLASH;} + +//------------------------------------------------------------------------------ +#endif + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(5262).h b/TP3310_Demo.si4project/Backup/led(5262).h new file mode 100644 index 0000000..2949deb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(5262).h @@ -0,0 +1,113 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +sbit pin_LED_1 = P0^3; + +// LED˿ڶ +#define LEDR_ON() pin_LED_1 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN() + +#define LED_PLUS_TIME 10 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING, +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State;//LED Ĺ״̬ + uint8_t Flash_Duty;//LEDռձȣʱ + uint8_t Flash_Period;//LED + uint8_t Flash_Times;//˸ + uint8_t Timer;//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t State,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_ON, 0,0) +#define LED_R_OFF() LED_Set(LED_OFF, 0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_FLASH, Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_KEEP_FLASHING, Fre,0) + +//------------------------------------------------------------------------------ +#endif + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(662).h b/TP3310_Demo.si4project/Backup/led(662).h new file mode 100644 index 0000000..9ec7b3f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(662).h @@ -0,0 +1,118 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +sbit pin_LED_1 = P0^3; + +// LED˿ڶ +#define LEDR_ON() pin_LED_1 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ + +extern idata uint8_t Display_Sta; // ʾ״̬ + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING, +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State;//LED Ĺ״̬ + uint8_t Flash_Duty;//LEDռձȣʱ + uint8_t Flash_Period;//LED + uint8_t Flash_Times;//˸ + uint8_t Timer;//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +//extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t State,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_ON, 0,0) +#define LED_R_OFF() LED_Set(LED_OFF, 0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_FLASH, Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_FLASH, Fre,0xff) + +//#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_KEEP_FLASHING, Fre,0) + +//------------------------------------------------------------------------------ +#endif + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(6639).c b/TP3310_Demo.si4project/Backup/led(6639).c new file mode 100644 index 0000000..18a2c55 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(6639).c @@ -0,0 +1,476 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA = 0x1C; + + SFRADDR = P0_DRV; + SFRDATA = 0x3F; + + P0 &= ~0x1C; +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + default: + break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; + + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; + + default: + break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i = 0; + for(i=0;i= LED.Flash_Period[i])//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if(LED.Flash_Times[i] > 0) + { + LED.Flash_Times[i]--; + } + if(LED.Flash_Times[i] == 0) + { + LED.State[i] = LED_OFF; + } + } + break; + + case LED_KEEP_FLASHING: + if(LED.Timer[i] <= LED.Flash_Duty[i]) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if(LED.Timer[i] >= LED.Flash_Period[i]) + { + LED.Timer[i] = 0; + } + break; + + default: + LED_Off(i); + break; + } + } + + for(i=0;i 188) + { + Num = 188; + } + + Num_Hundred = Num / 100; //λ + + Num_Decade = (Num % 100) / 10; //ʮλ + + Num_Uint = (Num % 100) % 10; //λ + + Set_AllLed_Down(); //Ӱ + + nDisplay_Sram = 0; + + nDisplay_Sram = Segment[0][Num_Hundred] | Segment[1][Num_Decade] | Segment[2][Num_Uint]; //ʾλʮλλ + + switch(Case_Cnt) + { + case 0: + Display_Scan(0,nDisplay_Sram); + Case_Cnt++; + break; + + case 1: + Display_Scan(1,nDisplay_Sram); + Case_Cnt++; + break; + + case 2: + Display_Scan(2,nDisplay_Sram); + Case_Cnt++; + break; + + case 3: + Display_Scan(3,nDisplay_Sram); + Case_Cnt = 0; + break; + default: + Case_Cnt = 0; + break; + } +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/led(7241).c b/TP3310_Demo.si4project/Backup/led(7241).c new file mode 100644 index 0000000..cfb5666 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(7241).c @@ -0,0 +1,232 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA = 0x1C; + + SFRADDR = P0_DRV; + SFRDATA = 0x3F; + + P0 &= ~0x1C; +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + default: + break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; +#if 0 + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; +#endif + default: + break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +#if 0 +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i = 0; + for(i=0; i= LED.Flash_Period[i] )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if( LED.Flash_Times[i] > 0 ) + { + LED.Flash_Times[i]--; + } + if( LED.Flash_Times[i] == 0 ) + { + LED.State[i] = LED_OFF; + } + } + break; + + case LED_KEEP_FLASHING: + if( LED.Timer[i] <= LED.Flash_Duty[i] ) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if( LED.Timer[i] >= LED.Flash_Period[i] ) + { + LED.Timer[i] = 0; + } + break; + + default: + LED_Off(i); + break; + } + } + + for(i = 0;i < LED_ID_MAX;i++) + { + LED.Timer[i] += LED_PLUS_TIME; + } +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/led(7259).c b/TP3310_Demo.si4project/Backup/led(7259).c new file mode 100644 index 0000000..2539147 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(7259).c @@ -0,0 +1,813 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + +#if 1 + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit F_led_sleep; +bit F_led_blink = 0; + +idata volatile uint8_t Display_RSta = 0; // ʾ״̬ +idata volatile uint8_t Display_GSta = 0; // ʾ״̬ + +static idata TS_LED_INFO LED; +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + LED_1_CONFIG(); + LED_2_CONFIG(); + LED_3_CONFIG(); + + LEDR_OFF(); + LEDG_OFF(); + LEDB_OFF(); +} + +/* +* : LED_On +* : LED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_On(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_ON(); + break; + + case LED_G: + LEDG_ON(); + break; + + case LED_B: + LEDB_ON(); + break; + + break; + default: break; + } +} + +/* +* : LED_Off +* : ϨLED +* : LEDID +* ֵ : NONE +*/ +/******************************************************************************/ +static void LED_Off(uint8_t LedId) +/******************************************************************************/ +{ + switch(LedId) + { + case LED_R: + LEDR_OFF(); + break; + + case LED_G: + LEDG_OFF(); + break; + + case LED_B: + LEDB_OFF(); + break; + + + default: break; + } +} + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Clr(void) +/******************************************************************************/ +{ + uint8_t i; + for(i=0;i= LED.Flash_Period[i])//LED.Timer[i]ʾۼӵʱ + { + LED.Timer[i] = 0; + if(LED.Flash_Times[i] > 0) + { + LED.Flash_Times[i]--; + } + if(LED.Flash_Times[i] == 0) + { + LED.State[i] = LED_OFF; + + if (i == LED_R) { + Display_RSta = LED_OFF; // LED_OFF == DISPLAY_OFF + } + else if (i == LED_G) { + Display_GSta = LED_OFF; // LED_OFF == DISPLAY_OFF + } + } + } + break; + + case LED_KEEP_FLASHING: + if(LED.Timer[i] <= LED.Flash_Duty[i]) + { + LED_On(i); + } + else + { + LED_Off(i); + } + if(LED.Timer[i] >= LED.Flash_Period[i]) + { + LED.Timer[i] = 0; + } + break; + + default: + LED_Off(i); + break; + } + } + + for(i=0;i 3) //LED ܴ4mA + { + Driver_Cur = 0x01; + } + + +#if 1 + switch(LED_Chn) + { + case LED_CH0: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0x30; + SFRDATA |= 0x10; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<4) & 0x30; + + break; + + case LED_CH1: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0xC0; + SFRDATA |= 0x40; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<6) & 0xC0; + + break; + + case LED_CH2: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x03; + + break; + + case LED_CH3: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x0C; + + break; + + default: + break; + } + +#else + + SFRADDR = MFP_CTL2 + LED_Chn/2; + + if(LED_Chn/2) + { + SFRDATA &= ~(0x03 << (LED_Chn%2)*2); + SFRDATA |= 0x01 << (LED_Chn%2)*2; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & (0x03 << (LED_Chn%2)*2); + } + else + { + SFRDATA &= ~(0x30 << (LED_Chn%2)*2); + SFRDATA |= 0x10 << (LED_Chn%2)*2; + + SFRADDR = P1_DRV0; + SFRDATA |= Driver_Cur << (4 + (LED_Chn%2)*2) & (0x30 << (LED_Chn%2)*2); + } +#endif + + LED_CTL |= 1< 3) //LED ܴ4mA + { + Driver_Cur = 0x01; + } + + switch(LED_Chn) + { + case LED_CH0: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0x30; + SFRDATA |= 0x10; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<4) & 0x30; + + break; + + case LED_CH1: + + SFRADDR = MFP_CTL2; + SFRDATA &= ~0xC0; + SFRDATA |= 0x40; + + SFRADDR = P1_DRV0; + SFRDATA |= (Driver_Cur<<6) & 0xC0; + + break; + + case LED_CH2: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x03; + + break; + + case LED_CH3: + + SFRADDR = MFP_CTL3; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; + + SFRADDR = P1_DRV1; + SFRDATA |= Driver_Cur & 0x0C; + + break; + + default: + break; + } + + +// LED_CTL |= 1< 188) + { + Num = 188; + } + + Num_Hundred = Num / 100; //λ + + Num_Decade = (Num % 100) / 10; //ʮλ + + Num_Uint = (Num % 100) % 10; //λ + + Set_AllLed_Down(); //Ӱ + + nDisplay_Sram = 0; + + nDisplay_Sram = Segment[0][Num_Hundred] | Segment[1][Num_Decade] | Segment[2][Num_Uint]; //ʾλʮλλ + + switch(Case_Cnt) + { + case 0: + Display_Scan(0,nDisplay_Sram); + Case_Cnt++; + break; + + case 1: + Display_Scan(1,nDisplay_Sram); + Case_Cnt++; + break; + + case 2: + Display_Scan(2,nDisplay_Sram); + Case_Cnt++; + break; + + case 3: + Display_Scan(3,nDisplay_Sram); + Case_Cnt = 0; + break; + default: + Case_Cnt = 0; + break; + } +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/led(891).c b/TP3310_Demo.si4project/Backup/led(891).c new file mode 100644 index 0000000..c1a29a4 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(891).c @@ -0,0 +1,159 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +idata uint8_t Display_Sta = LED_OFF; // ʾ״̬ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ +#if 0 +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA |= 0x08; + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +} +#endif +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(Ƶʣλms) / Times:˸0xffʱһֱ +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Set(uint8_t State,uint8_t Period,uint8_t Times) +/******************************************************************************/ +{ + LED.State = State; + LED.Flash_Duty = Period / 2; + LED.Flash_Period = Period; + LED.Flash_Times = Times; + LED.Timer = 0; +} + +/* +* : LED_Service +* : LED100msʱƬ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Drv(void) +/******************************************************************************/ +{ + switch(LED.State) + { + case LED_ON: + LEDR_ON(); + break; + + case LED_OFF: + LEDR_OFF(); + break; + + case LED_FLASH: + if( LED.Timer < LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + + if( LED.Timer >= LED.Flash_Period )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer = 0; + + if( LED.Flash_Times == 0xff ) + { + break; + } + else + { + if( LED.Flash_Times > 0 ) + { + LED.Flash_Times--; + } + + if( LED.Flash_Times == 0 ) + { + LED.State = LED_OFF; + } + } + } + + break; + #if 0 + case LED_KEEP_FLASHING: + if( LED.Timer <= LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + if( LED.Timer >= LED.Flash_Period ) + { + LED.Timer = 0; + } + break; + #endif + default: + LEDR_OFF(); + break; + + } + + Display_Sta = LED.State; // ȡǰLED״̬ + + LED.Timer += LED_PLUS_TIME; +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/led(936).h b/TP3310_Demo.si4project/Backup/led(936).h new file mode 100644 index 0000000..9980cc0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/led(936).h @@ -0,0 +1,240 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H +#define __LED_H + +#include "define.h" + +#if 1 + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +sbit pin_LED_1 = P0^2; +sbit pin_LED_2 = P0^3; +sbit pin_LED_3 = P0^4; + + +#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02 +#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03 +#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04 + + +// LED˿ڶ +#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() +#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN() + +#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() +#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF() +#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN() + +#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() +#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF() +#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() + + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ +//LEDض壬˳Ϸĺ궨屣һ +enum LED_ID +{ + LED_R, + LED_G, + LED_B, + + LED_ID_MAX +}; + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, + LED_KEEP_FLASHING +}; + +//LEDƽṹ +typedef struct{ + uint8_t State[LED_ID_MAX];//LED Ĺ״̬ + uint16_t Flash_Duty[LED_ID_MAX];//LEDռձȣʱ + uint16_t Flash_Period[LED_ID_MAX];//LED + uint16_t Flash_Times[LED_ID_MAX];//˸ + uint16_t Timer[LED_ID_MAX];//ʱ 1msһ +}TS_LED_INFO; +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Clr(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ + +/* +* : LED_Set +* : LEDʽ +* : LedIdID / Stateʽ / Duty:˸ռձ(ٷְ٣1-100) / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Duty,uint16_t Period,uint16_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0,0) +#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, 50,Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0,0) +#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0,0) +#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, 50,Fre,n) +#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, 50,Fre,0) + +#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0,0) +#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0,0) +#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, 50,Fre,n) +#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, 50,Fre,0) + + +#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0) +#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0) + +//------------------------------------------------------------------------------ +#endif + +#else + +/* PWM Channels */ +typedef enum { + LED_CH0 = 0x00, + LED_CH1, + LED_CH2, + LED_CH3 +}LED_Channels_e; + +extern LED_Channels_e LED_Chn; + + + +//extern void LED_Init(void); + +//extern void LED_GPIO_Drive_On(LED_Channels_e LED_Chn ,uint8_t Driver_Cur); + +//extern void LED_PWM_Drive(Pwm_Channels_e ePWM_Ch,s_gPWM_Para_Cfg nPWM_Cfg); +//extern void LED_Drive_On(LED_Channels_e LED_Chn ,uint8_t Driver_Type, uint8_t Driver_Cur,s_gPWM_Para_Cfg nPWM_Cfg); +extern void LED_Drive_On(LED_Channels_e nLED_Chn , uint8_t Driver_Cur); + +extern void LED_GPIO_Drive_Off(LED_Channels_e LED_Chn); + +#endif + +#ifdef DISPLAY_LED_188 + +extern uint8_t g_188_Num; +#if 0 +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= ~0x80;SFRADDR = P0_IE;SFRDATA |= 0x80;}while(0) //Set P07 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x01;SFRADDR = P1_IE;SFRDATA |= 0x01;}while(0) //Set P10 Input Enable. +#define PIN2_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x04;SFRADDR = P1_IE;SFRDATA |= 0x04;}while(0) //Set P12 Input Enable. +#define PIN3_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x08;SFRADDR = P1_IE;SFRDATA |= 0x08;}while(0) //Set P13 Input Enable. +#define PIN4_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x10;SFRADDR = P1_IE;SFRDATA |= 0x10;}while(0) //Set P14 Input Enable. +#define PIN5_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x20;SFRADDR = P1_IE;SFRDATA |= 0x20;}while(0) //Set P15 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_IE;SFRDATA &= ~0x80;SFRADDR = P0_OE;SFRDATA |= 0x80;P07 = 0;}while(0) //Set P07 output low Enable. +#define PIN1_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x01;SFRADDR = P1_OE;SFRDATA |= 0x01;P10 = 0;}while(0) //Set P10 output low Enable. +#define PIN2_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x04;SFRADDR = P1_OE;SFRDATA |= 0x04;P12 = 0;}while(0) //Set P12 output low Enable. +#define PIN3_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x08;SFRADDR = P1_OE;SFRDATA |= 0x08;P13 = 0;}while(0) //Set P13 output low Enable. +#define PIN4_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x10;SFRADDR = P1_OE;SFRDATA |= 0x10;P14 = 0;}while(0) //Set P14 output low Enable. +#define PIN5_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x20;SFRADDR = P1_OE;SFRDATA |= 0x20;P15 = 0;}while(0) //Set P15 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_IE;SFRDATA &= ~0x80;SFRADDR = P0_OE;SFRDATA |= 0x80;P07 = 1;}while(0) //Set P07 output high Enable. +#define PIN1_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x01;SFRADDR = P1_OE;SFRDATA |= 0x01;P10 = 1;}while(0) //Set P10 output high Enable. +#define PIN2_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x04;SFRADDR = P1_OE;SFRDATA |= 0x04;P12 = 1;}while(0) //Set P12 output high Enable. +#define PIN3_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x08;SFRADDR = P1_OE;SFRDATA |= 0x08;P13 = 1;}while(0) //Set P13 output high Enable. +#define PIN4_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x10;SFRADDR = P1_OE;SFRDATA |= 0x10;P14 = 1;}while(0) //Set P14 output high Enable. +#define PIN5_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x20;SFRADDR = P1_OE;SFRDATA |= 0x20;P15 = 1;}while(0) //Set P15 output high Enable. +#else + +#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.빦ǰȹرܡ +#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable. +#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable. +#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable. +#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable. + +#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable. +#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable. +#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable. +#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable. +#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable. + +#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable. +#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable. +#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable. +#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable. +#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable. + +#endif + +extern void LED_188_Init(void); + +extern void LED_188_Drive(uint8_t Num); + +#endif + +#endif diff --git a/TP3310_Demo.si4project/Backup/main(1732).c b/TP3310_Demo.si4project/Backup/main(1732).c new file mode 100644 index 0000000..7943fe2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(1732).c @@ -0,0 +1,68 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("\n\r\n\r---System Init1(Ver:%s)---\r\n",Ver); +#endif + + while(1) + { + // P02 = !P02; +#if WTG_ENABLE + Watchdog_Clear(); +#endif + Sys_Tim_Handler(); //ʱ + + UserAPP(); + // printf("\n\r\n\r---System Init1---\r\n"); + } +} diff --git a/TP3310_Demo.si4project/Backup/main(2414).c b/TP3310_Demo.si4project/Backup/main(2414).c new file mode 100644 index 0000000..bfa765f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(2414).c @@ -0,0 +1,69 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + SFRADDR = P1_OE; + SFRDATA = 0x01; +#ifdef _DEBUG_MAIN + printf("\n\r\n\r---System Init1(Ver:%s)---\r\n",Ver); +#endif + + while(1) + { + P10 = !P10; +#if WTG_ENABLE + Watchdog_Clear(); +#endif + Sys_Tim_Handler(); //ʱ + + UserAPP(); + // P10 = 1; + } +} diff --git a/TP3310_Demo.si4project/Backup/main(3234).c b/TP3310_Demo.si4project/Backup/main(3234).c new file mode 100644 index 0000000..a009d46 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(3234).c @@ -0,0 +1,69 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("\n\r\n\r---System Init1(Ver:%s)---\r\n",Ver); +#endif + + while(1) + { + +#if WTG_ENABLE + WDT = 1; + SWDT = 1; +#endif + + Sys_Tim_Handler(); //ʱ + + UserAPP(); + } +} diff --git a/TP3310_Demo.si4project/Backup/main(3675).c b/TP3310_Demo.si4project/Backup/main(3675).c new file mode 100644 index 0000000..f41b63d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(3675).c @@ -0,0 +1,74 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" +#include "adc.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("System Init(Ver:%s)\r\n",Ver); +#endif + +#ifdef LED_DISPLAY +// LED_B_KEEP_FLASHING(100); +#endif + + while(1) + { + +#if WTG_ENABLE + WDT = 1; + SWDT = 1; +#endif + + Sys_Tim_Handler(); //ʱ + + UserAPP(); + } +} diff --git a/TP3310_Demo.si4project/Backup/main(4969).c b/TP3310_Demo.si4project/Backup/main(4969).c new file mode 100644 index 0000000..aeae61a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(4969).c @@ -0,0 +1,69 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" +#include "adc.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("System Init(Ver:%s)\r\n",Ver); +#endif + + while(1) + { + +#if WTG_ENABLE + WDT = 1; + SWDT = 1; +#endif + Sys_Tim_Handler(); //ʱ + + UserAPP(); + } +} diff --git a/TP3310_Demo.si4project/Backup/main(5400).c b/TP3310_Demo.si4project/Backup/main(5400).c new file mode 100644 index 0000000..375d4c8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(5400).c @@ -0,0 +1,77 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" +#include "adc.h" +#include "vox_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("System Init(Ver:%s)\r\n",Ver); +#endif + + while(1) + { + +#if WTG_ENABLE + WDT = 1; + SWDT = 1; +#endif + Sys_Tim_Handler(); //ʱ + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + + Vox_TX_Machine(OPEN_COVER); + } + + UserAPP(); + } +} diff --git a/TP3310_Demo.si4project/Backup/main(5517).c b/TP3310_Demo.si4project/Backup/main(5517).c new file mode 100644 index 0000000..5b4de52 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(5517).c @@ -0,0 +1,69 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" +#include "adc.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("System Init(Ver:%s)\r\n",Ver); +#endif + + while(1) + { + +#if WTG_ENABLE + WDT = 1; + SWDT = 1; +#endif + Sys_Tim_Handler(); //ʱ + + UserAPP(); + } +} diff --git a/TP3310_Demo.si4project/Backup/main(7728).c b/TP3310_Demo.si4project/Backup/main(7728).c new file mode 100644 index 0000000..d300f42 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/main(7728).c @@ -0,0 +1,67 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("\n\r\n\r---System Init1(Ver:%s)---\r\n",Ver); +#endif + + while(1) + { + +#if WTG_ENABLE + Watchdog_Clear(); +#endif + Sys_Tim_Handler(); //ʱ + + UserAPP(); + } +} diff --git a/TP3310_Demo.si4project/Backup/reg3310(1018).h b/TP3310_Demo.si4project/Backup/reg3310(1018).h new file mode 100644 index 0000000..83fa1b4 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/reg3310(1018).h @@ -0,0 +1,274 @@ +/*--------------------------------------------------------------------- +REG3310.H + +Header file for TP3310 microcontroller. + +Initial Released by zheng, 2023-12-01. + + Thinkplus Semiconductor co., ltd, All Rights Reserved! +----------------------------------------------------------------------*/ +#ifndef _REG3310_H_ //ͻͷļڲĿijʵʲƷţ +#define _REG3310_H_ + +//------------------------ Ext SFR Registers ------------------------- +/*------ GPIO/MFP Registers ------*/ +#define P0_PU 0x00 +#define P0_PD 0x01 +#define P0_OD 0x02 +#define P0_DRV 0x03 +#define P0_IE 0x05 +#define P0_OE 0x06 +//#define P1_PU 0x07 +//#define P1_PD 0x08 +//#define P1_OD 0x09 +//#define P1_IE 0x0C +//#define P1_OE 0x0D +#define MFP_CTL0 0x0E +#define MFP_CTL1 0x0F +#define GPIO_TEST 0x9B + +/*----- IRQ Enable Registers ----*/ +#define IRQ_EN0 0x14 // Abnormal interrupt enable +#define IRQ_EN1 0x15 // EXTI interrupt enable 0 +#define IRQ_EN2 0x16 // EXTI interrupt enable 1 +#define IRQ_EN3 0x17 // VOL/R LOADIN/ON interrupt enable +#define IRQ_EN4 0x18 // VOL/R Recharge and IOFF interrupt enable +#define IRQ_EN7 0x1B // KEY/PWM interrupt enable +#define IRQ_EN9 0x1D // Charger interrupt enable +#define IRQ_EN10 0x1E // VBUS/COMP/HALL/STBTMR/ADC_DATA_RDY interrupt enable + +/*--- Wakeup Enable Registers ---*/ +#define WKUP_EN0 0x21 // BOOST/HALL/KEY/VBUS Wakeup enable +#define WKUP_EN1 0x22 // EXTI and VOL/R Short Wakeup enable +#define WKUP_EN3 0x24 // BAT_LOW/TMR/VOX LOADIN/ON Wakeup enable + +/*-------- ADC Registers --------*/ +#define ADC_CTL0 0x29 +#define ADC00 0x2D +#define ADCCS_CTL0 0x4F + +/*---- OTP KEY Registers ----*/ +#define OTP_KEY 0x8F + +/*------ VOL/R Registers -----*/ +#define VOL_IOFF_TRIM 0x69 +#define VOX_CON0 0x6A +#define VOX_CON1 0x6B +#define VOX_CON2 0x6C +#define VOR_IOFF_TRIM 0x6D +#define ST_VOX 0x6E + +/*------ CHG Registers ------*/ +#define REG_CHG0 0x70 +#define REG_CHG3 0x9D +#define OTP_CHG0 0x71 +#define OTP_CHG1 0x72 + +/*----- BOOST Registers -----*/ +#define BST_CTL0 0x78 +#define BST_CTL1 0x79 + +/*------ PMU Registers ------*/ +#define PMU_CTL0 0x80 +#define PMU_CTL1 0x81 +#define PMU_CTL3 0x83 +#define PMU_CTL6 0x86 +#define PMU_CTL7 0x87 +#define PMU_CTL8 0x88 +#define PMU_CTL9 0x89 + +/*------ CMU Registers ------*/ +#define HOSC_CTL 0x8B + +/*------ Misc Registers -----*/ +#define CHIP_ID 0x8D +#define CHIP_VER 0x8E + + +//------------------------- SFR Registers ---------------------------- +/*--- BYTE Register ---*/ +sfr P0 = 0x80; +sfr P1 = 0x90; +sfr P2 = 0xA0; +sfr P3 = 0xB0; +sfr PSW = 0xD0; +sfr ACC = 0xE0; +sfr B = 0xF0; + +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr DPL1 = 0x84; +sfr DPH1 = 0x85; +sfr WDTREL = 0x86; +sfr PCON = 0x87; +sfr TCON = 0x88; +sfr TMOD = 0x89; +sfr TL0 = 0x8A; +sfr TL1 = 0x8B; +sfr TH0 = 0x8C; +sfr TH1 = 0x8D; +sfr CKCON = 0x8E; +sfr DPSEL = 0x92; +sfr ASKCTL0 = 0x96; +sfr ASKDATA = 0x97; +sfr S0CON = 0x98; +sfr S0BUF = 0x99; +sfr IEN2 = 0x9A; +sfr S1CON = 0x9B; +sfr S1BUF = 0x9C; +sfr S1RELL = 0x9D; + +sfr16 ADC_DAT = 0xA1; +sfr ADC_DATL = 0xA1; +sfr ADC_DATH = 0xA2; +sfr ADC_OFFSET = 0xA3; +sfr ADC_CTL1 = 0xA5; + +sfr IEN0 = 0xA8; +sfr IP0 = 0xA9; +sfr S0RELL = 0xAA; + +sfr REG_CHG1 = 0xB1; +sfr REG_CHG2 = 0xB2; +sfr CHG_CTL = 0xB3; + +sfr BST_EN = 0xB5; + +sfr VOX_CTL0 = 0xB7; + +sfr IEN1 = 0xB8; +sfr IP1 = 0xB9; +sfr S0RELH = 0xBA; +sfr S1RELH = 0xBB; +sfr IRCON2 = 0xBF; +sfr IRCON = 0xC0; +sfr CCEN = 0xC1; +sfr CCL1 = 0xC2; +sfr CCH1 = 0xC3; +sfr CCL2 = 0xC4; +sfr CCH2 = 0xC5; +sfr CCL3 = 0xC6; +sfr CCH3 = 0xC7; +sfr T2CON = 0xC8; +sfr CRCL = 0xCA; +sfr CRCH = 0xCB; +sfr TL2 = 0xCC; +sfr TH2 = 0xCD; + +sfr CLKPRE = 0xD2; +sfr RSTCON = 0xD3; +sfr KEY_CTL = 0xD7; + +sfr ADCON = 0xD8; + +sfr RST_FLAG = 0xE1; +sfr CHIP_STA0 = 0xE2; +sfr CHIP_STA1 = 0xE3; +sfr CHIP_STA2 = 0xE4; +sfr CHIP_STA3 = 0xE5; +sfr CHIP_STA4 = 0xE6; + +sfr IRQ_FLAG0 = 0xE8; +sfr IRQ_FLAG1 = 0xE9; +sfr IRQ_FLAG2 = 0xEA; +sfr IRQ_FLAG3 = 0xEB; +sfr IRQ_FLAG4 = 0xEC; +sfr IRQ_FLAG7 = 0xEF; +sfr IRQ_FLAG9 = 0xF2; +sfr IRQ_FLAG10 = 0xF3; + +sfr SRST = 0xF7; + +sfr WKUP_FLAG0 = 0xF6; +sfr WKUP_FLAG1 = 0xF8; +sfr WKUP_FLAG3 = 0xFA; + +sfr SFRADDR = 0xFE; +sfr SFRDATA = 0xFF; + +/*--- BIT Register ---*/ +/* PSW */ +sbit CY = 0xD7; +sbit AC = 0xD6; +sbit F0 = 0xD5; +sbit RS1 = 0xD4; +sbit RS0 = 0xD3; +sbit OV = 0xD2; +sbit P = 0xD0; + +/* TCON */ +sbit TF1 = 0x8F; +sbit TR1 = 0x8E; +sbit TF0 = 0x8D; +sbit TR0 = 0x8C; +sbit IE1 = 0x8B; +sbit IT1 = 0x8A; +sbit IE0 = 0x89; +sbit IT0 = 0x88; + +/* T2CON */ +sbit T2PS = 0xCF; +sbit I3FR = 0xCE; +sbit I2FR = 0xCD; +sbit T2R1 = 0xCC; +sbit T2R0 = 0xCB; +sbit T2CM = 0xCA; +sbit T2I1 = 0xC9; +sbit T2I0 = 0xC8; + +/* S0CON */ +sbit SM0 = 0x9F; +sbit SM1 = 0x9E; +sbit SM20 = 0x9D; +sbit REN0 = 0x9C; +sbit TB80 = 0x9B; +sbit RB80 = 0x9A; +sbit TI0 = 0x99; +sbit RI0 = 0x98; + +/* IEN0 */ +sbit EAL = 0xAF; +sbit WDT = 0xAE; +sbit ET2 = 0xAD; +sbit ES0 = 0xAC; +sbit ET1 = 0xAB; +sbit EX1 = 0xAA; +sbit ET0 = 0xA9; +sbit EX0 = 0xA8; + +/* IEN1 */ +sbit EXEN2 = 0xBF; +sbit SWDT = 0xBE; +sbit EX6 = 0xBD; +sbit EX5 = 0xBC; +sbit EX4 = 0xBB; +sbit EX3 = 0xBA; +sbit EX2 = 0xB9; +sbit EX7 = 0xB8; + +/* IRCON */ +sbit EXF2 = 0xC7; +sbit TF2 = 0xC6; +sbit IEX6 = 0xC5; +sbit IEX5 = 0xC4; +sbit IEX4 = 0xC3; +sbit IEX3 = 0xC2; +sbit IEX2 = 0xC1; +sbit IADC = 0xC0; + +/* ADCON */ +sbit BD = 0xDF; + +/* P0 */ +sbit P00 = P0^0; +sbit P01 = P0^1; +sbit P02 = P0^2; +sbit P03 = P0^3; +sbit P04 = P0^4; +sbit P05 = P0^5; +sbit P06 = P0^6; +sbit P07 = P0^7; + +#endif + diff --git a/TP3310_Demo.si4project/Backup/reg3310(6508).h b/TP3310_Demo.si4project/Backup/reg3310(6508).h new file mode 100644 index 0000000..c737829 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/reg3310(6508).h @@ -0,0 +1,277 @@ +/*--------------------------------------------------------------------- +REG3310.H + +Header file for TP3310 microcontroller. + +Initial Released by zheng, 2023-12-01. + + Thinkplus Semiconductor co., ltd, All Rights Reserved! +----------------------------------------------------------------------*/ +#ifndef _REG3310_H_ //ͻͷļڲĿijʵʲƷţ +#define _REG3310_H_ + +//------------------------ Ext SFR Registers ------------------------- +/*------ GPIO/MFP Registers ------*/ +#define P0_PU 0x00 +#define P0_PD 0x01 +#define P0_OD 0x02 +#define P0_DRV 0x03 +#define P0_IE 0x05 +#define P0_OE 0x06 +//#define P1_PU 0x07 +//#define P1_PD 0x08 +//#define P1_OD 0x09 +//#define P1_IE 0x0C +#define P1_OE 0x0D +#define MFP_CTL0 0x0E +#define MFP_CTL1 0x0F +#define GPIO_TEST 0x9B + +/*----- IRQ Enable Registers ----*/ +#define IRQ_EN0 0x14 // Abnormal interrupt enable +#define IRQ_EN1 0x15 // EXTI interrupt enable 0 +#define IRQ_EN2 0x16 // EXTI interrupt enable 1 +#define IRQ_EN3 0x17 // VOL/R LOADIN/ON interrupt enable +#define IRQ_EN4 0x18 // VOL/R Recharge and IOFF interrupt enable +#define IRQ_EN7 0x1B // KEY/PWM interrupt enable +#define IRQ_EN9 0x1D // Charger interrupt enable +#define IRQ_EN10 0x1E // VBUS/COMP/HALL/STBTMR/ADC_DATA_RDY interrupt enable + +/*--- Wakeup Enable Registers ---*/ +#define WKUP_EN0 0x21 // BOOST/HALL/KEY/VBUS Wakeup enable +#define WKUP_EN1 0x22 // EXTI and VOL/R Short Wakeup enable +#define WKUP_EN3 0x24 // BAT_LOW/TMR/VOX LOADIN/ON Wakeup enable + +/*-------- ADC Registers --------*/ +#define ADC_CTL0 0x29 +#define ADC00 0x2D +#define ADCCS_CTL0 0x4F + +/*---- OTP KEY Registers ----*/ +#define OTP_KEY 0x8F + +/*------ VOL/R Registers -----*/ +#define VOL_IOFF_TRIM 0x69 +#define VOX_CON0 0x6A +#define VOX_CON1 0x6B +#define VOX_CON2 0x6C +#define VOR_IOFF_TRIM 0x6D +#define ST_VOX 0x6E + +/*------ CHG Registers ------*/ +#define REG_CHG0 0x70 +#define REG_CHG3 0x9D +#define OTP_CHG0 0x71 +#define OTP_CHG1 0x72 + +/*----- BOOST Registers -----*/ +#define BST_CTL0 0x78 +#define BST_CTL1 0x79 + +/*------ PMU Registers ------*/ +#define PMU_CTL0 0x80 +#define PMU_CTL1 0x81 +#define PMU_CTL3 0x83 +#define PMU_CTL6 0x86 +#define PMU_CTL7 0x87 +#define PMU_CTL8 0x88 +#define PMU_CTL9 0x89 + +/*------ CMU Registers ------*/ +#define HOSC_CTL 0x8B + +/*------ Misc Registers -----*/ +#define CHIP_ID 0x8D +#define CHIP_VER 0x8E + + +//------------------------- SFR Registers ---------------------------- +/*--- BYTE Register ---*/ +sfr P0 = 0x80; +sfr P1 = 0x90; +sfr P2 = 0xA0; +sfr P3 = 0xB0; +sfr PSW = 0xD0; +sfr ACC = 0xE0; +sfr B = 0xF0; + +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr DPL1 = 0x84; +sfr DPH1 = 0x85; +sfr WDTREL = 0x86; +sfr PCON = 0x87; +sfr TCON = 0x88; +sfr TMOD = 0x89; +sfr TL0 = 0x8A; +sfr TL1 = 0x8B; +sfr TH0 = 0x8C; +sfr TH1 = 0x8D; +sfr CKCON = 0x8E; +sfr DPSEL = 0x92; +sfr ASKCTL0 = 0x96; +sfr ASKDATA = 0x97; +sfr S0CON = 0x98; +sfr S0BUF = 0x99; +sfr IEN2 = 0x9A; +sfr S1CON = 0x9B; +sfr S1BUF = 0x9C; +sfr S1RELL = 0x9D; + +sfr16 ADC_DAT = 0xA1; +sfr ADC_DATL = 0xA1; +sfr ADC_DATH = 0xA2; +sfr ADC_OFFSET = 0xA3; +sfr ADC_CTL1 = 0xA5; + +sfr IEN0 = 0xA8; +sfr IP0 = 0xA9; +sfr S0RELL = 0xAA; + +sfr REG_CHG1 = 0xB1; +sfr REG_CHG2 = 0xB2; +sfr CHG_CTL = 0xB3; + +sfr BST_EN = 0xB5; + +sfr VOX_CTL0 = 0xB7; + +sfr IEN1 = 0xB8; +sfr IP1 = 0xB9; +sfr S0RELH = 0xBA; +sfr S1RELH = 0xBB; +sfr IRCON2 = 0xBF; +sfr IRCON = 0xC0; +sfr CCEN = 0xC1; +sfr CCL1 = 0xC2; +sfr CCH1 = 0xC3; +sfr CCL2 = 0xC4; +sfr CCH2 = 0xC5; +sfr CCL3 = 0xC6; +sfr CCH3 = 0xC7; +sfr T2CON = 0xC8; +sfr CRCL = 0xCA; +sfr CRCH = 0xCB; +sfr TL2 = 0xCC; +sfr TH2 = 0xCD; + +sfr CLKPRE = 0xD2; +sfr RSTCON = 0xD3; +sfr KEY_CTL = 0xD7; + +sfr ADCON = 0xD8; + +sfr RST_FLAG = 0xE1; +sfr CHIP_STA0 = 0xE2; +sfr CHIP_STA1 = 0xE3; +sfr CHIP_STA2 = 0xE4; +sfr CHIP_STA3 = 0xE5; +sfr CHIP_STA4 = 0xE6; + +sfr IRQ_FLAG0 = 0xE8; +sfr IRQ_FLAG1 = 0xE9; +sfr IRQ_FLAG2 = 0xEA; +sfr IRQ_FLAG3 = 0xEB; +sfr IRQ_FLAG4 = 0xEC; +sfr IRQ_FLAG7 = 0xEF; +sfr IRQ_FLAG9 = 0xF2; +sfr IRQ_FLAG10 = 0xF3; + +sfr SRST = 0xF7; + +sfr WKUP_FLAG0 = 0xF6; +sfr WKUP_FLAG1 = 0xF8; +sfr WKUP_FLAG3 = 0xFA; + +sfr SFRADDR = 0xFE; +sfr SFRDATA = 0xFF; + +/*--- BIT Register ---*/ +/* PSW */ +sbit CY = 0xD7; +sbit AC = 0xD6; +sbit F0 = 0xD5; +sbit RS1 = 0xD4; +sbit RS0 = 0xD3; +sbit OV = 0xD2; +sbit P = 0xD0; + +/* TCON */ +sbit TF1 = 0x8F; +sbit TR1 = 0x8E; +sbit TF0 = 0x8D; +sbit TR0 = 0x8C; +sbit IE1 = 0x8B; +sbit IT1 = 0x8A; +sbit IE0 = 0x89; +sbit IT0 = 0x88; + +/* T2CON */ +sbit T2PS = 0xCF; +sbit I3FR = 0xCE; +sbit I2FR = 0xCD; +sbit T2R1 = 0xCC; +sbit T2R0 = 0xCB; +sbit T2CM = 0xCA; +sbit T2I1 = 0xC9; +sbit T2I0 = 0xC8; + +/* S0CON */ +sbit SM0 = 0x9F; +sbit SM1 = 0x9E; +sbit SM20 = 0x9D; +sbit REN0 = 0x9C; +sbit TB80 = 0x9B; +sbit RB80 = 0x9A; +sbit TI0 = 0x99; +sbit RI0 = 0x98; + +/* IEN0 */ +sbit EAL = 0xAF; +sbit WDT = 0xAE; +sbit ET2 = 0xAD; +sbit ES0 = 0xAC; +sbit ET1 = 0xAB; +sbit EX1 = 0xAA; +sbit ET0 = 0xA9; +sbit EX0 = 0xA8; + +/* IEN1 */ +sbit EXEN2 = 0xBF; +sbit SWDT = 0xBE; +sbit EX6 = 0xBD; +sbit EX5 = 0xBC; +sbit EX4 = 0xBB; +sbit EX3 = 0xBA; +sbit EX2 = 0xB9; +sbit EX7 = 0xB8; + +/* IRCON */ +sbit EXF2 = 0xC7; +sbit TF2 = 0xC6; +sbit IEX6 = 0xC5; +sbit IEX5 = 0xC4; +sbit IEX4 = 0xC3; +sbit IEX3 = 0xC2; +sbit IEX2 = 0xC1; +sbit IADC = 0xC0; + +/* ADCON */ +sbit BD = 0xDF; + +/* P0 */ +sbit P00 = P0^0; +sbit P01 = P0^1; +sbit P02 = P0^2; +sbit P03 = P0^3; +sbit P04 = P0^4; +sbit P05 = P0^5; +sbit P06 = P0^6; +sbit P07 = P0^7; + +/* P1 */ +sbit P10 = P1^0; + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(1218).c b/TP3310_Demo.si4project/Backup/sleep(1218).c new file mode 100644 index 0000000..d184f61 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(1218).c @@ -0,0 +1,130 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "led.h" +#include "system.h" +#include "vox_module.h" +#include "discharge_module.h" +#include "charger_module.h" +#include "bat.h" +#include "hall.h" +#include "gpio.h" +#include "sys_tim.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void WakeUp_Init_Set(void) + * + * Description : ϵͳԴʹãϵͳʼá + * + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void WakeUp_Init_Set(void) +{ + //set wakeup + SFRADDR = WKUP_EN0; + SFRDATA = 0xE4; //wake0 up enable. + + SFRADDR = WKUP_EN1; + SFRDATA = 0xFF; //wake1 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + +} + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ + if(Protect_Type_Flg || gIrq_Event_Type) + { +#ifdef _DEBUG_SLEEP + printf("Pro_Type(0x%x)(Event_Type:0x%x).\r\n",(uint16_t)Protect_Type_Flg, (uint16_t)gIrq_Event_Type); +#endif + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} +/* + ******************************************************************************* + * void Enter_Sleep(void) + * + * Description : ߺ + * + * Arguments : None + + * Returns : None + + * Notes : None + * + ******************************************************************************* + */ +void Enter_Sleep(void) +{ + InSleep_Handler(); //Disable All IRQ + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + OutSleep_Handler(); //Enable IRQ +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(1330).c b/TP3310_Demo.si4project/Backup/sleep(1330).c new file mode 100644 index 0000000..c752726 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(1330).c @@ -0,0 +1,81 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "led.h" +#include "system.h" +#include "vox_module.h" +#include "discharge_module.h" +#include "charger_module.h" +#include "bat.h" +#include "hall.h" +#include "gpio.h" +#include "sys_tim.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ +// if( ( CHIP_STA4 & 0x80 ) || Vol_LiPro_Flag || Vor_LiPro_Flag || Enter_Sleep_Cnt_Restart_Flag ) /* Power Goodڡжϡﮱ״̬£ϵͳģʽ */ + if( ( CHIP_STA4 & 0x80 ) || Enter_Sleep_Cnt_Restart_Flag ) + { +#ifdef _DEBUG_SLEEP + printf("Protect\r\n"); +#endif + Enter_Sleep_Cnt_Restart_Flag = 0; + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(1371).c b/TP3310_Demo.si4project/Backup/sleep(1371).c new file mode 100644 index 0000000..c740757 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(1371).c @@ -0,0 +1,73 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "system.h" +#include "vox_module.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ + if( ( CHIP_STA4 & 0x80 ) || ( ON == Vol_Vout_Enable ) || ( ON == Vor_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS Power Goodڡжϡڳ״̬£ϵͳģʽ */ + { +#ifdef _DEBUG_SLEEP + printf("Protect\r\n"); +#endif + Enter_Sleep_Cnt_Restart_Flag = 0; + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(2856).h b/TP3310_Demo.si4project/Backup/sleep(2856).h new file mode 100644 index 0000000..3d661a5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(2856).h @@ -0,0 +1,38 @@ +/* + ****************************************************************************** + * + * @file sleep.h + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __SLEEP_H__ +#define __SLEEP_H__ + +#include "define.h" + +#if SLEEP_ENABLE + +extern uint8_t Decnt_SleepDelay; +extern bit Enter_Sleep_Cnt_Restart_Flag; + +extern void WakeUp_Init_Set(void); +extern void Sleep_Handler(void); +extern void Enter_Sleep(void); +extern bool Check_Require_Sleep(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(3612).c b/TP3310_Demo.si4project/Backup/sleep(3612).c new file mode 100644 index 0000000..ec8b0f7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(3612).c @@ -0,0 +1,137 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "led.h" +#include "system.h" +#include "vox_module.h" +#include "discharge_module.h" +#include "charger_module.h" +#include "bat.h" +#include "hall.h" +#include "gpio.h" +#include "sys_tim.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void WakeUp_Init_Set(void) + * + * Description : ϵͳԴʹãϵͳʼá + * + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void WakeUp_Init_Set(void) +{ + //set wakeup + SFRADDR = WKUP_EN0; + SFRDATA = 0xE4; //wake0 up enable. + + SFRADDR = WKUP_EN1; + SFRDATA = 0xFF; //wake1 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + +} +#endif +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ + if(Protect_Type_Flg || gIrq_Event_Type) + { +#ifdef _DEBUG_SLEEP + printf("Pro_Type(0x%x)(Event_Type:0x%x).\r\n",(uint16_t)Protect_Type_Flg, (uint16_t)gIrq_Event_Type); +#endif + /*Ӧıжϻ¼*/ + return false; + } + + if(CHIP_STA4 & 0x80) + { + return false; + } + + return true; +} +/* + ******************************************************************************* + * void Enter_Sleep(void) + * + * Description : ߺ + * + * Arguments : None + + * Returns : None + + * Notes : None + * + ******************************************************************************* + */ + #if 0 +void Enter_Sleep(void) +{ + InSleep_Handler(); //Disable All IRQ + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + OutSleep_Handler(); //Enable IRQ +} +#endif +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(3736).c b/TP3310_Demo.si4project/Backup/sleep(3736).c new file mode 100644 index 0000000..f1e8055 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(3736).c @@ -0,0 +1,209 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "led.h" +#include "system.h" +#include "vox_module.h" +#include "discharge_module.h" +#include "charger_module.h" +#include "bat.h" +#include "hall.h" +#include "gpio.h" +#include "sys_tim.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Boot_ShipMode_Flg = 0; //Wake Up From ShipMode + +uint16_t gAwake_Source = 0; //Դ־λ + +uint8_t Decnt_SleepDelay = 0; + +uint8_t Enter_ShipMode_Debounce = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void WakeUp_Init_Set(void) + * + * Description : ϵͳԴʹãϵͳʼá + * + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void WakeUp_Init_Set(void) +{ + //set wakeup + + SFRADDR = WKUP_EN0; + SFRDATA = 0x6F; //wake0 up enable. + + SFRADDR = WKUP_EN1; + SFRDATA = 0x03; //wake1 up enable.vox output short wake up(bit0:bit1). + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + +} + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ + bool Ret = 0; + + if(Enter_Ship_Mode_Flag) + { + return true; + } + + if(Boot_ShipMode_Flg != 0) + { +#ifdef _DEBUG_SLEEP + printf("Wakeup From ShipMode Flag:0x%bx (line:%d).\r\n",Boot_ShipMode_Flg,(uint16)__LINE__); +#endif + Boot_ShipMode_Flg = 0; + + /*Coding ҪѴĹܡ*/ +#ifdef LED_DISPLAY + + LED_G_FLASH(1000,3); + + LED_R_FLASH(1000,3); +#endif + return false; + } + + if(Protect_Type_Flg || gIrq_Event_Type) + { +#ifdef _DEBUG_SLEEP + printf("Pro_Type(0x%x)(Event_Type:0x%x).\r\n",(uint16_t)Protect_Type_Flg, (uint16_t)gIrq_Event_Type); +#endif + /*Ӧıжϻ¼*/ + + if(Protect_Type_Flg & DIE_OT_PRO_TYPE) //DIE OT wake up from standby. DIE OT 󣬹ر boost vox ȹ· + { + //DisCharge_Boost_Close(); //Boost Disable + BST_EN = 0; //Boost Disable +#if VOX_ENABLE + VOR_EN_Type(VOX_ADT_Mode); + + VOL_EN_Type(VOX_ADT_Mode); +#endif + } + + return false; + } + + return true; +} +/* + ******************************************************************************* + * void Enter_Sleep(void) + * + * Description : ߺ + * + * Arguments : None + + * Returns : None + + * Notes : None + * + ******************************************************************************* + */ +void Enter_Sleep(void) +{ + if(Enter_Ship_Mode_Flag) + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + + Enter_ShipMode_Debounce++; + + if(Enter_ShipMode_Debounce >= ENTER_SHIPMODE_CNT) + { + Boot_ShipMode_Flg = 0; + + SFRADDR = PMU_CTL0; //Key shipmode debounce ʱ 2s + SFRDATA &= ~0x04; + + RST_FLAG = 0xFF; //clear Shipmode reset flag + + InSleep_Handler(); //Disable All IRQ + + PCON |= 0x02; //Enter ShipMode + + OutSleep_Handler(); + Enter_Ship_Mode_Flag = 0; + Enter_ShipMode_Debounce = 0; + } + else + if(Enter_ShipMode_Debounce == ENTER_SHIPMODE_CNT - 1) + { +#ifdef _DEBUG_SLEEP + printf("Enter ShipMode!(line:%d)\r\n",__LINE__); +#endif + } + } + } + else + { + InSleep_Handler(); //Disable All IRQ + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + OutSleep_Handler(); //Enable IRQ + } +} +#endif diff --git a/TP3310_Demo.si4project/Backup/sleep(4333).h b/TP3310_Demo.si4project/Backup/sleep(4333).h new file mode 100644 index 0000000..4615388 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(4333).h @@ -0,0 +1,38 @@ +/* + ****************************************************************************** + * + * @file sleep.h + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __SLEEP_H__ +#define __SLEEP_H__ + +#include "define.h" + +#if SLEEP_ENABLE + +extern uint8_t Decnt_SleepDelay; +extern bit Enter_Sleep_Cnt_Restart_Flag; + +//extern void WakeUp_Init_Set(void); +//extern void Sleep_Handler(void); +//extern void Enter_Sleep(void); +extern bool Check_Require_Sleep(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(5345).c b/TP3310_Demo.si4project/Backup/sleep(5345).c new file mode 100644 index 0000000..0890282 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(5345).c @@ -0,0 +1,77 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "system.h" +#include "vox_module.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ +#ifdef BOOST_AOUT + if( ( CHIP_STA4 & 0x80 ) || ( ON == Vol_Vout_Enable ) || ( ON == Vor_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag || (CHIP_STA0 & 0x20) ) /*VBUS Power Goodڡжϡڳ״̬£Boostϵͳģʽ */ +#else + if( ( CHIP_STA4 & 0x80 ) || ( ON == Vol_Vout_Enable ) || ( ON == Vor_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS Power Goodڡжϡڳ״̬£ϵͳģʽ */ +#endif + { +#ifdef _DEBUG_SLEEP + printf("Protect\r\n"); +#endif + Enter_Sleep_Cnt_Restart_Flag = 0; + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(5454).h b/TP3310_Demo.si4project/Backup/sleep(5454).h new file mode 100644 index 0000000..a7614bd --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(5454).h @@ -0,0 +1,42 @@ +/* + ****************************************************************************** + * + * @file sleep.h + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __SLEEP_H__ +#define __SLEEP_H__ + +#include "define.h" + +#if SLEEP_ENABLE + +extern uint8_t Decnt_SleepDelay; +extern uint16_t gAwake_Source; //Դ־λ +extern bit Enter_Sleep_Cnt_Restart_Flag; + +extern uint8_t Boot_ShipMode_Flg; //Wake Up From ShipMode +extern uint8_t Enter_ShipMode_Debounce; + +extern void WakeUp_Init_Set(void); +extern void Sleep_Handler(void); +extern void Enter_Sleep(void); +extern bool Check_Require_Sleep(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(6206).c b/TP3310_Demo.si4project/Backup/sleep(6206).c new file mode 100644 index 0000000..915172f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(6206).c @@ -0,0 +1,73 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "system.h" +#include "vox_module.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ + if( ( CHIP_STA4 & 0x80 ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag || (CHIP_STA0 & 0x20) ) /*VBUS Power Goodڡжϡڳ״̬£Boostϵͳģʽ */ + { +#ifdef _DEBUG_SLEEP + printf("Protect\r\n"); +#endif + Enter_Sleep_Cnt_Restart_Flag = 0; + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(703).h b/TP3310_Demo.si4project/Backup/sleep(703).h new file mode 100644 index 0000000..1987d43 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(703).h @@ -0,0 +1,35 @@ +/* + ****************************************************************************** + * + * @file sleep.h + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __SLEEP_H__ +#define __SLEEP_H__ + +#include "define.h" + +#if SLEEP_ENABLE + +extern uint8_t Decnt_SleepDelay; +extern bit Enter_Sleep_Cnt_Restart_Flag; + +extern bool Check_Require_Sleep(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sleep(765).c b/TP3310_Demo.si4project/Backup/sleep(765).c new file mode 100644 index 0000000..64fcda7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sleep(765).c @@ -0,0 +1,73 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "system.h" +#include "vox_module.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bool Check_Require_Sleep(void ) +{ + if( ( CHIP_STA4 & 0x80 ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS Power Goodڡжϡڳ״̬£Boostϵͳģʽ */ + { +#ifdef _DEBUG_SLEEP + printf("Protect\r\n"); +#endif + Enter_Sleep_Cnt_Restart_Flag = 0; + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(1796).c b/TP3310_Demo.si4project/Backup/sys_tim(1796).c new file mode 100644 index 0000000..3e6b532 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(1796).c @@ -0,0 +1,247 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef BREATHING_LIGHT + + /*todo*/ +// if ( Breathing_Light_On ) + { + LED_Breathing_Light(); + } + +#endif + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(2098).c b/TP3310_Demo.si4project/Backup/sys_tim(2098).c new file mode 100644 index 0000000..4a79156 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(2098).c @@ -0,0 +1,247 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef BREATHING_LIGHT + + /*todo*/ + if ( Breathing_Light_On ) + { + LED_Breathing_Light(); + } + +#endif + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif +// P10 = !P10; //Timer0 + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(2136).c b/TP3310_Demo.si4project/Backup/sys_tim(2136).c new file mode 100644 index 0000000..06c9706 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(2136).c @@ -0,0 +1,238 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + + F_sys_tim0_tick = 1; + + P10 = !P10; //Timer0 +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 100us + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //100us + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(2250).h b/TP3310_Demo.si4project/Backup/sys_tim(2250).h new file mode 100644 index 0000000..40605f0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(2250).h @@ -0,0 +1,55 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T1MS) //1ms + +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(2911).h b/TP3310_Demo.si4project/Backup/sys_tim(2911).h new file mode 100644 index 0000000..40605f0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(2911).h @@ -0,0 +1,55 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T1MS) //1ms + +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(2923).h b/TP3310_Demo.si4project/Backup/sys_tim(2923).h new file mode 100644 index 0000000..dcfff0c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(2923).h @@ -0,0 +1,62 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H +#define __sys_tim_H + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T100uS) //100us +extern void Sys_Tim1_Init(void ); + +#endif + +//extern bit F_sys_tim_1ms; +extern bit F_sys_tim_5ms; +//extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern bit F_sys_tim1_tick; + +extern bit F_sys_tim2_tick; + +extern void Sys_Tim_Handler(void ); + +#endif + + + + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(3158).c b/TP3310_Demo.si4project/Backup/sys_tim(3158).c new file mode 100644 index 0000000..76f60cb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(3158).c @@ -0,0 +1,247 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef BREATHING_LIGHT + + /*todo*/ + if ( Breathing_Light_On ) + { + LED_Breathing_Light(); + } + +#endif + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(3662).h b/TP3310_Demo.si4project/Backup/sys_tim(3662).h new file mode 100644 index 0000000..ad8060f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(3662).h @@ -0,0 +1,54 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T1MS) //1ms +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(4200).c b/TP3310_Demo.si4project/Backup/sys_tim(4200).c new file mode 100644 index 0000000..76f60cb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(4200).c @@ -0,0 +1,247 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef BREATHING_LIGHT + + /*todo*/ + if ( Breathing_Light_On ) + { + LED_Breathing_Light(); + } + +#endif + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(4373).c b/TP3310_Demo.si4project/Backup/sys_tim(4373).c new file mode 100644 index 0000000..6fc7684 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(4373).c @@ -0,0 +1,245 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint16_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +//bit F_sys_tim_1ms = 0; +bit F_sys_tim_5ms = 0; +//bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + + +uint8_t F_sys_tim_tick = 0; +bit F_sys_tim1_tick = 0; + +bit F_sys_tim2_tick = 0; + + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim_tick == 0) + return; + F_sys_tim_tick = 0; + //system tick + //F_sys_tim_1ms = 1; + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } +#if 0 + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + } +#endif + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + P03 = !P03; //ڲTimer0 + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + //-----------------250ms------------------------- + + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + + F_sys_tim_tick = 1; + P02 = !P02; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 100us + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //100us + TF1 = 0; + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + F_sys_tim1_tick = 1; + P04 = !P04; //ڲTimer1 + +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(503).c b/TP3310_Demo.si4project/Backup/sys_tim(503).c new file mode 100644 index 0000000..76f60cb --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(503).c @@ -0,0 +1,247 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef BREATHING_LIGHT + + /*todo*/ + if ( Breathing_Light_On ) + { + LED_Breathing_Light(); + } + +#endif + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(5665).c b/TP3310_Demo.si4project/Backup/sys_tim(5665).c new file mode 100644 index 0000000..ceb0ed0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(5665).c @@ -0,0 +1,246 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint16_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +//bit F_sys_tim_1ms = 0; +bit F_sys_tim_5ms = 0; +//bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + + +uint8_t F_sys_tim_tick = 0; +bit F_sys_tim1_tick = 0; + +bit F_sys_tim2_tick = 0; + + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim_tick == 0) + return; + F_sys_tim_tick = 0; + //system tick + //F_sys_tim_1ms = 1; + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } +#if 0 + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + } +#endif + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + P03 = !P03; //ڲTimer0 + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + //-----------------250ms------------------------- + + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + #ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + F_sys_tim_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 100us + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //100us + TF1 = 0; + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + F_sys_tim1_tick = 1; + P04 = !P04; //ڲTimer1 + +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(5901).h b/TP3310_Demo.si4project/Backup/sys_tim(5901).h new file mode 100644 index 0000000..8f03b98 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(5901).h @@ -0,0 +1,59 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +//extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T1MS) //1ms + +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +#ifdef VOX_TX_RST_PATTERN +extern bit BES_Puls_Start; +#endif + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(6089).c b/TP3310_Demo.si4project/Backup/sys_tim(6089).c new file mode 100644 index 0000000..8220889 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(6089).c @@ -0,0 +1,303 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +uint8_t cnt_sys_tim0_5ms = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; + +#endif + +#ifdef VOX_TX_RST_PATTERN +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + #if VOX_ENABLE + Boost_Open_Atleast_Tim_Cnt++; + #endif + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + + F_sys_tim0_tick = 1; + +#ifdef VOX_TX_RST_PATTERN + + //---------------5ms---------------------------------------- + cnt_sys_tim0_5ms++; + if(cnt_sys_tim0_5ms >= 5) + { + cnt_sys_tim0_5ms = 0; + //BES_Reset_Puls(); + /*жеúռúܶڴ棡*/ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } + } +#endif +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} +#endif +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(621).c b/TP3310_Demo.si4project/Backup/sys_tim(621).c new file mode 100644 index 0000000..d0fe291 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(621).c @@ -0,0 +1,251 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +uint8_t cnt_sys_tim1_5ms = 0; + +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + // P10 = !P10; //Timer0 + + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + #if VOX_ENABLE + Boost_Open_Atleast_10min_Cnt++; + #endif + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + +#ifdef VOX_TX + + //---------------5ms---------------------------------------- + cnt_sys_tim1_5ms++; + if(cnt_sys_tim1_5ms >= 5) + { + cnt_sys_tim1_5ms = 0; + BES_Reset_Puls(); + } +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(6823).c b/TP3310_Demo.si4project/Backup/sys_tim(6823).c new file mode 100644 index 0000000..2995816 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(6823).c @@ -0,0 +1,245 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +uint8_t cnt_sys_tim1_5ms = 0; + +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + //LED_Drv(); + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + + //---------------5ms---------------------------------------- + cnt_sys_tim1_5ms++; + if(cnt_sys_tim1_5ms >= 5) + { + cnt_sys_tim1_5ms = 0; + BES_Reset_Puls(); + } + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(7539).h b/TP3310_Demo.si4project/Backup/sys_tim(7539).h new file mode 100644 index 0000000..4c3a0cc --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(7539).h @@ -0,0 +1,59 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#ifdef BREATHING_LIGHT +#define C_TIM1_Reload (65535 - T100uS) //100us ں +#else +#define C_TIM1_Reload (65535 - T1MS) //1ms +#endif + +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(7584).h b/TP3310_Demo.si4project/Backup/sys_tim(7584).h new file mode 100644 index 0000000..13b8fe3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(7584).h @@ -0,0 +1,54 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H +#define __sys_tim_H + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T100uS) //100us +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(796).h b/TP3310_Demo.si4project/Backup/sys_tim(796).h new file mode 100644 index 0000000..4c3a0cc --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(796).h @@ -0,0 +1,59 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#ifdef BREATHING_LIGHT +#define C_TIM1_Reload (65535 - T100uS) //100us ں +#else +#define C_TIM1_Reload (65535 - T1MS) //1ms +#endif + +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/sys_tim(8170).c b/TP3310_Demo.si4project/Backup/sys_tim(8170).c new file mode 100644 index 0000000..16b1844 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/sys_tim(8170).c @@ -0,0 +1,237 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + P10 = !P10; //Timer0 + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + + F_sys_tim0_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} + +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + +#ifdef DISPLAY_LED_188 + LED_188_Drive(g_188_Num); //188ʾ +#endif + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + diff --git a/TP3310_Demo.si4project/Backup/system(1107).c b/TP3310_Demo.si4project/Backup/system(1107).c new file mode 100644 index 0000000..8ee930a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(1107).c @@ -0,0 +1,361 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Protect_Type_Flg = 0; +idata uint8_t gIrq_Event_Type = 0; //ж¼¼ +//idata uint8_t g_Plug_Irq_Flg = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + //Boost_Init(); + + //GPIO_Init(); + SFRADDR = P1_OE; + SFRDATA = 0x01; +#ifdef LED_DISPLAY + + LED_Init(); // LED pin ΪGPIO + + LED_Clr(); + +#endif + +#ifdef DISPLAY_LED_188 + g_188_Num = 0; + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_ENABLE + Adc_Init(); +#endif + +#if KEY_HALL_ENABLE +// Key_Init(); + Hall_Init(); +#endif + +#if SLEEP_ENABLE + //WakeUp_Init_Set(); //жʹ +#endif + + //Charger_Init(); + + /* Interrupt Enable ӦѡҪж */ + #if 0 + SFRADDR = IRQ_EN0; //INT0 --- OCP\DIE OT\VBUS\BAT LOW\VOR\VOL\Boost UVLO\Boost output short. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON\VOX LOADIN + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE\VOX Recharge Edge + SFRDATA = 0xFF; + #endif + SFRADDR = IRQ_EN7; //INT7 --- Key Interrupt Flag + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN9; //INT9 --- VIN DPM\Temp Loop\BAT Overvoltage\Charge Complete\Fast charge timer expire\Tricle charge timer expire\VBUS power good edge. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN10; //INT3 --- VBUS plugout\VBUS plugin\Comparator output edge\Hall\Standby wakeup timer + SFRDATA = 0xFF; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX3 = 1; + EX4 = 1; + EX7 = 1; + + EAL = 1; //жϡ + +#ifdef LED_DISPLAY + LED_B_FLASH(200,5); +#endif +} + +#if SLEEP_ENABLE +/* + ******************************************************************************* + * void OutSleep_Handler(void) + * + * Description : StandbyģʽжϺͲֽӿʹܡ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void OutSleep_Handler(void) +{ + ES0 = 1; //UART0 IRQ + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ + ET1 = 1; //timer1 IRQ + + SFRADDR = ADC_CTL0; + SFRDATA |= 0x80; //ADC enable. +} + + + +/* + ******************************************************************************* + * void InSleep_Handler(void) + * + * Description : Standbyģʽǰ׼رжϡرղֽӿڵʹ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void InSleep_Handler(void) +{ + ES0 = 0; //UART0 IRQ Disable + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable + ET1 = 0; //timer1 IRQ Disable + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. +} +#endif +#if 0 +void Delay_us(volatile uint16_t us) //@11.0592MHz +{ + do + { + _nop_(); + _nop_(); + _nop_(); + }while(us--); +} +#endif +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + + +} + +/* + ******************************************************************************* + * void EX3_isr(void ) interrupt Interrupt_Vector_IE3 + * + * Description : System External Intterupt 3 ,ϵͳ쳣жϡԴжϡStandbyʱж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX3_isr(void) interrupt Interrupt_Vector_IE3 +{ + uint8_t IRQ0_Flag = 0; + uint8_t IRQ10_Flag = 0; + + IRQ0_Flag = IRQ_FLAG0; + IRQ_FLAG0 = IRQ0_Flag; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; //Clear interrupt flag + + if(IRQ0_Flag != 0) + { + /* Coding */ + Protect_Type_Flg |= 0xFF; + } + + if( IRQ10_Flag & 0xC0 ) + { + gIrq_Event_Type |= VBUS_PLUG_IRQ_EVENT; + } + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif + +} + +/* + ******************************************************************************* + * void EX7_isr(void ) interrupt Interrupt_Vector_IE7 + * + * Description : System External Intterupt 7 I2C/PWM/Chargerж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX7_isr(void) interrupt Interrupt_Vector_IE7 +{ + uint8_t IRQ9_Flag = 0; + + IRQ9_Flag = IRQ_FLAG9; + IRQ_FLAG9 = IRQ9_Flag; //Clear interrupt flag + + /*VIN DPM*/ + if(IRQ9_Flag & 0x80) //VIN DPM + { + /*糬ʱʱ賤,ʱҪԡ*/ + /* Coding */ + Protect_Type_Flg |= VIN_DPM_PRO_TYPE; + } + + /*عѹ*/ + if(IRQ9_Flag & 0x20) + { + /*⵽عѹһʱ䣬Թرճ磬 ֱѹָ¿ʼ*/ + /* Coding */ + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; + } + + /*糬ʱرCHG*/ + if(IRQ9_Flag & 0x08) + { + CHG_CTL &= ~0x01; //Disable Charger + } + + if(IRQ9_Flag & 0x10) //Charge Done + { + Charger_Done = 1; + } + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif + +} + + + diff --git a/TP3310_Demo.si4project/Backup/system(1436).c b/TP3310_Demo.si4project/Backup/system(1436).c new file mode 100644 index 0000000..8b54be5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(1436).c @@ -0,0 +1,416 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + + +#include "intrins.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Protect_Type_Flg = 0; +idata uint16_t gIrq_Event_Type = 0; //ж¼¼ +idata uint8_t g_Plug_Irq_Flg = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + + CLKPRE = 0x02; //frequency division: 2^0, 12M ϵͳ + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + +#if UART0_ENABLE + + UART0_Init(); + +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + + Sys_Tim1_Init(); + +#endif + +#if ADC_ENABLE + Adc_Init(); +#endif + //Boost_Init(); + + GPIO_Init(); + +#ifdef LED_DISPLAY + + LED_Init(); // LED pin ΪGPIO + + LED_Clr(); + +#endif + +#ifdef DISPLAY_LED_188 + + g_188_Num = 0; + LED_188_Init(); + +#endif + +#if WTG_ENABLE + + Watchdog_Init(_WDT_TIME_1s_); + +#endif + + +#if KEY_HALL_ENABLE + +// Key_Init(); + Hall_Init(); + +#endif +#if SLEEP_ENABLE + WakeUp_Init_Set(); //жʹ +#endif + //Charger_Init(); +#if 0 + Systerm_State.Next_State = POWER_ON_STATE; + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN0; //INT0 --- OCP\DIE OT\VBUS\BAT LOW\VOR\VOL\Boost UVLO\Boost output short. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON\VOX LOADIN + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE\VOX Recharge Edge + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN7; //INT7 --- Key Interrupt Flag + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN9; //INT9 --- VIN DPM\Temp Loop\BAT Overvoltage\Charge Complete\Fast charge timer expire\Tricle charge timer expire\VBUS power good edge. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN10; //INT3 --- VBUS plugout\VBUS plugin\Comparator output edge\Hall\Standby wakeup timer + SFRDATA = 0xFF; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX3 = 1; + EX4 = 1; + EX5 = 1; + EX7 = 1; +#endif + EAL = 1; //жϡ + +#ifdef LED_DISPLAY + + LED_B_FLASH(200,5); + +#endif +} + +#if SLEEP_ENABLE +/* + ******************************************************************************* + * void OutSleep_Handler(void) + * + * Description : StandbyģʽжϺͲֽӿʹܡ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void OutSleep_Handler(void) +{ + ES0 = 1; //UART0 IRQ + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX5 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ + ET1 = 1; //timer1 IRQ + + SFRADDR = ADC_CTL0; + SFRDATA |= 0x80; //ADC enable. +} + + + +/* + ******************************************************************************* + * void InSleep_Handler(void) + * + * Description : Standbyģʽǰ׼رжϡرղֽӿڵʹ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void InSleep_Handler(void) +{ + ES0 = 0; //UART0 IRQ Disable + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX5 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable + ET1 = 0; //timer1 IRQ Disable + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. +} +#endif +#if 0 +void Delay_us(volatile uint16_t us) //@11.0592MHz +{ + do + { + _nop_(); + _nop_(); + _nop_(); + }while(us--); +} +#endif +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + + +} + +/* + ******************************************************************************* + * void EX3_isr(void ) interrupt Interrupt_Vector_IE3 + * + * Description : System External Intterupt 3 ,ϵͳ쳣жϡԴжϡStandbyʱж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 1 +void EX3_isr(void) interrupt Interrupt_Vector_IE3 +{ + uint8_t IRQ0_Flag = 0; + uint8_t IRQ10_Flag = 0; + + IRQ0_Flag = IRQ_FLAG0; + IRQ_FLAG0 = IRQ0_Flag; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; //Clear interrupt flag +#if 0 + /*Boost·*/ + if(IRQ0_Flag & 0x01) + { + /* Coding */ + Protect_Type_Flg |= BOOST_OUTPUT_SHORT_PRO_TYPE; + } + + /*Boost UVLO*/ + if(IRQ0_Flag & 0x02) + { + Protect_Type_Flg |= BOOST_UVLO_PRO_TYPE; + } + + if(IRQ0_Flag & 0x10) + { + Protect_Type_Flg |= BAT_LOW_PRO_TYPE; + } + /*ѹ*/ + if(IRQ0_Flag & 0x20) + { + Protect_Type_Flg |= VBUS_OVERVOL_PRO_TYPE; + } + + /*VOR output short*/ + if(IRQ0_Flag & 0x08) + { + gVor_Output_Short_Irq_Flag = 1; + Protect_Type_Flg |= VOR_OUTPUT_SHORT_PRO_TYPE; + } + + /*VOL output short*/ + if(IRQ0_Flag & 0x04) + { + gVol_Output_Short_Irq_Flag = 1; + Protect_Type_Flg |= VOL_OUTPUT_SHORT_PRO_TYPE; + } +#else + + if(IRQ0_Flag != 0) + { + /* Coding */ + Protect_Type_Flg |= BOOST_OUTPUT_SHORT_PRO_TYPE; + } + + +#endif + + if(IRQ10_Flag & 0x80) ////VBUS plugout interrupt flag + { + g_Plug_Irq_Flg = VBUS_PLGOUT_FLG; + } + else + if(IRQ10_Flag & 0x40) ////VBUS plugin interrupt flag + { + gIrq_Event_Type |= VBUS_PLGIN_IRQ_EVENT; + + g_Plug_Irq_Flg = VBUS_PLGIN_FLG; + } + +#if 0 + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif + +} +#endif +/* + ******************************************************************************* + * void EX7_isr(void ) interrupt Interrupt_Vector_IE7 + * + * Description : System External Intterupt 7 I2C/PWM/Chargerж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX7_isr(void) interrupt Interrupt_Vector_IE7 +{ + uint8_t IRQ9_Flag = 0; + + IRQ9_Flag = IRQ_FLAG9; + IRQ_FLAG9 = IRQ9_Flag; //Clear interrupt flag + + /*VIN DPM*/ + //Irq_Flag = IRQ_FLAG9; + if(IRQ9_Flag & 0x80) //VIN DPM + { + /*糬ʱʱ賤,ʱҪԡ*/ + /* Coding */ + Protect_Type_Flg |= VIN_DPM_PRO_TYPE; + } + + /*عѹ*/ + if(IRQ9_Flag & 0x20) + { + /*⵽عѹһʱ䣬Թرճ磬 ֱѹָ¿ʼ*/ + /* Coding */ + + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; + } + + if(IRQ9_Flag & 0x10) //Charge Done + { + Charger_Done = 1; + } + +#if 0 + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif + +} + + + diff --git a/TP3310_Demo.si4project/Backup/system(1588).c b/TP3310_Demo.si4project/Backup/system(1588).c new file mode 100644 index 0000000..1443f7d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(1588).c @@ -0,0 +1,355 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Protect_Type_Flg = 0; +idata uint8_t gIrq_Event_Type = 0; //ж¼¼ +//idata uint8_t g_Plug_Irq_Flg = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + //Boost_Init(); + + SFRADDR = P1_OE; + SFRDATA = 0x01; +#if 0 + + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif + +#ifdef LED_DISPLAY + + LED_Init(); // LED pin ΪGPIO + + LED_Clr(); + +#endif + +#ifdef DISPLAY_LED_188 + g_188_Num = 0; + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_ENABLE + Adc_Init(); +#endif + +#if KEY_HALL_ENABLE +// Key_Init(); + Hall_Init(); +#endif + + //Charger_Init(); + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + /* Interrupt Enable ӦѡҪж */ + + SFRADDR = IRQ_EN0; //INT0 --- OCP\DIE OT\VBUS\BAT LOW\VOR\VOL\Boost UVLO\Boost output short. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE + SFRDATA = 0xF0; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xFC; + + SFRADDR = IRQ_EN9; //INT7 --- VIN DPM\Temp Loop\BAT Overvoltage\Charge Complete\Fast charge timer expire\Tricle charge timer expire\VBUS power good edge. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN10; //INT3\INT4 --- VBUS plugout\VBUS plugin\Hall + SFRDATA = 0xFE; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX3 = 1; + EX4 = 1; + EX7 = 1; + + EAL = 1; //жϡ + +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +#ifdef LED_DISPLAY + LED_B_FLASH(50,5); +#endif +} + +#if 0 +void Delay_us(volatile uint16_t us) //@11.0592MHz +{ + do + { + _nop_(); + _nop_(); + _nop_(); + }while(us--); +} +#endif +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + + if(IRQ3_Flag & 0x3C) //vox loadon interrupt flag + { + gIrq_Event_Type |= VOX_LOADON_IRQ_EVENT; + } + + if(IRQ4_Flag & 0xF0) //VOx IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOX_IOFF_IRQ_EVENT; + } + +#if SLEEP_ENABLE + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX3_isr(void ) interrupt Interrupt_Vector_IE3 + * + * Description : System External Intterupt 3 ,ϵͳ쳣жϡԴжϡStandbyʱж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX3_isr(void) interrupt Interrupt_Vector_IE3 +{ + uint8_t IRQ0_Flag = 0; + uint8_t IRQ10_Flag = 0; + + IRQ0_Flag = IRQ_FLAG0; + IRQ_FLAG0 = IRQ0_Flag; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; //Clear interrupt flag + + if(IRQ0_Flag != 0) + { + /* Coding */ + Protect_Type_Flg |= 0xFF; + } + + if( IRQ10_Flag & 0xC0 ) + { + gIrq_Event_Type |= VBUS_PLUG_IRQ_EVENT; + } + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + +/* + ******************************************************************************* + * void EX7_isr(void ) interrupt Interrupt_Vector_IE7 + * + * Description : System External Intterupt 7 I2C/PWM/Chargerж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX7_isr(void) interrupt Interrupt_Vector_IE7 +{ + uint8_t IRQ9_Flag = 0; + + IRQ9_Flag = IRQ_FLAG9; + IRQ_FLAG9 = IRQ9_Flag; //Clear interrupt flag + + /*VIN DPM*/ + if(IRQ9_Flag & 0x80) //VIN DPM + { + /*糬ʱʱ賤,ʱҪԡ*/ + /* Coding */ + Protect_Type_Flg |= VIN_DPM_PRO_TYPE; + } + + /*عѹ*/ + if(IRQ9_Flag & 0x20) + { + /*⵽عѹһʱ䣬Թرճ磬 ֱѹָ¿ʼ*/ + /* Coding */ + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; + } + + /*糬ʱرCHG*/ + if(IRQ9_Flag & 0x08) + { + CHG_CTL &= ~0x01; //Disable Charger + } + + if(IRQ9_Flag & 0x10) //Charge Done + { + Charger_Done = 1; + } + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif + +} + diff --git a/TP3310_Demo.si4project/Backup/system(195).c b/TP3310_Demo.si4project/Backup/system(195).c new file mode 100644 index 0000000..80a9a0d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(195).c @@ -0,0 +1,279 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ +// SFRADDR = 0x89; +// SFRDATA |= 0x80; + + /*test*/ + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + + //UART0_Init(); + SFRADDR = MFP_CTL0; + //SFRDATA &= ~0x0C; + SFRDATA = 0x04; //P01 as UART's TX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ + +#endif + +#if VOX_ENABLE + //Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +#endif + + //Sys_Tim0_Init(); + //TMOD &= 0xF0; + TMOD = 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run + +#if TIMER1_ENABLE + //Sys_Tim1_Init(); + + //TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run + +#endif + + /*COM_CTRL Set*/ + SFRADDR = P0_OE; + SFRDATA = 0x88; //COM_CTRLLEDΪGPIO + + P07 = 0x01; //P07øߣVOUTõͣUART + +#ifdef LED_DISPLAY + // LED_Init(); // LED pin ΪGPIO + // SFRADDR = P0_OE; +// SFRDATA |= 0x08; + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#ifdef ADC_NTC_ENABLE + + SFRADDR = MFP_CTL0; //Set P00 Pinmux As AD0 Function + SFRDATA |= 0x02; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x01; + +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupt enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· + +#if CHARGER_ENABLE + + SFRADDR = PMU_CTL7; //ϷоƬرVBUS OVʹ + SFRDATA &= ~0x20; + + CHG_CTL |= 0x10; //糬ʱʹ + + SFRADDR = REG_CHG0; + SFRDATA |= 0x04; //VDPM + +#endif + +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE +// if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + + IRQ_FLAG10 = 0x0C; + +#if SLEEP_ENABLE + + //if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/system(2087).c b/TP3310_Demo.si4project/Backup/system(2087).c new file mode 100644 index 0000000..8faadbc --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(2087).c @@ -0,0 +1,411 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +#ifdef LED_DISPLAY + +bit VBUS_PlugOut_Flag = 0; +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + //Boost_Init(); + + SFRADDR = P1_OE; + SFRDATA = 0x01; + +#if 0 + + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif + +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO + LED_Clr(); +#endif + +#ifdef DISPLAY_LED_188 + g_188_Num = 0; + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + + +#if KEY_HALL_ENABLE +// Key_Init(); + Hall_Init(); +#endif + + /* Interrupt Enable ӦѡҪж */ + + SFRADDR = IRQ_EN0; //INT0 --- OCP\DIE OT\VBUS\BAT LOW\VOR\VOL\Boost UVLO\Boost output short. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE + SFRDATA = 0xF0; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xFC; + + SFRADDR = IRQ_EN9; //INT7 --- VIN DPM\Temp Loop\BAT Overvoltage\Charge Complete\Fast charge timer expire\Tricle charge timer expire\VBUS power good edge. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN10; //INT3\INT4 --- VBUS plugout\VBUS plugin\Hall\ADC data ready interrupr enable. + SFRDATA = 0xCC; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX3 = 1; + EX4 = 1; + EX6 = 1; + EX7 = 1; + + EAL = 1; //жϡ + +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +#ifdef LED_DISPLAY + LED_R_FLASH(50,6); + LED_G_FLASH(50,6); + LED_B_FLASH(50,6); +#endif +} + +#if 0 +void Delay_us(volatile uint16_t us) //@11.0592MHz +{ + do + { + _nop_(); + _nop_(); + _nop_(); + }while(us--); +} +#endif +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX3_isr(void ) interrupt Interrupt_Vector_IE3 + * + * Description : System External Intterupt 3 ,ϵͳ쳣жϡԴж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX3_isr(void) interrupt Interrupt_Vector_IE3 +{ + uint8_t IRQ0_Flag = 0; + uint8_t IRQ10_Flag = 0; + + IRQ0_Flag = IRQ_FLAG0; + IRQ_FLAG0 = IRQ0_Flag; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; //Clear interrupt flag + +#ifdef LED_DISPLAY + if(IRQ10_Flag & 0x80) //VBUS plugout + { + VBUS_PlugOut_Flag = 0; + } +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; + +#if KEY_HALL_ENABLE + + if( IRQ7_Flag & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ7_Flag & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ7_Flag & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ7_Flag & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( IRQ10_Flag & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ10_Flag & 0x04 ) + { + Hall_Positive_Flg = 1; + } + +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + +/* + ******************************************************************************* + * void EX7_isr(void ) interrupt Interrupt_Vector_IE7 + * + * Description : System External Intterupt 7 I2C/PWM/Chargerж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX7_isr(void) interrupt Interrupt_Vector_IE7 +{ + uint8_t IRQ9_Flag = 0; + + IRQ9_Flag = IRQ_FLAG9; + IRQ_FLAG9 = IRQ9_Flag; //Clear interrupt flag + +#if CHARGER_ENABLE + + /*糬ʱرCHG*/ + if(IRQ9_Flag & 0x08) + { + CHG_CTL &= ~0x01; //Disable Charger + } + + if(IRQ9_Flag & 0x10) //Charge Done + { + Charger_Done = 1; + } + +#endif + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif + +} + diff --git a/TP3310_Demo.si4project/Backup/system(2114).c b/TP3310_Demo.si4project/Backup/system(2114).c new file mode 100644 index 0000000..ebf81f0 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(2114).c @@ -0,0 +1,288 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + SFRADDR = P1_OE; + SFRDATA = 0x01; + +#if 0 + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO +// LED_Clr(); + + LED_R_FLASH(25,6); + LED_G_FLASH(25,6); + LED_B_FLASH(25,6); +#endif + +#ifdef DISPLAY_LED_188 + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + +#if KEY_HALL_ENABLE + Hall_Init(); +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xF8; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ +#if 0 + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; +#endif + +#if KEY_HALL_ENABLE + + if( IRQ_FLAG7 & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ_FLAG7 & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ_FLAG7 & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ_FLAG7 & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( IRQ_FLAG10 & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ_FLAG10 & 0x04 ) + { + Hall_Positive_Flg = 1; + } + + IRQ_FLAG7 = 0xF8; + IRQ_FLAG10 = 0x0C; +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/system(2798).c b/TP3310_Demo.si4project/Backup/system(2798).c new file mode 100644 index 0000000..516dff8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(2798).c @@ -0,0 +1,299 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + +#if 0 + SFRADDR = P1_OE; + SFRDATA = 0x01; + + + + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO +// LED_Clr(); +#endif + +#ifdef DISPLAY_LED_188 + g_188_Num = 0; + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + +#if KEY_HALL_ENABLE +// Key_Init(); + Hall_Init(); +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE + SFRDATA = 0xF0; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xFC; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x18; // Charge complete IntFast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +#ifdef LED_DISPLAY + LED_R_FLASH(50,6); + LED_G_FLASH(50,6); + LED_B_FLASH(50,6); +#endif +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; + +#if KEY_HALL_ENABLE + + if( IRQ7_Flag & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ7_Flag & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ7_Flag & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ7_Flag & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( IRQ10_Flag & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ10_Flag & 0x04 ) + { + Hall_Positive_Flg = 1; + } + +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/system(2883).h b/TP3310_Demo.si4project/Backup/system(2883).h new file mode 100644 index 0000000..db019e5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(2883).h @@ -0,0 +1,44 @@ +/* + ****************************************************************************** + * + * @file system.h + * @brief system module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __SYSTEM_H__ +#define __SYSTEM_H__ + +#include "define.h" + +#define Interrupt_Vector_IE0 0 //0x03,TP3310 IE0 use for wakeup +#define Interrupt_Vector_TF0 1 //0x0B,Timer 0 Overflow +#define Interrupt_Vector_TF1 3 //0x1B,Timer 1 Overflow +#define Interrupt_Vector_RI_TI 4 //0x23,Serial Port0 Interrupt +#define Interrupt_Vector_IE7 8 //0x43,Charger Interrupt +#define Interrupt_Vector_IE2 9 //0x4B,External Interrupr 2/VOX Interrupt +#define Interrupt_Vector_IE3 10 //0x53,External Interrupr 3/ϵͳ쳣жϡԴж +#define Interrupt_Vector_IE4 11 //0x5B,External Interrupr 4/keyHallж +#define Interrupt_Vector_IE5 12 //0x63,NA +#define Interrupt_Vector_IE6 13 //0x6B,ADCж + +#ifdef LED_DISPLAY +extern bit VBUS_PlugOut_Flag; +#endif + +extern void System_Init(void); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/system(3295).h b/TP3310_Demo.si4project/Backup/system(3295).h new file mode 100644 index 0000000..c5c57cf --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(3295).h @@ -0,0 +1,78 @@ +/* + ****************************************************************************** + * + * @file system.h + * @brief system module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __SYSTEM_H__ +#define __SYSTEM_H__ + +#include "define.h" + +extern idata uint16_t Protect_Type_Flg; +extern idata uint16_t gIrq_Event_Type; //ж¼¼ +extern idata uint8_t g_Plug_Irq_Flg; + +#define Interrupt_Vector_IE0 0 //0x03,TP3310 IE0 use for wakeup +#define Interrupt_Vector_TF0 1 //0x0B,Timer 0 Overflow +#define Interrupt_Vector_TF1 3 //0x1B,Timer 1 Overflow +#define Interrupt_Vector_RI_TI 4 //0x23,Serial Port0 Interrupt +#define Interrupt_Vector_IE7 8 //0x43,Charger Interrupt +#define Interrupt_Vector_IE2 9 //0x4B,External Interrupr 2/VOX Interrupt +#define Interrupt_Vector_IE3 10 //0x53,External Interrupr 3/ϵͳ쳣жϡԴж +#define Interrupt_Vector_IE4 11 //0x5B,External Interrupr 4/keyHallж +#define Interrupt_Vector_IE5 12 //0x63,NA +#define Interrupt_Vector_IE6 13 //0x6B,ADCж + + +/*Protect Type*/ +#define VIN_DPM_PRO_TYPE 0x04 //VIN DPM Protect Type +#define BAT_OVERVOL_PRO_TYPE 0x08 //BAT Overvoltage Protect Type +#define BOOST_OUTPUT_SHORT_PRO_TYPE 0x01 +#define BOOST_UVLO_PRO_TYPE 0x02 +#define BAT_LOW_PRO_TYPE 0x10 +#define VBUS_OVERVOL_PRO_TYPE 0x20 +#define DIE_OT_PRO_TYPE 0x40 +#define OCP_PRO_TYPE 0x80 +#define VOR_OUTPUT_SHORT_PRO_TYPE 0x100 +#define VOL_OUTPUT_SHORT_PRO_TYPE 0x200 +#define VOR_EARPHONE_BAT_LIPRO_TYPE 0x400 +#define VOL_EARPHONE_BAT_LIPRO_TYPE 0x800 + + +/*Wake Up Event*/ +#define POWER_ON_EVENT 0x01 +#define STANDBY_WKUP_TIMER_IRQ_EVENT 0x02 +#define VBUS_PLGIN_IRQ_EVENT 0x04 +#define KEY_IRQ_EVENT 0x08 +#define HALL_IRQ_EVENT 0x10 +#define VOR_LOADON_IRQ_EVENT 0x20 +#define VOL_LOADON_IRQ_EVENT 0x40 +#define VOR_IOFF_IRQ_EVENT 0x80 +#define VOL_IOFF_IRQ_EVENT 0x100 +#define VOR_RECHARGE_IRQ_EVENT 0x200 +#define VOL_RECHARGE_IRQ_EVENT 0x400 +#define LOW_BAT_EVENT 0x800 //͵ + +extern void System_Init(void); +extern void InSleep_Handler(void); +extern void OutSleep_Handler(void); +extern void Delay100us(void); +extern void Delay_us(volatile uint16_t us); + + +#endif diff --git a/TP3310_Demo.si4project/Backup/system(3979).c b/TP3310_Demo.si4project/Backup/system(3979).c new file mode 100644 index 0000000..6a080be --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(3979).c @@ -0,0 +1,298 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + + SFRADDR = P1_OE; + SFRDATA = 0x01; + +#if 0 + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO +// LED_Clr(); +#endif + +#ifdef DISPLAY_LED_188 + g_188_Num = 0; + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + +#if KEY_HALL_ENABLE +// Key_Init(); + Hall_Init(); +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE + SFRDATA = 0xF0; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xFC; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x18; // Charge complete IntFast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +#ifdef LED_DISPLAY + LED_R_FLASH(50,6); + LED_G_FLASH(50,6); + LED_B_FLASH(50,6); +#endif +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; + +#if KEY_HALL_ENABLE + + if( IRQ7_Flag & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ7_Flag & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ7_Flag & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ7_Flag & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( IRQ10_Flag & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ10_Flag & 0x04 ) + { + Hall_Positive_Flg = 1; + } + +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/system(4211).c b/TP3310_Demo.si4project/Backup/system(4211).c new file mode 100644 index 0000000..9217d23 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(4211).c @@ -0,0 +1,308 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + /*test*/ + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + //Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + +// SFRADDR = P1_OE; +// SFRDATA = 0x01; + +#if 0 + + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif +// BES_Puls_Start = 1; + + /*COM_CTRL Set*/ + SFRADDR = P0_OE; + SFRDATA = 0x80; + + P07 = 0x01; //P07øߣVOUTõͣUART + +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO +#endif + + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#ifdef ADC_NTC_ENABLE + + SFRADDR = MFP_CTL0; //Set P00 Pinmux As AD0 Function + SFRDATA |= 0x02; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x01; + +#endif + + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupt enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· + +#if CHARGER_ENABLE + + SFRADDR = PMU_CTL7; //ϷоƬرVBUS OVʹ + SFRDATA &= ~0x20; + + CHG_CTL |= 0x10; //糬ʱʹ + + SFRADDR = REG_CHG0; + SFRDATA |= 0x04; //VDPM + +#endif + + +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} +#if 1 + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ +#if 0 + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; +#endif + +#if KEY_HALL_ENABLE + #if 0 + if( IRQ_FLAG7 & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ_FLAG7 & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ_FLAG7 & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ_FLAG7 & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } +#endif +#if 0 + if( IRQ_FLAG10 & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ_FLAG10 & 0x04 ) + { + Hall_Positive_Flg = 1; + } + +// IRQ_FLAG7 = 0xF8; + IRQ_FLAG10 = 0x0C; +#endif +#endif + IRQ_FLAG10 = 0x0C; +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} +#endif diff --git a/TP3310_Demo.si4project/Backup/system(5139).c b/TP3310_Demo.si4project/Backup/system(5139).c new file mode 100644 index 0000000..38ca878 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(5139).c @@ -0,0 +1,361 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Protect_Type_Flg = 0; +idata uint8_t gIrq_Event_Type = 0; //ж¼¼ +//idata uint8_t g_Plug_Irq_Flg = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + //Boost_Init(); + + GPIO_Init(); + +#ifdef LED_DISPLAY + + LED_Init(); // LED pin ΪGPIO + + LED_Clr(); + +#endif + +#ifdef DISPLAY_LED_188 + g_188_Num = 0; + LED_188_Init(); +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_ENABLE + Adc_Init(); +#endif + +#if KEY_HALL_ENABLE +// Key_Init(); + Hall_Init(); +#endif + +#if SLEEP_ENABLE + WakeUp_Init_Set(); //жʹ +#endif + + //Charger_Init(); + + Systerm_State.Next_State = POWER_ON_STATE; + + /* Interrupt Enable ӦѡҪж */ +// SFRADDR = IRQ_EN0; //INT0 --- OCP\DIE OT\VBUS\BAT LOW\VOR\VOL\Boost UVLO\Boost output short. +// SFRDATA = 0xFF; + +// SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON\VOX LOADIN +// SFRDATA = 0xFF; + +// SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE\VOX Recharge Edge +// SFRDATA = 0xFF; + + SFRADDR = IRQ_EN7; //INT7 --- Key Interrupt Flag + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN9; //INT9 --- VIN DPM\Temp Loop\BAT Overvoltage\Charge Complete\Fast charge timer expire\Tricle charge timer expire\VBUS power good edge. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN10; //INT3 --- VBUS plugout\VBUS plugin\Comparator output edge\Hall\Standby wakeup timer + SFRDATA = 0xFF; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX3 = 1; + EX4 = 1; + EX7 = 1; + + EAL = 1; //жϡ + +#ifdef LED_DISPLAY + LED_B_FLASH(200,5); +#endif +} + +#if SLEEP_ENABLE +/* + ******************************************************************************* + * void OutSleep_Handler(void) + * + * Description : StandbyģʽжϺͲֽӿʹܡ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void OutSleep_Handler(void) +{ + ES0 = 1; //UART0 IRQ + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ + ET1 = 1; //timer1 IRQ + + SFRADDR = ADC_CTL0; + SFRDATA |= 0x80; //ADC enable. +} + + + +/* + ******************************************************************************* + * void InSleep_Handler(void) + * + * Description : Standbyģʽǰ׼رжϡرղֽӿڵʹ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void InSleep_Handler(void) +{ + ES0 = 0; //UART0 IRQ Disable + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable + ET1 = 0; //timer1 IRQ Disable + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. +} +#endif +#if 0 +void Delay_us(volatile uint16_t us) //@11.0592MHz +{ + do + { + _nop_(); + _nop_(); + _nop_(); + }while(us--); +} +#endif +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + + +} + +/* + ******************************************************************************* + * void EX3_isr(void ) interrupt Interrupt_Vector_IE3 + * + * Description : System External Intterupt 3 ,ϵͳ쳣жϡԴжϡStandbyʱж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX3_isr(void) interrupt Interrupt_Vector_IE3 +{ + uint8_t IRQ0_Flag = 0; + uint8_t IRQ10_Flag = 0; + + IRQ0_Flag = IRQ_FLAG0; + IRQ_FLAG0 = IRQ0_Flag; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; //Clear interrupt flag + + if(IRQ0_Flag != 0) + { + /* Coding */ + Protect_Type_Flg |= 0xFF; + } + + if( IRQ10_Flag & 0xC0 ) + { + gIrq_Event_Type |= VBUS_PLUG_IRQ_EVENT; + } + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif + +} + +/* + ******************************************************************************* + * void EX7_isr(void ) interrupt Interrupt_Vector_IE7 + * + * Description : System External Intterupt 7 I2C/PWM/Chargerж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX7_isr(void) interrupt Interrupt_Vector_IE7 +{ + uint8_t IRQ9_Flag = 0; + + IRQ9_Flag = IRQ_FLAG9; + IRQ_FLAG9 = IRQ9_Flag; //Clear interrupt flag + + /*VIN DPM*/ + if(IRQ9_Flag & 0x80) //VIN DPM + { + /*糬ʱʱ賤,ʱҪԡ*/ + /* Coding */ + Protect_Type_Flg |= VIN_DPM_PRO_TYPE; + } + + /*عѹ*/ + if(IRQ9_Flag & 0x20) + { + /*⵽عѹһʱ䣬Թرճ磬 ֱѹָ¿ʼ*/ + /* Coding */ + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; + } + + /*糬ʱرCHG*/ + if(IRQ9_Flag & 0x08) + { + CHG_CTL &= ~0x01; //Disable Charger + } + + if(IRQ9_Flag & 0x10) //Charge Done + { + Charger_Done = 1; + } + +#if SLEEP_ENABLE + + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif + +} + + + diff --git a/TP3310_Demo.si4project/Backup/system(5480).c b/TP3310_Demo.si4project/Backup/system(5480).c new file mode 100644 index 0000000..6fcbbfa --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(5480).c @@ -0,0 +1,316 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + /*test*/ + SFRADDR = P0_PD; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + + SFRADDR = P0_PU; + SFRDATA = 0x03; + + //UART0_Init(); + SFRADDR = MFP_CTL0; + SFRDATA = 0x05; //P01 as UART's TX,P00 as UART's RX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ + +#endif + +#if VOX_ENABLE + //Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +#endif + + //Sys_Tim0_Init(); + //TMOD &= 0xF0; + TMOD = 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run + +#if TIMER1_ENABLE + + //Sys_Tim1_Init(); + + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run + +#endif + /*test,set P1.0 output*/ +#if 0 + SFRADDR = P1_OE; + SFRDATA = 0x01; + P10 = 0; +#endif + /*COM_CTRL Set*/ + SFRADDR = P0_OE; + SFRDATA = 0x0C; //COM_CTRL(P02)LED(P03)ΪGPIO + +// COM_CTRL = ON; //P02øߣVOUTõͣUART + +#ifdef LED_DISPLAY + // LED_Init(); // LED pin ΪGPIO + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#ifdef ADC_NTC_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xF8; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· + +#if CHARGER_ENABLE + + SFRADDR = PMU_CTL7; //ϷоƬرVBUS OVʹ + SFRDATA &= ~0x20; + + CHG_CTL |= 0x10; //糬ʱʹ + + SFRADDR = REG_CHG0; + SFRDATA |= 0x04; //VDPM + +#endif + +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE +// if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + +#if KEY_HALL_ENABLE + + if( IRQ_FLAG7 & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ_FLAG7 & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ_FLAG7 & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ_FLAG7 & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + + IRQ_FLAG7 = 0xF8; +#endif + +#if SLEEP_ENABLE + + //if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/system(5516).c b/TP3310_Demo.si4project/Backup/system(5516).c new file mode 100644 index 0000000..ba718f3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(5516).c @@ -0,0 +1,291 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + SFRADDR = P1_OE; + SFRDATA = 0x01; + +#if 0 + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif + BES_Puls_Start = 1; + + /*COM_CTRL Set*/ + SFRADDR = P0_OE; + SFRDATA = 0x80; + + P07 = 0x01; //P07øߣVOUTõͣUART + +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO + +// LED_R_FLASH(25,6); + +#endif + + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL0; //Set P00 Pinmux As AD0 Function + SFRDATA |= 0x02; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x01; + +#endif + +#if KEY_HALL_ENABLE + Hall_Init(); +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + //SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + //SFRDATA = 0xF8; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ +#if 0 + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; +#endif + +#if KEY_HALL_ENABLE + #if 0 + if( IRQ_FLAG7 & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ_FLAG7 & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ_FLAG7 & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ_FLAG7 & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } +#endif + if( IRQ_FLAG10 & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ_FLAG10 & 0x04 ) + { + Hall_Positive_Flg = 1; + } + +// IRQ_FLAG7 = 0xF8; + IRQ_FLAG10 = 0x0C; +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/system(6533).h b/TP3310_Demo.si4project/Backup/system(6533).h new file mode 100644 index 0000000..53b5314 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(6533).h @@ -0,0 +1,68 @@ +/* + ****************************************************************************** + * + * @file system.h + * @brief system module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __SYSTEM_H__ +#define __SYSTEM_H__ + +#include "define.h" + +extern idata uint16_t Protect_Type_Flg; +extern idata uint8_t gIrq_Event_Type; //ж¼¼ +//extern idata uint8_t g_Plug_Irq_Flg; + +#define Interrupt_Vector_IE0 0 //0x03,TP3310 IE0 use for wakeup +#define Interrupt_Vector_TF0 1 //0x0B,Timer 0 Overflow +#define Interrupt_Vector_TF1 3 //0x1B,Timer 1 Overflow +#define Interrupt_Vector_RI_TI 4 //0x23,Serial Port0 Interrupt +#define Interrupt_Vector_IE7 8 //0x43,Charger Interrupt +#define Interrupt_Vector_IE2 9 //0x4B,External Interrupr 2/VOX Interrupt +#define Interrupt_Vector_IE3 10 //0x53,External Interrupr 3/ϵͳ쳣жϡԴж +#define Interrupt_Vector_IE4 11 //0x5B,External Interrupr 4/keyHallж +#define Interrupt_Vector_IE5 12 //0x63,NA +#define Interrupt_Vector_IE6 13 //0x6B,ADCж + +/*Protect Type*/ +#define VIN_DPM_PRO_TYPE 0x04 //VIN DPM Protect Type +#define BAT_OVERVOL_PRO_TYPE 0x08 //BAT Overvoltage Protect Type +#define BOOST_OUTPUT_SHORT_PRO_TYPE 0x01 +#define BOOST_UVLO_PRO_TYPE 0x02 +#define BAT_LOW_PRO_TYPE 0x10 +#define VBUS_OVERVOL_PRO_TYPE 0x20 +#define DIE_OT_PRO_TYPE 0x40 +#define OCP_PRO_TYPE 0x80 + +/*Wake Up Event*/ +#define POWER_ON_EVENT 0x01 +#define STANDBY_WKUP_TIMER_IRQ_EVENT 0x02 +#define VBUS_PLUG_IRQ_EVENT 0x04 +#define KEY_IRQ_EVENT 0x08 +#define HALL_IRQ_EVENT 0x10 + +#define VOX_LOADON_IRQ_EVENT 0x20 +#define VOX_IOFF_IRQ_EVENT 0x40 + +extern void System_Init(void); +extern void InSleep_Handler(void); +extern void OutSleep_Handler(void); +//extern void Delay100us(void); +//extern void Delay_us(volatile uint16_t us); + + +#endif diff --git a/TP3310_Demo.si4project/Backup/system(6696).c b/TP3310_Demo.si4project/Backup/system(6696).c new file mode 100644 index 0000000..a355f7b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(6696).c @@ -0,0 +1,416 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + + +#include "intrins.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Protect_Type_Flg = 0; +idata uint16_t gIrq_Event_Type = 0; //ж¼¼ +idata uint8_t g_Plug_Irq_Flg = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + +#if UART0_ENABLE + + UART0_Init(); + +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + + Sys_Tim1_Init(); + +#endif + +#if ADC_ENABLE + Adc_Init(); +#endif + //Boost_Init(); + + GPIO_Init(); + +#ifdef LED_DISPLAY + + LED_Init(); // LED pin ΪGPIO + + LED_Clr(); + +#endif + +#ifdef DISPLAY_LED_188 + + g_188_Num = 0; + LED_188_Init(); + +#endif + +#if WTG_ENABLE + + Watchdog_Init(_WDT_TIME_1s_); + +#endif + + +#if KEY_HALL_ENABLE + +// Key_Init(); + Hall_Init(); + +#endif +#if SLEEP_ENABLE + WakeUp_Init_Set(); //жʹ +#endif + //Charger_Init(); + + Systerm_State.Next_State = POWER_ON_STATE; + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN0; //INT0 --- OCP\DIE OT\VBUS\BAT LOW\VOR\VOL\Boost UVLO\Boost output short. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON\VOX LOADIN + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN4; //INT2 --- VOX IOFF EDGE\VOX Recharge Edge + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN7; //INT7 --- Key/PWM Interrupt Flag + SFRDATA = 0xF0; + + SFRADDR = IRQ_EN9; //INT9 --- VIN DPM\Temp Loop\BAT Overvoltage\Charge Complete\Fast charge timer expire\Tricle charge timer expire\VBUS power good edge. + SFRDATA = 0xFF; + + SFRADDR = IRQ_EN10; //INT3 --- VBUS plugout\VBUS plugin\Comparator output edge\Hall\Standby wakeup timer + SFRDATA = 0xFF; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX3 = 1; + EX4 = 1; + EX5 = 1; + EX7 = 1; + + EAL = 1; //жϡ + +#ifdef LED_DISPLAY + + LED_B_FLASH(200,5); + +#endif +} + +#if SLEEP_ENABLE +/* + ******************************************************************************* + * void OutSleep_Handler(void) + * + * Description : StandbyģʽжϺͲֽӿʹܡ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void OutSleep_Handler(void) +{ + ES0 = 1; //UART0 IRQ + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX5 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ + ET1 = 1; //timer1 IRQ + + SFRADDR = ADC_CTL0; + SFRDATA |= 0x80; //ADC enable. +} + + + +/* + ******************************************************************************* + * void InSleep_Handler(void) + * + * Description : Standbyģʽǰ׼رжϡرղֽӿڵʹ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void InSleep_Handler(void) +{ + ES0 = 0; //UART0 IRQ Disable + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX5 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable + ET1 = 0; //timer1 IRQ Disable + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. +} +#endif +#if 0 +void Delay_us(volatile uint16_t us) //@11.0592MHz +{ + do + { + _nop_(); + _nop_(); + _nop_(); + }while(us--); +} +#endif +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + + +} + +/* + ******************************************************************************* + * void EX3_isr(void ) interrupt Interrupt_Vector_IE3 + * + * Description : System External Intterupt 3 ,ϵͳ쳣жϡԴжϡStandbyʱж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 1 +void EX3_isr(void) interrupt Interrupt_Vector_IE3 +{ + uint8_t IRQ0_Flag = 0; + uint8_t IRQ10_Flag = 0; + + IRQ0_Flag = IRQ_FLAG0; + IRQ_FLAG0 = IRQ0_Flag; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; //Clear interrupt flag +#if 0 + /*Boost·*/ + if(IRQ0_Flag & 0x01) + { + /* Coding */ + Protect_Type_Flg |= BOOST_OUTPUT_SHORT_PRO_TYPE; + } + + /*Boost UVLO*/ + if(IRQ0_Flag & 0x02) + { + Protect_Type_Flg |= BOOST_UVLO_PRO_TYPE; + } + + if(IRQ0_Flag & 0x10) + { + Protect_Type_Flg |= BAT_LOW_PRO_TYPE; + } + /*ѹ*/ + if(IRQ0_Flag & 0x20) + { + Protect_Type_Flg |= VBUS_OVERVOL_PRO_TYPE; + } + + /*VOR output short*/ + if(IRQ0_Flag & 0x08) + { + gVor_Output_Short_Irq_Flag = 1; + Protect_Type_Flg |= VOR_OUTPUT_SHORT_PRO_TYPE; + } + + /*VOL output short*/ + if(IRQ0_Flag & 0x04) + { + gVol_Output_Short_Irq_Flag = 1; + Protect_Type_Flg |= VOL_OUTPUT_SHORT_PRO_TYPE; + } +#else + + if(IRQ0_Flag != 0) + { + /* Coding */ + Protect_Type_Flg |= BOOST_OUTPUT_SHORT_PRO_TYPE; + } + + +#endif + + if(IRQ10_Flag & 0x80) ////VBUS plugout interrupt flag + { + g_Plug_Irq_Flg = VBUS_PLGOUT_FLG; + } + else + if(IRQ10_Flag & 0x40) ////VBUS plugin interrupt flag + { + gIrq_Event_Type |= VBUS_PLGIN_IRQ_EVENT; + + g_Plug_Irq_Flg = VBUS_PLGIN_FLG; + } + +#if 0 + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif + +} +#endif +/* + ******************************************************************************* + * void EX7_isr(void ) interrupt Interrupt_Vector_IE7 + * + * Description : System External Intterupt 7 I2C/PWM/Chargerж + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX7_isr(void) interrupt Interrupt_Vector_IE7 +{ + uint8_t IRQ9_Flag = 0; + + IRQ9_Flag = IRQ_FLAG9; + IRQ_FLAG9 = IRQ9_Flag; //Clear interrupt flag + + /*VIN DPM*/ + //Irq_Flag = IRQ_FLAG9; + if(IRQ9_Flag & 0x80) //VIN DPM + { + /*糬ʱʱ賤,ʱҪԡ*/ + /* Coding */ + Protect_Type_Flg |= VIN_DPM_PRO_TYPE; + } + + /*عѹ*/ + if(IRQ9_Flag & 0x20) + { + /*⵽عѹһʱ䣬Թرճ磬 ֱѹָ¿ʼ*/ + /* Coding */ + + Protect_Type_Flg |= BAT_OVERVOL_PRO_TYPE; + } + + if(IRQ9_Flag & 0x10) //Charge Done + { + Charger_Done = 1; + } + +#if 0 + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif + +} + + + diff --git a/TP3310_Demo.si4project/Backup/system(7577).c b/TP3310_Demo.si4project/Backup/system(7577).c new file mode 100644 index 0000000..93ad160 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/system(7577).c @@ -0,0 +1,291 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + SFRADDR = 0x01; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + UART0_Init(); +#endif + +#if VOX_ENABLE + Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ +#endif + + Sys_Tim0_Init(); + +#if TIMER1_ENABLE + Sys_Tim1_Init(); +#endif + + SFRADDR = P1_OE; + SFRDATA = 0x01; + +#if 0 + SFRADDR = P0_OE; + SFRDATA = 0x14; + + SFRADDR = P0_DRV; + SFRDATA = 0x33; + + P0 &= ~0x14; + +#endif + /*COM_CTRL Set*/ + SFRADDR = P0_OE; + SFRDATA |= 0x80; + + P07 = 0x01; //P07øߣVOUTõͣUART + +#ifdef LED_DISPLAY + LED_Init(); // LED pin ΪGPIO +// LED_Clr(); + + LED_R_FLASH(25,6); +// LED_G_FLASH(25,6); +// LED_B_FLASH(25,6); +#endif + + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#if ADC_CHN_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + +#if KEY_HALL_ENABLE + Hall_Init(); +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xF8; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ +#if 0 + uint8_t IRQ10_Flag = 0; + uint8_t IRQ7_Flag = 0; + + IRQ10_Flag = IRQ_FLAG10; + IRQ_FLAG10 = IRQ10_Flag; + + IRQ7_Flag = IRQ_FLAG7; + IRQ_FLAG7 = IRQ7_Flag; +#endif + +#if KEY_HALL_ENABLE + + if( IRQ_FLAG7 & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ_FLAG7 & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ_FLAG7 & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ_FLAG7 & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + if( IRQ_FLAG10 & 0x08 ) + { + Hall_Negative_Flg = 1; + } + else + if( IRQ_FLAG10 & 0x04 ) + { + Hall_Positive_Flg = 1; + } + + IRQ_FLAG7 = 0xF8; + IRQ_FLAG10 = 0x0C; +#endif + +#if SLEEP_ENABLE + + if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/uart(2555).h b/TP3310_Demo.si4project/Backup/uart(2555).h new file mode 100644 index 0000000..ea37145 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/uart(2555).h @@ -0,0 +1,48 @@ +/* + ****************************************************************************** + * + * @file uart.h + * @brief uart module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __UART_H__ +#define __UART_H__ + +#include "define.h" + +#ifdef _DEBUG_ALL + +extern char putchar (char ch); + +#endif + +#if UART0_ENABLE + +extern void UART0_Init(void); + +extern void Uart0SendData(uint8_t Txdata); + +extern void Uart0SendString(char *s); + +extern void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf); + +extern void Uart0SendString(char *s); + +#endif + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/uart(2690).c b/TP3310_Demo.si4project/Backup/uart(2690).c new file mode 100644 index 0000000..dab902b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/uart(2690).c @@ -0,0 +1,249 @@ +/* + ****************************************************************************** + * + * @file uart.c + * @brief uart module + * + * + * @version 1.0 + * @date 2022/12/14 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/12/14 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "uart.h" +#include "system.h" +#include "vox_module.h" + + +#if UART0_ENABLE + + /******************************************************************************\ + Macro definitions + \******************************************************************************/ +#define NONE_PARITY 0 //У +#define ODD_PARITY 1 //У +#define EVEN_PARITY 2 //żУ +#define MARK_PARITY 3 //У +#define SPACE_PARITY 4 //հУ + +#define PARITYBIT EVEN_PARITY //Уλ + +#define Baud_Rate0 9600//115200//19200//38400//93750 +#define S0REL_VALUE (1024-375000/Baud_Rate0) + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +bit busy0; + +#endif + +#ifdef _DEBUG_ALL +char putchar(char c) +{ +/* + while(!TI0); + TI0 = 0; + return (S0BUF = c); + */ + Uart0SendData(c); + return(c); +} +#endif + +#if UART0_ENABLE + +/* + ******************************************************************************* + * void UART0_Init(void) + * + * Description : UART0 Initialization UART0debugӡ͸ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void UART0_Init(void) +{ + SFRADDR = MFP_CTL0; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; //P01 as UART's TX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ +} + +/* + ******************************************************************************* + * void Uart0SendData(uint8_t Txdata) + * + * Description : UART0 Send Data + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Uart0SendData(uint8_t Txdata) +{ + while(busy0); + ACC = Txdata; + if (P) //PУλ + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 0; //УλΪ0 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 1; //УλΪ1 +#endif + } + else + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 1; //УλΪ1 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 0; //УλΪ0 +#endif + } + busy0 = 1; + S0BUF = ACC; +} + +/* + ******************************************************************************* + * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) + * + * Description : UART0 Send Packet + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) +{ + uint8_t i = 0; + for(i=0;i '9' ? (*s++)+9 : (*s++)) << 4 ) + | ( (*s > '9' ? (*s++)+9 : (*s++)) & 0x0F ); + } +} + +/* + ******************************************************************************* + * void Uart0_RX_Handle(uint8_t *RxBuff,uint8_t Rx_Len) + * + * Description : UART1մ17?17ַز17?? + * + * + * Arguments : uint8_t *RxBuff,uint8_t Rx_Len + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void Uart0_RX_Handle(uint8_t *RxBuff) +{ + char *Token = NULL; + const char delim[5] = "\r\n"; + char PMU_Addr = 0; + char RX_data = 0; + + /* ȡһַ17? */ + Token = strtok((char *)RxBuff, delim); //ַͨ17?"\r\n"ֽuart + /* ȡַ17? */ + while( Token != NULL ) + { + // printf( "* %s *\r\n", Token ); + + if(strncmp(Token,"Config Set:",strlen("Config Set:")) == 0) + { + from_hex(&Token[strlen("Config Set:0x")],2,&RX_data); //ȡַеConfigRX_data8bitλʾ8ӹܵλ + if(RX_data & 0x80) //bit7:188ʾʹܣ̬ʾ + { + gFun_Select_Type |= 0x80; + } + + if(RX_data & 0x40) //bit6:͸ʹ + { + gFun_Select_Type |= 0x40; + } + + if(RX_data & 0x20) //bit5:߻ѹʹ + { + gFun_Select_Type |= 0x20; + } + + if(RX_data & 0x10) //bit4:PWMʹ + { + gFun_Select_Type |= 0x10; + } + + if(RX_data & 0x08) //bit3:VOX ˫ͨ(Uart)ʹ + { + gFun_Select_Type |= 0x08; + } + + if(RX_data & 0x04) //bit2:VOX ˫ͨRegģʽRXʹ + { + gFun_Select_Type |= 0x04; + } + + if(RX_data & 0x02) //bit1:߳߷Źʹ + { + gFun_Select_Type |= 0x02; + } + if(RX_data & 0x01) // + { + gFun_Select_Type |= 0x01; + } + + } + + Token = strtok(NULL, delim); + } +} +#endif + +#if UART0_ENABLE + +/*uart0жϴ*/ +void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI +{ + uint16_t CrcCheckSum = 0; + + /*UART0ж*/ + if(TI0) + { + TI0 = 0; + busy0 = 0; + } + + /*UART0жϣ͸عЭ*/ + if(RI0) + { + RI0 = 0; + } +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/uart(4613).h b/TP3310_Demo.si4project/Backup/uart(4613).h new file mode 100644 index 0000000..31ab263 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/uart(4613).h @@ -0,0 +1,61 @@ +/* + ****************************************************************************** + * + * @file uart.h + * @brief uart module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __UART_H__ +#define __UART_H__ + +#include "define.h" + +#if UART0_ENABLE +#if 0 +extern uint8_t gFun_Select_Type; + +#define COM0_Data_Lenth 16 + +extern uint8_t RX0_Buffer[COM0_Data_Lenth]; //ջ +extern uint8_t RX0DataLen; +#endif +#endif + +#ifdef _DEBUG_ALL + +extern char putchar (char ch); + +#endif + +#if UART0_ENABLE + +extern void UART0_Init(void); + +extern void Uart0SendData(uint8_t Txdata); + +extern void Uart0SendString(char *s); + +extern void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf); + +extern void Uart0SendString(char *s); + +#endif + + +extern uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/uart(5393).c b/TP3310_Demo.si4project/Backup/uart(5393).c new file mode 100644 index 0000000..df08ea7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/uart(5393).c @@ -0,0 +1,184 @@ +/* + ****************************************************************************** + * + * @file uart.c + * @brief uart module + * + * + * @version 1.0 + * @date 2022/12/14 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/12/14 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "uart.h" +#include "system.h" +#include "vox_module.h" + + +#if UART0_ENABLE + + /******************************************************************************\ + Macro definitions + \******************************************************************************/ +#define NONE_PARITY 0 //У +#define ODD_PARITY 1 //У +#define EVEN_PARITY 2 //żУ +#define MARK_PARITY 3 //У +#define SPACE_PARITY 4 //հУ + +#define PARITYBIT EVEN_PARITY //Уλ + +#define Baud_Rate0 2400//115200//19200//38400//93750 +#define S0REL_VALUE (1024-375000/Baud_Rate0) + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +bit busy0; + +#endif + +#ifdef _DEBUG_ALL +char putchar(char c) +{ +/* + while(!TI0); + TI0 = 0; + return (S0BUF = c); + */ + Uart0SendData(c); + return(c); +} +#endif + +#if UART0_ENABLE + +/* + ******************************************************************************* + * void UART0_Init(void) + * + * Description : UART0 Initialization UART0debugӡ͸ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void UART0_Init(void) +{ + SFRADDR = MFP_CTL0; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; //P01 as UART's TX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ +} + +/* + ******************************************************************************* + * void Uart0SendData(uint8_t Txdata) + * + * Description : UART0 Send Data + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Uart0SendData(uint8_t Txdata) +{ + while(busy0); + ACC = Txdata; + if (P) //PУλ + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 0; //УλΪ0 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 1; //УλΪ1 +#endif + } + else + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 1; //УλΪ1 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 0; //УλΪ0 +#endif + } + busy0 = 1; + S0BUF = ACC; +} + +/* + ******************************************************************************* + * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) + * + * Description : UART0 Send Packet + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) +{ + uint8_t i = 0; + for(i=0;i '9' ? (*s++)+9 : (*s++)) << 4 ) + | ( (*s > '9' ? (*s++)+9 : (*s++)) & 0x0F ); + } +} + +/* + ******************************************************************************* + * void Uart0_RX_Handle(uint8_t *RxBuff,uint8_t Rx_Len) + * + * Description : UART1մ17?17ַز17?? + * + * + * Arguments : uint8_t *RxBuff,uint8_t Rx_Len + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void Uart0_RX_Handle(uint8_t *RxBuff) +{ + char *Token = NULL; + const char delim[5] = "\r\n"; + char PMU_Addr = 0; + char RX_data = 0; + + /* ȡһַ17? */ + Token = strtok((char *)RxBuff, delim); //ַͨ17?"\r\n"ֽuart + /* ȡַ17? */ + while( Token != NULL ) + { + // printf( "* %s *\r\n", Token ); + + if(strncmp(Token,"Config Set:",strlen("Config Set:")) == 0) + { + from_hex(&Token[strlen("Config Set:0x")],2,&RX_data); //ȡַеConfigRX_data8bitλʾ8ӹܵλ + if(RX_data & 0x80) //bit7:188ʾʹܣ̬ʾ + { + gFun_Select_Type |= 0x80; + } + + if(RX_data & 0x40) //bit6:͸ʹ + { + gFun_Select_Type |= 0x40; + } + + if(RX_data & 0x20) //bit5:߻ѹʹ + { + gFun_Select_Type |= 0x20; + } + + if(RX_data & 0x10) //bit4:PWMʹ + { + gFun_Select_Type |= 0x10; + } + + if(RX_data & 0x08) //bit3:VOX ˫ͨ(Uart)ʹ + { + gFun_Select_Type |= 0x08; + } + + if(RX_data & 0x04) //bit2:VOX ˫ͨRegģʽRXʹ + { + gFun_Select_Type |= 0x04; + } + + if(RX_data & 0x02) //bit1:߳߷Źʹ + { + gFun_Select_Type |= 0x02; + } + if(RX_data & 0x01) // + { + gFun_Select_Type |= 0x01; + } + + } + + Token = strtok(NULL, delim); + } +} +#endif + +#if UART0_ENABLE + +/*uart0жϴ*/ +void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI +{ + uint16_t CrcCheckSum = 0; + + /*UART0ж*/ + if(TI0) + { + TI0 = 0; + busy0 = 0; + } + + /*UART0жϣ͸عЭ*/ + if(RI0) + { + RI0 = 0; + } +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/uart(7541).h b/TP3310_Demo.si4project/Backup/uart(7541).h new file mode 100644 index 0000000..bce907c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/uart(7541).h @@ -0,0 +1,43 @@ +/* + ****************************************************************************** + * + * @file uart.h + * @brief uart module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __UART_H__ +#define __UART_H__ + +#include "define.h" + +#ifdef _DEBUG_ALL + +extern char putchar (char ch); + +#endif + +#if UART0_ENABLE + +extern void UART0_Init(void); + +extern void Uart0SendData(uint8_t Txdata); + +extern void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/uart(7695).c b/TP3310_Demo.si4project/Backup/uart(7695).c new file mode 100644 index 0000000..5244b99 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/uart(7695).c @@ -0,0 +1,329 @@ +/* + ****************************************************************************** + * + * @file uart.c + * @brief uart module + * + * + * @version 1.0 + * @date 2022/12/14 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/12/14 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "uart.h" +#include "system.h" +#include "vox_module.h" + + +#if UART0_ENABLE + + /******************************************************************************\ + Macro definitions + \******************************************************************************/ +#define NONE_PARITY 0 //У +#define ODD_PARITY 1 //У +#define EVEN_PARITY 2 //żУ +#define MARK_PARITY 3 //У +#define SPACE_PARITY 4 //հУ + +#define PARITYBIT EVEN_PARITY //Уλ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +bit busy0; + +#ifdef VOX_RX +idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //ջ +bit Uart0_RX_Finish_Flag = 0; +#endif + +#endif + +#ifdef _DEBUG_ALL +char putchar(char c) +{ + + while(!TI0); + TI0 = 0; + return (S0BUF = c); + + // Uart0SendData(c); + // return(c); +} +#endif + +#if UART0_ENABLE + +/* + ******************************************************************************* + * void UART0_Init(void) + * + * Description : UART0 Initialization UART0debugӡ͸ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void UART0_Init(void) +{ + SFRADDR = MFP_CTL0; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; //P01 as UART's TX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ +} +#endif +/* + ******************************************************************************* + * void Uart0SendData(uint8_t Txdata) + * + * Description : UART0 Send Data + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Uart0SendData(uint8_t Txdata) +{ + while(busy0); + ACC = Txdata; + if (P) //PУλ + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 0; //УλΪ0 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 1; //УλΪ1 +#endif + } + else + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 1; //УλΪ1 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 0; //УλΪ0 +#endif + } + busy0 = 1; + S0BUF = ACC; +} +#endif + +/* + ******************************************************************************* + * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) + * + * Description : UART0 Send Packet + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#ifdef VOX_TX + +void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) +{ + uint8_t i = 0; + for(i=0;i COM0_Data_Lenth) ) //յdataRX0DataLenδ䡣 + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + + } + +#elif ZHONGKELANXUN //пѶ + + switch(Rx0Status) + { + case 0: + if( S0BUF == (BOXHEADER >> 8) ) + { + Rx0Status = 1; + + RX0_Cnt = 0; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + break; + + case 1: + if(S0BUF == BOXHEADER) + { + Rx0Status = 2; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + break; + case 1: + RX0_Buffer[RX0_Cnt] = S0BUF; + + if(RX0DataLen == RX0_Cnt - 6) + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + else + { + RX0_Cnt++; + + if(RX0_Cnt == 5) + { + RX0DataLen = RX0_Buffer[4]; //ȡݳ length,lengthChecksum + } + } + } + +#endif + +#endif + } +} + +#endif + + diff --git a/TP3310_Demo.si4project/Backup/userapp(1042).c b/TP3310_Demo.si4project/Backup/userapp(1042).c new file mode 100644 index 0000000..73b6717 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1042).c @@ -0,0 +1,384 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Waring_Event_Flag = 0; //¼־λ + +s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE}; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : SysTerm_State_Machine +* Description : System State Handle +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +#if SLEEP_ENABLE +void SysTem_State_Machine(void) +{ +// uint16_t Adc1 = 0,Adc4 = 0; + if(Systerm_State.Current_State != Systerm_State.Next_State) + { + Systerm_State.Pre_State = Systerm_State.Current_State ; + Systerm_State.Current_State = Systerm_State.Next_State ; + + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /* + ϵͳϵʼش߼ + 磺LEDʾUIͶͨŵȹ; + мʾLEDʾ˸2Ρ + */ +#ifdef LED_DISPLAY + LED_R_FLASH(1000,2); + + LED_G_FLASH(1000,2); +#endif + +#ifdef _DEBUG_MAIN + printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__); +#endif + break; + + case AWAKE_STATE: + /* + ϵͳѺҪĹܣ + 1ʹжϣ + */ +#ifdef _DEBUG_MAIN + printf("Awake State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case NORMAL_STATE: + /*ϵͳҪĹܣ + 1ʼSleepĶʱ + */ + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#ifdef _DEBUG_MAIN + printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case SLEEP_STATE: + /* + SleepģʽǰһЩ׼ + 1ʹܻжϣ + */ + WakeUp_Init_Set(); //жʹ + + if( !(CHIP_STA1 & 0xA0) || (CHIP_STA2 & 0x04) ) //ǰVox޸أ򣬵͵籣򲻶ʱѡ + { + //STBTIM_CTL &= ~0x07; + if(CHIP_STA2 & 0x04) + { + SFRADDR = WKUP_EN3; + SFRDATA &= ~0x80; + } + } + +#ifdef _DEBUG_MAIN + printf("Sleep State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + default: + break; + } + } + else + { + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /*ϵʼҪĹܣ + 1ص + 2ȡshipmodeѺĻѱ־λ + */ + + if(bat_level < BAT_LEVEL_LOW) //20%е͵籨 + { + Waring_Event_Flag |= BIT_WARING_BATLOW_EVENT; + } + + Systerm_State.Next_State = AWAKE_STATE; + + + break; + + case AWAKE_STATE: + + Systerm_State.Next_State = NORMAL_STATE; + + break; + + case NORMAL_STATE: + + /*1ѺN msSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + //if(VIN_Detect_Handle() == 2) //VIN״̬£ϵͳ + // if( (CHIP_STA4 & 0x80) || Vol_LiPro_Flag || Vor_LiPro_Flag) //Power Good + if( CHIP_STA4 & 0x80 ) + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + +#ifdef _DEBUG_MAIN + // Adc1 = ADCx_Value(ADC_CH1); + // Adc4 = ADCx_Value(ADC_CH4); + + printf("1s Print Test!(Adc1:%d,CHIP_STA4:0x%x;Adc4:%d,CHG_CTL:0x%x)\r\n",(uint16)Adc1,(uint16)CHIP_STA4,Adc4,(uint16)CHG_CTL); +#endif + +#if 0 +#ifdef DISPLAY_LED_188 + + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } +#endif +#endif + } + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + + if(Decnt_SleepDelay > 0) + { + +#ifdef _DEBUG_MAIN + // Adc1 = ADCx_Value(ADC_CH1); + // Adc4 = ADCx_Value(ADC_CH4); + printf("sleep decounter: %d,Adc1:%d,CHIP_STA1:0x%x,Adc4:%d\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)Adc1,(uint16_t)CHIP_STA1,(uint16_t)Adc4); +#endif + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + + if(Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + if(Decnt_SleepDelay == 0) + { +#ifdef _DEBUG_MAIN + printf("Enter Standby Mode!\r\n"); +#endif + Systerm_State.Next_State = SLEEP_STATE; //Sleep Mode + Enter_ShipMode_Debounce = 0; + /*־λ*/ + Protect_Type_Flg = 0; + + gIrq_Event_Type = 0; + } + } + } + } + break; + + case SLEEP_STATE: + + /* + 1⻽ԴǷҪϵͳ + 2ʱѣµص + */ + + if(Check_Require_Sleep()) + { + Enter_Sleep(); + } + else + { + Systerm_State.Next_State = AWAKE_STATE; + } + + break; + + default: + break; + } + } +} + +#endif +/* +******************************************************************************* +* void System_Drivers_Machine(void) +* +* Description : ϵͳس (С5ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void System_Drivers_Machine(void) +{ +#if KEY_HALL_ENABLE + + Key_Handler(); // + + Hall_Handler(); //ظǼ + +#endif +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif +} + +/***************************************************************************** +* Function : Other_Thread +* Description : +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +#if 0 +void Other_Thread(void) +{ + + if(F_sys_tim_1ms) + { + F_sys_tim_1ms = 0; +#ifdef LED_DISPLAY + LED_Drv(); // LED1msʱƬ +#endif + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + + Vol_Det_Machine(); + Vor_Det_Machine(); + // Enter_ShipMode(); //ϵͳλP05 + + } +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + static uint8_t Step_Cnt; + uint16_t Vbat_Adc = 0; + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + + switch(Step_Cnt) //case0 case1 10msҪܿcase + { + case 0: + System_Drivers_Machine(); //ִоƬ + Step_Cnt++; + break; + case 1: + #if SLEEP_ENABLE + SysTem_State_Machine(); //Ӧó + #endif + Step_Cnt = 0; + break; + default: + Step_Cnt = 0; + break; + } + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; +#if VOX_ENABLE + + Vol_Det_Machine(); + Vor_Det_Machine(); +#endif + // Enter_ShipMode(); //ϵͳλP05 + + } + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + // P02 = !P02; //֤ʱTimer0GPIO + //P03 = !P03; + //P04 = !P04; +#if ADC_ENABLE + Vref_AdcValue(); + Vbat_Adc = Vbat_Value(); //ȡBatѹ,ADC + ADC_Chn_Value(1); +#endif + P02 = 1; + } +// Other_Thread(); //ִ +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(1195).c b/TP3310_Demo.si4project/Backup/userapp(1195).c new file mode 100644 index 0000000..ec87282 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1195).c @@ -0,0 +1,197 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + if( (CHIP_STA1 & 0xAC) == 0x00 ) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#ifdef DISPLAY_LED_188 + + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } + +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ + + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(1226).c b/TP3310_Demo.si4project/Backup/userapp(1226).c new file mode 100644 index 0000000..981ac11 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1226).c @@ -0,0 +1,311 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +//uint8_t Waring_Event_Flag = 0; //¼־λ + +s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE}; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : SysTerm_State_Machine +* Description : System State Handle +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +#if SLEEP_ENABLE +void SysTem_State_Machine(void) +{ + if(Systerm_State.Current_State != Systerm_State.Next_State) + { + Systerm_State.Pre_State = Systerm_State.Current_State ; + Systerm_State.Current_State = Systerm_State.Next_State ; + + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /* + ϵͳϵʼش߼ + 磺LEDʾUIͶͨŵȹ; + мʾLEDʾ˸2Ρ + */ +#ifdef LED_DISPLAY + LED_R_FLASH(1000,2); + + LED_G_FLASH(1000,2); +#endif + +#ifdef _DEBUG_MAIN + printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__); +#endif + break; + + case AWAKE_STATE: + /* + ϵͳѺҪĹܣ + 1ʹжϣ + */ +#ifdef _DEBUG_MAIN + printf("Awake State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case NORMAL_STATE: + /*ϵͳҪĹܣ + 1ʼSleepĶʱ + */ + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#ifdef _DEBUG_MAIN + printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case SLEEP_STATE: + /* + SleepģʽǰһЩ׼ + 1ʹܻжϣ + */ + WakeUp_Init_Set(); //жʹ + +#ifdef _DEBUG_MAIN + printf("Sleep State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + default: + break; + } + } + else + { + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /*ϵʼҪĹܣ + 1ص + 2ȡshipmodeѺĻѱ־λ + */ + #if 0 + if(bat_level < BAT_LEVEL_LOW) //20%е͵籨 + { + // Waring_Event_Flag |= BIT_WARING_BATLOW_EVENT; + } + #endif + Systerm_State.Next_State = AWAKE_STATE; + + break; + + case AWAKE_STATE: + + Systerm_State.Next_State = NORMAL_STATE; + + break; + + case NORMAL_STATE: + + /*1ѺN msSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + // if( (CHIP_STA4 & 0x80) || Vol_LiPro_Flag || Vor_LiPro_Flag) //Power Good + if(CHIP_STA4 & 0x80) + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + + if(Decnt_SleepDelay > 0) + { +#ifdef _DEBUG_MAIN + printf("sleep decounter: %d,Adc1:%d,CHIP_STA1:0x%x,Adc4:%d\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)Adc1,(uint16_t)CHIP_STA1,(uint16_t)Adc4); +#endif + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + + if(Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + if(Decnt_SleepDelay == 0) + { +#ifdef _DEBUG_MAIN + printf("Enter Standby Mode!\r\n"); +#endif + Systerm_State.Next_State = SLEEP_STATE; //Sleep Mode + /*־λ*/ + Protect_Type_Flg = 0; + + gIrq_Event_Type = 0; + } + } + } + } + break; + + case SLEEP_STATE: + + /* + 1⻽ԴǷҪϵͳ + 2ʱѣµص + */ + if(Check_Require_Sleep()) + { + Enter_Sleep(); + } + else + { + Systerm_State.Next_State = AWAKE_STATE; + } + + break; + + default: + break; + } + } +} + +#endif +/* +******************************************************************************* +* void System_Drivers_Machine(void) +* +* Description : ϵͳس (С5ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void System_Drivers_Machine(void) +{ +#if KEY_HALL_ENABLE + + Key_Handler(); // + + Hall_Handler(); //ظǼ + +#endif +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif +} + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + static uint8_t Step_Cnt; + //uint16_t Vbat_Adc = 0; + + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + + switch(Step_Cnt) //case0 case1 10msҪܿcase + { + case 0: + System_Drivers_Machine(); //ִоƬ + Step_Cnt++; + break; + case 1: + #if SLEEP_ENABLE + SysTem_State_Machine(); //Ӧó + #endif + Step_Cnt = 0; + break; + default: + Step_Cnt = 0; + break; + } + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; +#ifdef LED_DISPLAY + LED_Drv(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); +#endif + } + +#if 0 + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ,ADC +#endif + } +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(1377).c b/TP3310_Demo.si4project/Backup/userapp(1377).c new file mode 100644 index 0000000..ef8bf83 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1377).c @@ -0,0 +1,269 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +bool led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + Display_Red_Flash(4); + CoverEvent_Flg_led = 0; + } + else + { + if ( (ChgStatus == CHG_STA_ING) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + + Display_Red_Off(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + + Display_Red_On(); + } + else + { + Display_Red_Off(); + CoverEvent_Flg_led = 0; + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != DISPLAY_KEEP_FLASH) // УLED˸ + { + Display_Red_KeepFlash(); + } + } + else + if (ChgStatus == CHG_STA_COMPLETED) // ɣLED + { + Display_Red_On(); + } + else // δ, Ϩ + { + Display_Red_Off(); + } + } +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + + + + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif +#ifdef VOX_RX + HandleVoxCommMsg(); +#endif + + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(1679).c b/TP3310_Demo.si4project/Backup/userapp(1679).c new file mode 100644 index 0000000..7d2e440 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1679).c @@ -0,0 +1,202 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + //if( (CHIP_STA1 & 0xAC) == 0x00 ) + if(( OFF == Vol_Vout_Enable ) && ( OFF == Vor_Vout_Enable )) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#ifdef DISPLAY_LED_188 + + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } + +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ +#ifdef DISPLAY_LED_188 + + Set_AllLed_Down(); + +#endif + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + //EX3 = 0; + EX2 = 0; + //EX7 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + //EX3 = 1; + EX2 = 1; + //EX7 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(169).c b/TP3310_Demo.si4project/Backup/userapp(169).c new file mode 100644 index 0000000..5745045 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(169).c @@ -0,0 +1,198 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + + if(( OFF == Vol_Vout_Enable ) && ( OFF == Vor_Vout_Enable )) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#ifdef DISPLAY_LED_188 + + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } + +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ +#ifdef DISPLAY_LED_188 + + Set_AllLed_Down(); + +#endif + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(1828).c b/TP3310_Demo.si4project/Backup/userapp(1828).c new file mode 100644 index 0000000..0b5c20a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1828).c @@ -0,0 +1,379 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +//uint8_t LED_On_Timer1 = 0; //ledʱʱ + +bit led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ +#if 0 + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + #if 1 + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + LED_R_FLASH(100,4); + CoverEvent_Flg_led = 0; + } + else + #endif + { + /*״̬Чʾ*/ + if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR_CHAN] != VOX_PAIR_NONE) ) ) /* ״̬жڲ֡ʾԵЧ */ + { + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) /*УLEDƵ2Hz*/ + { + if (Display_Sta != LED_FLASH) + { + LED_R_KEEP_FLASHING(50); + } + LED_On_Timer = 0; + + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*Գɹ*/ + { + if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + // CoverEvent_Flg_led = 0; + } + } + } + else + { + if ( (CHIP_STA4 & 0x80) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + if( CoverStatus == CLOSE ) + { + CoverEvent_Flg_led = 0; + } + } + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != LED_FLASH) // УLED˸ + { + LED_R_KEEP_FLASHING(100); + } + } + else // δ, Ϩ + { + LED_R_OFF(); + } + } +#endif + + if (CHIP_STA4 & 0x80) // + { + if ( Charger_Done ) // ɣLED + { + LED_R_ON(); + } + else + { + if ( CoverEvent_Flg_led && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + + if (Display_Sta != LED_FLASH) // УLED˸ + { + LED_R_KEEP_FLASHING(100); + } + } + } + else + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + if (CoverEvent_Flg_led) // УLED˸ + { + LED_R_FLASH(100,4); + CoverEvent_Flg_led = 0; + } + } + else + { + /*״̬Чʾ*/ + if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR_CHAN] != VOX_PAIR_NONE) ) ) /* ״̬жڲ֡ʾԵЧ */ + { + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) /*УLEDƵ2Hz*/ + { + if (Display_Sta != LED_FLASH) + { + LED_R_KEEP_FLASHING(50); + } + LED_On_Timer = 0; + Enter_Sleep_Cnt_Restart_Flag = 1; + + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*Գɹ*/ + { + if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + } + } + } + else + { + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + } + } + } + } +} + +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif + +#ifdef VOX_RX + HandleVoxCommMsg(); +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + //SFRADDR = WKUP_EN0; + //SFRDATA = 0xE6; //wake0 up enable. + + //SFRADDR = WKUP_EN3; + //SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(1901).c b/TP3310_Demo.si4project/Backup/userapp(1901).c new file mode 100644 index 0000000..61722ec --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(1901).c @@ -0,0 +1,222 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata uint8_t bat_level_update = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + + if(( OFF == Vol_Vout_Enable ) && ( OFF == Vor_Vout_Enable )) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + + if (bat_level_update != bat_level) + { + g_188_Num = bat_level * 10; + bat_level_update = bat_level; + } + printf("1s Timer Count.\r\n"); +//#ifdef _DEBUG_BAT + printf("bat_level:%d,disnum:%d.\r\n",(uint16_t)bat_level,(uint16_t)g_188_Num); +//#endif + + +#ifdef DISPLAY_LED_188 + + +#if 0 + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } +#endif +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#if KEY_HALL_ENABLE + /*todo*/ + if( (Event_key == KEY_EVENT_LL_8S) && Decnt_SleepDelay == 0 ) //8sµʱʱ0ϵͳSoftware Resetڵгжϣ¼ʱ + { + RSTCON = 0xAC; + SRST = 0x01; + } +#endif + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ +#ifdef DISPLAY_LED_188 + + Set_AllLed_Down(); + +#endif + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(2082).c b/TP3310_Demo.si4project/Backup/userapp(2082).c new file mode 100644 index 0000000..cac78ed --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(2082).c @@ -0,0 +1,217 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata uint8_t bat_level_update = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + + if(( OFF == Vol_Vout_Enable ) && ( OFF == Vor_Vout_Enable )) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#ifdef DISPLAY_LED_188 + + if (bat_level_update != bat_level) + { + g_188_Num = bat_level * 10; + bat_level_update = bat_level; + } + +#ifdef _DEBUG_BAT + printf("bat_level:%d,disnum:%d,vbat:%d.\r\n",(uint16_t)bat_level,(uint16_t)g_188_Num,Vbat_Adc); +#endif + +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#if KEY_HALL_ENABLE + /*todo*/ + if( (Event_key == KEY_EVENT_LL_8S) && Decnt_SleepDelay == 0 ) //8sµʱʱ0ϵͳSoftware Resetڵгжϣ¼ʱ + { + RSTCON = 0xAC; + SRST = 0x01; + } +#endif + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ +#ifdef DISPLAY_LED_188 + + Set_AllLed_Down(); + +#endif + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(2477).h b/TP3310_Demo.si4project/Backup/userapp(2477).h new file mode 100644 index 0000000..42a6ca1 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(2477).h @@ -0,0 +1,51 @@ +/* + ****************************************************************************** + * + * @file userapp.h + * @brief userapp module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __USERAPP_H__ +#define __USERAPP_H__ + +#include "define.h" + +#define BIT_WARING_BATLOW_EVENT 0x01 + +#define BAT_LEVEL_LOW 20 //صͱֵ + +typedef enum{ + POWER_ON_STATE = 1, + AWAKE_STATE, + NORMAL_STATE, + SLEEP_STATE, +}SYS_STATE; + +typedef struct { + uint8_t Next_State; + uint8_t Current_State; + uint8_t Pre_State; +}s_sys_state; + +extern s_sys_state Systerm_State; + +extern void SysTem_State_Machine(void); + +extern void UserAPP(void); + +extern void Other_Thread(void); + +#endif diff --git a/TP3310_Demo.si4project/Backup/userapp(2567).c b/TP3310_Demo.si4project/Backup/userapp(2567).c new file mode 100644 index 0000000..313170b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(2567).c @@ -0,0 +1,383 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Waring_Event_Flag = 0; //¼־λ + +s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE}; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : SysTerm_State_Machine +* Description : System State Handle +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +#if SLEEP_ENABLE +void SysTem_State_Machine(void) +{ +// uint16_t Adc1 = 0,Adc4 = 0; + if(Systerm_State.Current_State != Systerm_State.Next_State) + { + Systerm_State.Pre_State = Systerm_State.Current_State ; + Systerm_State.Current_State = Systerm_State.Next_State ; + + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /* + ϵͳϵʼش߼ + 磺LEDʾUIͶͨŵȹ; + мʾLEDʾ˸2Ρ + */ +#ifdef LED_DISPLAY + LED_R_FLASH(1000,2); + + LED_G_FLASH(1000,2); +#endif + +#ifdef _DEBUG_MAIN + printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__); +#endif + break; + + case AWAKE_STATE: + /* + ϵͳѺҪĹܣ + 1ʹжϣ + */ +#ifdef _DEBUG_MAIN + printf("Awake State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case NORMAL_STATE: + /*ϵͳҪĹܣ + 1ʼSleepĶʱ + */ + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#ifdef _DEBUG_MAIN + printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case SLEEP_STATE: + /* + SleepģʽǰһЩ׼ + 1ʹܻжϣ + */ + WakeUp_Init_Set(); //жʹ + + if( !(CHIP_STA1 & 0xA0) || (CHIP_STA2 & 0x04) ) //ǰVox޸أ򣬵͵籣򲻶ʱѡ + { + //STBTIM_CTL &= ~0x07; + if(CHIP_STA2 & 0x04) + { + SFRADDR = WKUP_EN3; + SFRDATA &= ~0x80; + } + } + +#ifdef _DEBUG_MAIN + printf("Sleep State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + default: + break; + } + } + else + { + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /*ϵʼҪĹܣ + 1ص + 2ȡshipmodeѺĻѱ־λ + */ + + if(bat_level < BAT_LEVEL_LOW) //20%е͵籨 + { + Waring_Event_Flag |= BIT_WARING_BATLOW_EVENT; + } + + Systerm_State.Next_State = AWAKE_STATE; + + + break; + + case AWAKE_STATE: + + Systerm_State.Next_State = NORMAL_STATE; + + break; + + case NORMAL_STATE: + + /*1ѺN msSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + //if(VIN_Detect_Handle() == 2) //VIN״̬£ϵͳ + // if( (CHIP_STA4 & 0x80) || Vol_LiPro_Flag || Vor_LiPro_Flag) //Power Good + if( CHIP_STA4 & 0x80 ) + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + +#ifdef _DEBUG_MAIN + // Adc1 = ADCx_Value(ADC_CH1); + // Adc4 = ADCx_Value(ADC_CH4); + + printf("1s Print Test!(Adc1:%d,CHIP_STA4:0x%x;Adc4:%d,CHG_CTL:0x%x)\r\n",(uint16)Adc1,(uint16)CHIP_STA4,Adc4,(uint16)CHG_CTL); +#endif + +#if 0 +#ifdef DISPLAY_LED_188 + + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } +#endif +#endif + } + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + + if(Decnt_SleepDelay > 0) + { + +#ifdef _DEBUG_MAIN + // Adc1 = ADCx_Value(ADC_CH1); + // Adc4 = ADCx_Value(ADC_CH4); + printf("sleep decounter: %d,Adc1:%d,CHIP_STA1:0x%x,Adc4:%d\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)Adc1,(uint16_t)CHIP_STA1,(uint16_t)Adc4); +#endif + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + + if(Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + if(Decnt_SleepDelay == 0) + { +#ifdef _DEBUG_MAIN + printf("Enter Standby Mode!\r\n"); +#endif + Systerm_State.Next_State = SLEEP_STATE; //Sleep Mode + Enter_ShipMode_Debounce = 0; + /*־λ*/ + Protect_Type_Flg = 0; + + gIrq_Event_Type = 0; + } + } + } + } + break; + + case SLEEP_STATE: + + /* + 1⻽ԴǷҪϵͳ + 2ʱѣµص + */ + + if(Check_Require_Sleep()) + { + Enter_Sleep(); + } + else + { + Systerm_State.Next_State = AWAKE_STATE; + } + + break; + + default: + break; + } + } +} + +#endif +/* +******************************************************************************* +* void System_Drivers_Machine(void) +* +* Description : ϵͳس (С5ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void System_Drivers_Machine(void) +{ +#if KEY_HALL_ENABLE + + Key_Handler(); // + + Hall_Handler(); //ظǼ + +#endif +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif +} + +/***************************************************************************** +* Function : Other_Thread +* Description : +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +#if 0 +void Other_Thread(void) +{ + + if(F_sys_tim_1ms) + { + F_sys_tim_1ms = 0; +#ifdef LED_DISPLAY + LED_Drv(); // LED1msʱƬ +#endif + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + + Vol_Det_Machine(); + Vor_Det_Machine(); + // Enter_ShipMode(); //ϵͳλP05 + + } +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + static uint8_t Step_Cnt; + uint16_t Vbat_Adc = 0; + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + + switch(Step_Cnt) //case0 case1 10msҪܿcase + { + case 0: + System_Drivers_Machine(); //ִоƬ + Step_Cnt++; + break; + case 1: + #if SLEEP_ENABLE + SysTem_State_Machine(); //Ӧó + #endif + Step_Cnt = 0; + break; + default: + Step_Cnt = 0; + break; + } + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; +#if VOX_ENABLE + + Vol_Det_Machine(); + Vor_Det_Machine(); +#endif + // Enter_ShipMode(); //ϵͳλP05 + + } + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + P02 = !P02; //֤ʱTimer0GPIO + //P03 = !P03; + //P04 = !P04; +#if ADC_ENABLE + Vref_AdcValue(); + Vbat_Adc = Vbat_Value(); //ȡBatѹ,ADC + ADC_Chn_Value(1); +#endif + } +// Other_Thread(); //ִ +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(3074).c b/TP3310_Demo.si4project/Backup/userapp(3074).c new file mode 100644 index 0000000..68a8687 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(3074).c @@ -0,0 +1,202 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + if( (CHIP_STA1 & 0xAC) == 0x00 ) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#ifdef DISPLAY_LED_188 + + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } + +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ +#ifdef DISPLAY_LED_188 + + Set_AllLed_Down(); + +#endif + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(3117).c b/TP3310_Demo.si4project/Backup/userapp(3117).c new file mode 100644 index 0000000..f30feff --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(3117).c @@ -0,0 +1,268 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +bool led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + Display_Red_Flash(4); + CoverEvent_Flg_led = 0; + } + else + { + if ( (ChgStatus == CHG_STA_ING) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + + Display_Red_Off(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + + Display_Red_On(); + } + else + { + Display_Red_Off(); + CoverEvent_Flg_led = 0; + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != DISPLAY_KEEP_FLASH) // УLED˸ + { + Display_Red_KeepFlash(); + } + } + else + if (ChgStatus == CHG_STA_COMPLETED) // ɣLED + { + Display_Red_On(); + } + else // δ, Ϩ + { + Display_Red_Off(); + } + } +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + +#ifdef VOX_RX + HandleVoxCommMsg(); +#endif + + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif + + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(3122).c b/TP3310_Demo.si4project/Backup/userapp(3122).c new file mode 100644 index 0000000..26f4b9f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(3122).c @@ -0,0 +1,313 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +//uint8_t Waring_Event_Flag = 0; //¼־λ + +s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE}; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : SysTerm_State_Machine +* Description : System State Handle +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +#if SLEEP_ENABLE +void SysTem_State_Machine(void) +{ +// uint16_t Adc1 = 0,Adc4 = 0; + if(Systerm_State.Current_State != Systerm_State.Next_State) + { + Systerm_State.Pre_State = Systerm_State.Current_State ; + Systerm_State.Current_State = Systerm_State.Next_State ; + + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /* + ϵͳϵʼش߼ + 磺LEDʾUIͶͨŵȹ; + мʾLEDʾ˸2Ρ + */ +#ifdef LED_DISPLAY + LED_R_FLASH(1000,2); + + LED_G_FLASH(1000,2); +#endif + +#ifdef _DEBUG_MAIN + printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__); +#endif + break; + + case AWAKE_STATE: + /* + ϵͳѺҪĹܣ + 1ʹжϣ + */ +#ifdef _DEBUG_MAIN + printf("Awake State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case NORMAL_STATE: + /*ϵͳҪĹܣ + 1ʼSleepĶʱ + */ + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#ifdef _DEBUG_MAIN + printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + case SLEEP_STATE: + /* + SleepģʽǰһЩ׼ + 1ʹܻжϣ + */ + WakeUp_Init_Set(); //жʹ + +#ifdef _DEBUG_MAIN + printf("Sleep State (line:%d)\r\n", (uint16_t)__LINE__); +#endif + break; + + default: + break; + } + } + else + { + switch(Systerm_State.Current_State) + { + case POWER_ON_STATE: + /*ϵʼҪĹܣ + 1ص + 2ȡshipmodeѺĻѱ־λ + */ + #if 0 + if(bat_level < BAT_LEVEL_LOW) //20%е͵籨 + { + // Waring_Event_Flag |= BIT_WARING_BATLOW_EVENT; + } + #endif + Systerm_State.Next_State = AWAKE_STATE; + + break; + + case AWAKE_STATE: + + Systerm_State.Next_State = NORMAL_STATE; + + break; + + case NORMAL_STATE: + + /*1ѺN msSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + // if( (CHIP_STA4 & 0x80) || Vol_LiPro_Flag || Vor_LiPro_Flag) //Power Good + if(CHIP_STA4 & 0x80) + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + + if(Decnt_SleepDelay > 0) + { +#ifdef _DEBUG_MAIN + printf("sleep decounter: %d,Adc1:%d,CHIP_STA1:0x%x,Adc4:%d\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)Adc1,(uint16_t)CHIP_STA1,(uint16_t)Adc4); +#endif + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + + if(Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + if(Decnt_SleepDelay == 0) + { +#ifdef _DEBUG_MAIN + printf("Enter Standby Mode!\r\n"); +#endif + Systerm_State.Next_State = SLEEP_STATE; //Sleep Mode + /*־λ*/ + Protect_Type_Flg = 0; + + gIrq_Event_Type = 0; + } + } + } + } + break; + + case SLEEP_STATE: + + /* + 1⻽ԴǷҪϵͳ + 2ʱѣµص + */ + if(Check_Require_Sleep()) + { + Enter_Sleep(); + } + else + { + Systerm_State.Next_State = AWAKE_STATE; + } + + break; + + default: + break; + } + } +} + +#endif +/* +******************************************************************************* +* void System_Drivers_Machine(void) +* +* Description : ϵͳس (С5ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void System_Drivers_Machine(void) +{ +#if KEY_HALL_ENABLE + + Key_Handler(); // + + Hall_Handler(); //ظǼ + +#endif +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif +} + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + static uint8_t Step_Cnt; + uint16_t Vbat_Adc = 0; + + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + + switch(Step_Cnt) //case0 case1 10msҪܿcase + { + case 0: + System_Drivers_Machine(); //ִоƬ + Step_Cnt++; + break; + case 1: + #if SLEEP_ENABLE + SysTem_State_Machine(); //Ӧó + #endif + Step_Cnt = 0; + break; + default: + Step_Cnt = 0; + break; + } + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; +#ifdef LED_DISPLAY + LED_Drv(); +#endif + +#if VOX_ENABLE + + Vol_Det_Machine(); + Vor_Det_Machine(); +#endif + } + +#if 0 + if(F_sys_tim_1s) + { + F_sys_tim_1s = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ,ADC +#endif + } +#endif +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(437).c b/TP3310_Demo.si4project/Backup/userapp(437).c new file mode 100644 index 0000000..cf79e2a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(437).c @@ -0,0 +1,215 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata uint8_t bat_level_update = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +void LED_Display_App(void) +{ + + +} + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#if 0 + /*todo*/ + if( (Event_key == KEY_EVENT_LL_8S) && Decnt_SleepDelay == 0 ) //8sµʱʱ0ϵͳSoftware Resetڵгжϣ¼ʱ + { + RSTCON = 0xAC; + SRST = 0x01; + } +#endif + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(4747).c b/TP3310_Demo.si4project/Backup/userapp(4747).c new file mode 100644 index 0000000..5104544 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(4747).c @@ -0,0 +1,217 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata uint8_t bat_level_update = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + + if(( OFF == Vol_Vout_Enable ) && ( OFF == Vor_Vout_Enable )) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#ifdef DISPLAY_LED_188 +#if 1 + if (bat_level_update != bat_level) + { + g_188_Num = bat_level * 10; + bat_level_update = bat_level; + } +#endif + +#if 0 + g_188_Num++; + if(g_188_Num >= 188) + { + g_188_Num = 0; + } +#endif +#endif + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#if KEY_HALL_ENABLE + /*todo*/ + if( (Event_key == KEY_EVENT_LL_8S) && Decnt_SleepDelay == 0 ) //8sµʱʱ0ϵͳSoftware Resetڵгжϣ¼ʱ + { + RSTCON = 0xAC; + SRST = 0x01; + } +#endif + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ +#ifdef DISPLAY_LED_188 + + Set_AllLed_Down(); + +#endif + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(4958).c b/TP3310_Demo.si4project/Backup/userapp(4958).c new file mode 100644 index 0000000..b0ff5ce --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(4958).c @@ -0,0 +1,219 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* +******************************************************************************* +* void System_Drivers_Machine(void) +* +* Description : ϵͳس (С5ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +#if 0 +void System_Drivers_Machine(void) +{ +#if KEY_HALL_ENABLE + Key_Handler(); // + + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + + { +#if KEY_HALL_ENABLE + Key_Handler(); // + + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + + } + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; +#ifdef LED_DISPLAY + LED_Drv(); +#endif + } + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + + /*1ѺN sSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + if( Check_Require_Sleep() ) + { + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { +#ifdef _DEBUG_MAIN + printf("sleep decounter:%d,CHIP_STA1:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA1); +#endif + Decnt_SleepDelay--; + + /*Sleep Modeгжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + if( Decnt_SleepDelay == 0 ) + { +#ifdef _DEBUG_MAIN + printf("Enter Standby Mode!\r\n"); +#endif + /*־λ*/ + Protect_Type_Flg = 0; + gIrq_Event_Type = 0; + } + + return; + } + + //WakeUp_Init_Set(); //жʹ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE4; //wake0 up enable. + + SFRADDR = WKUP_EN1; + SFRDATA = 0xFF; //wake1 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + //Enter_Sleep(); + + //InSleep_Handler(); //Disable All IRQ + { + ES0 = 0; //UART0 IRQ Disable + EX4 = 0; + EX3 = 0; + EX2 = 0; + EX7 = 0; + ET0 = 0; //timer0 IRQ Disable + ET1 = 0; //timer1 IRQ Disable + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + } + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /// OutSleep_Handler(); //Enable IRQ + { + ES0 = 1; //UART0 IRQ + EX4 = 1; + EX3 = 1; + EX2 = 1; + EX7 = 1; + ET0 = 1; //timer0 IRQ + ET1 = 1; //timer1 IRQ + + SFRADDR = ADC_CTL0; + SFRDATA |= 0x80; //ADC enable. + } + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#if 0 + Vbat_Value(); //ȡBatѹ,ADC +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(6149).c b/TP3310_Demo.si4project/Backup/userapp(6149).c new file mode 100644 index 0000000..119873c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(6149).c @@ -0,0 +1,198 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +idata uint8_t bat_level_update = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if(F_sys_tim_5ms) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if(F_sys_tim_100ms) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if BAT_VALUE + check_bat_level(); +#endif + +#if VOX_ENABLE + Vol_Det_Machine(); + Vor_Det_Machine(); + +#ifndef BOOST_AOUT + + if(( OFF == Vol_Vout_Enable ) && ( OFF == Vor_Vout_Enable )) + { + DisCharge_Boost_Close(); + } +#endif + +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#if 0 + /*todo*/ + if( (Event_key == KEY_EVENT_LL_8S) && Decnt_SleepDelay == 0 ) //8sµʱʱ0ϵͳSoftware Resetڵгжϣ¼ʱ + { + RSTCON = 0xAC; + SRST = 0x01; + } +#endif + +#ifdef _DEBUG_MAIN + // printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA3,(uint16_t)CHIP_STA4); + printf("sleep decnt:%d,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA4:0x%x\r\n", (uint16_t)Decnt_SleepDelay,(uint16_t)CHIP_STA0,(uint16_t)CHIP_STA1,(uint16_t)CHIP_STA2,(uint16_t)CHIP_STA4); +#endif + return; + } + + + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.bat low,Timer,VOX loadin\loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(640).h b/TP3310_Demo.si4project/Backup/userapp(640).h new file mode 100644 index 0000000..de411ba --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(640).h @@ -0,0 +1,47 @@ +/* + ****************************************************************************** + * + * @file userapp.h + * @brief userapp module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __USERAPP_H__ +#define __USERAPP_H__ + +#include "define.h" +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define BAT_LEVEL_LOW 20 //صͱֵ +#define LED_ON_CNT 40 //4s + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + + +extern uint8_t LED_On_Timer; //ledʱʱ + +extern bool led_blink_1time_flag; + +extern void UserAPP(void); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/userapp(6413).c b/TP3310_Demo.si4project/Backup/userapp(6413).c new file mode 100644 index 0000000..612ca84 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(6413).c @@ -0,0 +1,267 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +bool led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + Display_Red_Flash(4); + CoverEvent_Flg_led = 0; + } + else + { + if ( (ChgStatus == CHG_STA_ING) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + + Display_Red_Off(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + + Display_Red_On(); + } + else + { + Display_Red_Off(); + CoverEvent_Flg_led = 0; + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != DISPLAY_KEEP_FLASH) // УLED˸ + { + Display_Red_KeepFlash(); + } + } + else + if (ChgStatus == CHG_STA_COMPLETED) // ɣLED + { + Display_Red_On(); + } + else // δ, Ϩ + { + Display_Red_Off(); + } + } +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif +#ifdef VOX_RX + HandleVoxCommMsg(); +#endif + + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(6558).h b/TP3310_Demo.si4project/Backup/userapp(6558).h new file mode 100644 index 0000000..e142f4b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(6558).h @@ -0,0 +1,49 @@ +/* + ****************************************************************************** + * + * @file userapp.h + * @brief userapp module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __USERAPP_H__ +#define __USERAPP_H__ + +#include "define.h" + + +#define BAT_LEVEL_LOW 20 //صͱֵ + +typedef enum{ + POWER_ON_STATE = 1, + AWAKE_STATE, + NORMAL_STATE, + SLEEP_STATE, +}SYS_STATE; + +typedef struct { + uint8_t Next_State; + uint8_t Current_State; + uint8_t Pre_State; +}s_sys_state; + +extern s_sys_state Systerm_State; + +extern void SysTem_State_Machine(void); + +extern void UserAPP(void); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/userapp(6668).c b/TP3310_Demo.si4project/Backup/userapp(6668).c new file mode 100644 index 0000000..9bf8aa2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(6668).c @@ -0,0 +1,270 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +bool led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + //Display_Red_Flash(4); + LED_R_FLASH(100, 4); + CoverEvent_Flg_led = 0; + } + else + { + if ( (ChgStatus == CHG_STA_ING) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + + //Display_Red_Off(); + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + + //Display_Red_On(); + LED_R_ON(); + } + else + { + //Display_Red_Off(); + LED_R_OFF(); + CoverEvent_Flg_led = 0; + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != DISPLAY_KEEP_FLASH) // УLED˸ + { + Display_Red_KeepFlash(); + Display_Sta = 0; + } + } + else + if (ChgStatus == CHG_STA_COMPLETED) // ɣLED + { + //Display_Red_On(); + LED_R_ON(); + } + else // δ, Ϩ + { + //Display_Red_Off(); + LED_R_OFF(); + } + } +} +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif + + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + SFRADDR = WKUP_EN0; + SFRDATA = 0xE6; //wake0 up enable. + + SFRADDR = WKUP_EN3; + SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(7691).c b/TP3310_Demo.si4project/Backup/userapp(7691).c new file mode 100644 index 0000000..ba39c48 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(7691).c @@ -0,0 +1,307 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +//uint8_t LED_On_Timer1 = 0; //ledʱʱ + +bit led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + LED_R_FLASH(100,4); + CoverEvent_Flg_led = 0; + } + else + { + /*״̬Чʾ*/ + if( Cover_Open_Flag && ( CHIP_STA1 & 0xA0 ) ) /* ״̬жڲ֡ʾԵЧ */ + { + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) /*УLEDƵ2Hz*/ + { + if (Display_Sta != LED_KEEP_FLASHING) + { + LED_R_KEEP_FLASHING(50); + } + LED_On_Timer = 0; + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_NONE) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_NONE) ) /*ЧLED10ΣƵ4Hz*/ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) + { + LED_R_FLASH(25,10); + } + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*Գɹ*/ + { + if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + CoverEvent_Flg_led = 0; + } + } + } + else + { + #if 1 + if ( (CHIP_STA4 & 0x80) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + #endif + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + CoverEvent_Flg_led = 0; + } + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != LED_KEEP_FLASHING) // УLED˸ + { + LED_R_KEEP_FLASHING(100); + } + } + else + if ( Charger_Done ) // ɣLED + { + LED_R_ON(); + } + else // δ, Ϩ + { + LED_R_OFF(); + } + } +} + +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if KEY_HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif + +#ifdef VOX_RX + HandleVoxCommMsg(); +#endif + + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + //SFRADDR = WKUP_EN0; + //SFRDATA = 0xE6; //wake0 up enable. + + //SFRADDR = WKUP_EN3; + //SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/TP3310_Demo.si4project/Backup/userapp(7799).h b/TP3310_Demo.si4project/Backup/userapp(7799).h new file mode 100644 index 0000000..21afe02 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/userapp(7799).h @@ -0,0 +1,31 @@ +/* + ****************************************************************************** + * + * @file userapp.h + * @brief userapp module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __USERAPP_H__ +#define __USERAPP_H__ + +#include "define.h" + +#define BAT_LEVEL_LOW 20 //صͱֵ + +extern void UserAPP(void); + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1012).h b/TP3310_Demo.si4project/Backup/vox_module(1012).h new file mode 100644 index 0000000..f7c26a5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1012).h @@ -0,0 +1,97 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vol_Vout_Enable; +extern bit Vor_Vout_Enable; + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + + + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +typedef enum { + + VOX_GET_INTO_BOX = 0, // + VOX_STAY_IN_BOX, //ڲ + //VOX_GET_OUTPUT_BOX, // + VOX_NONE_IN_BOX, //ղ + +}Vox_State_e; + +extern Vox_State_e Vol_State; +extern Vox_State_e Vor_State; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + + extern void Vox_init(void); + + extern void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + extern void VOR_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + + extern void Vol_Det_Machine(void); + extern void Vor_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1070).h b/TP3310_Demo.si4project/Backup/vox_module(1070).h new file mode 100644 index 0000000..732b5af --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1070).h @@ -0,0 +1,185 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +#define ZHONGKELANXUN + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^2; +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#ifdef QIANCHENG //ة + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ + +#elif ZHONGKELANXUN //пѶ + +#define BOXHEADER 0x55AA +#define BOXIDCODE 0xFF + +#endif + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +/*ͨѡ*/ +#ifdef QIANCHENG //ة + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; +#elif ZHONGKELANXUN //пѶ + typedef enum { + VOL_CHAN = 0, + VOR_CHAN = 0x11, + VOX_BOTH = 0x22, + }e_Vox_Chan; +#endif + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + /*ͳֽ˫ͨѶЭID*/ +#ifdef QIANCHENG //ة + + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; + +#elif ZHONGKELANXUN //пѶ + +typedef enum _VOX_BES_COMMAND_E +{ + VHOUSE_CMD_GET_VBAT = 0x01, //ȡصҲΪʼ־ + VHOUSE_CMD_PAIR, //ַϢ + VHOUSE_CMD_GET_TWS_BTADDR, //ȡԶַϢ + VHOUSE_CMD_CLEAR_PAIR, //Ϣ + VHOUSE_CMD_PWROFF, //ػϢ + VHOUSE_CMD_ERR, //Ϣ + VHOUSE_CMD_SUCCESS, //ɹӦ + VHOUSE_CMD_CLOSE_WINDOW, //ظ + VHOUSE_CMD_OPEN_WINDOW, // + VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //ظǻȡ + + VHOUSE_CMD_ENABLE_POPUP = 0x80, //صܿ + + VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //ͻָ + VHOUSE_CMD_CUSTOM_RESV_END = 0xEF, + + VHOUSE_CMD_SYS_RST = 0xFF, //ϵͳλָ + +}VOX_BES_COMMAND_E; + +#endif + +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1097).c b/TP3310_Demo.si4project/Backup/vox_module(1097).c new file mode 100644 index 0000000..74976e7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1097).c @@ -0,0 +1,586 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_CNT 100 //ظ5s󣬶ַûʱ10sûûVox 5V硣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +bit BES_Rst_Puls_Flag = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0xff,0xff}; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1)) == 0 ) //300msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + + Vox_Pairing_State[VOL_CHAN] = 0xff; + Vox_Pairing_State[VOR_CHAN] = 0xff; + + //Box_To_Bes_Comm_Debounce += 1; + } + else + { + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_CNT) //ַûʱ10sرַûVOX 5V + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + Box_To_Bes_Comm_Debounce++; + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼһֽûüȥ +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1253).c b/TP3310_Demo.si4project/Backup/vox_module(1253).c new file mode 100644 index 0000000..d698b9d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1253).c @@ -0,0 +1,575 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + // SFRADDR = MFP_CTL0; + // SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1)) == 0 ) //300msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + COM_CTRL = ON; + //SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + //SFRDATA &= ~0x0C; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + // tx_pData[5] = bat_level; + tx_pData[5] = CHIP_STA1; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { + // SFRADDR = MFP_CTL0; + // SFRDATA |= 0x04; //P01 as UART's TX + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + Box_To_Bes_Comm_Debounce += 1; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1512).h b/TP3310_Demo.si4project/Backup/vox_module(1512).h new file mode 100644 index 0000000..b8977b5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1512).h @@ -0,0 +1,138 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^7; +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#define HEADER 0x050A //VOXͨѶݰͷ + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ +/*ͨѡ*/ + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + /*ͳֽ˫ͨѶЭID*/ + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern idata uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1592).c b/TP3310_Demo.si4project/Backup/vox_module(1592).c new file mode 100644 index 0000000..651e30f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1592).c @@ -0,0 +1,569 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +bit Vol_Bat_Full_Flag = 0; +bit Vor_Bat_Full_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x10; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x20; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧֻloadon״̬˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x24) == 0x20 ) + { + Vol_Vout_Enable = ON; //־ON +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬1֣2س3ﮱ + { + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + VOL_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽֻLoadon״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = ON; //־ON +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( Vol_Bat_Full_Flag ) //ADTģʽ£ֻLoadon״̬˵ + { + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Bat Full\r\n"); +#endif + } + + } + else + if( !(CHIP_STA1 & 0x24) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vol_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = OFF; + + if( CHIP_STA1 & 0x20 ) //ADTģʽ³Loadonźţ˵ж֡ + { + Vol_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vol ÿ200msһ*/ + if( IRQ_FLAG0 & 0x04 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x04; + Vol_State = VOX_NONE_IN_BOX; + } + } + +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x88) == 0x80 ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + VOR_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻3ﮱ10ӡ + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Vout_Enable = ON; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( Vor_Bat_Full_Flag ) + { + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Bat Full\r\n"); +#endif + } + } + else + if( !(CHIP_STA1 & 0x88) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vor_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Loadon_Det_Debounce = 0; + Vor_Vout_Enable = OFF; + + /* Loadon״̬λڣ˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); //ڿBoost¸ڿVOUT(100msһ) + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vor (жϱ־λ)ÿ200msһ*/ + if( IRQ_FLAG0 & 0x08 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x08; + Vor_State = VOX_NONE_IN_BOX; + } + } + +} + + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +#define HEADER 0x050A +#define FW_VER 0x01 +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID ) +{ + uint8_t *tx_pData; + uint8_t i = 0; + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + Uart0SendPacket(9, tx_pData); +} + + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1759).c b/TP3310_Demo.si4project/Backup/vox_module(1759).c new file mode 100644 index 0000000..f970161 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1759).c @@ -0,0 +1,615 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gVor_Charge_Normal_Flag = 0; //Voutdebounceһʱ䲻IOFF־˵磬زﮱ״̬ +bit gVol_Charge_Normal_Flag = 0; + +#if 0 +bit gVor_Output_Short_Irq_Flag = 0; +bit gVol_Output_Short_Irq_Flag = 0; +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; +#endif + +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit Vol_Bat_Full_Flag = 0; +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit Vor_Bat_Full_Flag = 0; +bit gVor_Take_Out_Flag = 0; //ּ־λ + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ +#if 0 + SFRADDR = VOX_CON1; + SFRDATA &= ~0x07; + SFRDATA |= 0x07; //VOX ã200mA ,VOX ؼ5mA + + + SFRADDR = VOX_CON0; + SFRDATA &= ~0x03; + SFRDATA |= 0x03; +#endif + + VOL_EN_Type(VOX_ADT_Mode); + VOR_EN_Type(VOX_ADT_Mode); + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x10; //VOL Disable 5V Charge + + VOX_CTL0 |= 0x10; //VOL Enable 5V Charge + + VOX_CTL0 &= ~0x05; //ADTL Disable,VOL_PU Disable + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + VOX_CTL0 &= ~((0x01<<2)|(0x01<<4)); //VOL Pull Up,5v Discharge Off +#ifndef BOOST_AOUT + DisCharge_Boost_Close(); +#endif + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x20; //VOR Disable 5V Charge + + VOX_CTL0 |= 0x20; //VOR Enable 5V Charge + + VOX_CTL0 &= ~0x0A; //ADTR Disable,VOR_PU Disable + + break; + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x02; //VOR load detect On + + VOX_CTL0 &= ~((0x01<<3)|(0x01<<5)); //VOR Pull Up,5v Discharge Off +#ifndef BOOST_AOUT + DisCharge_Boost_Close(); +#endif + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vol_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; +#ifndef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch(Vol_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type & 0x07) != 0x02 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧ˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x04) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vol_Vout_Enable = ON; //־ON + Vol_Bat_Full_Flag = 0; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + { + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef _DEBUG_VOX + printf("Vol Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + Vol_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vol_Vout_Enable = OFF; + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vol Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( 1 == gVol_Take_Out_Flag ) //ٴ֣硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; + Vol_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vol Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x24) == 0x04 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vol_State = VOX_GET_OUTPUT_BOX; + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; + gVol_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_R_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vol Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOL_EN_Type(VOX_ADT_Mode); + + if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vol Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + + if( CHIP_STA1 & 0x20 ) + { + Vol_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vol VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } + } + else + { + Vol_State = VOX_NONE_IN_BOX; + } + +#if 0 + if(gVol_Output_Short_Irq_Flag) + { + Vol_Output_Short_Debounce++; + if(Vol_Output_Short_Debounce >= 5) //Vor·100ms¿ADT + { + Vol_Output_Short_Debounce = 0; + + gVol_Output_Short_Irq_Flag = 0; + Vol_State = VOX_NONE_IN_BOX; + } + } +#endif +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; +#ifndef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch(Vor_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type&0x70) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x08) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + Vor_Bat_Full_Flag = 0; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vor_Bat_Full_Flag = 1; +#ifdef _DEBUG_VOX + printf("Vor Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + Vor_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vor_Vout_Enable = OFF; + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vor Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( 1 == gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; + Vor_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vor Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x88) == 0x08 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vor_State = VOX_GET_OUTPUT_BOX; + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; + gVor_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_G_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOR_EN_Type(VOX_ADT_Mode); + + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vor Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Loadon_Det_Debounce = 0; + + /* Loadon״̬λڡ־1˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vor VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } + } + else + { + Vor_State = VOX_NONE_IN_BOX; + } + +#if 0 + /*VOX·VOX·¿VOXΪADTģʽVoxһֱHiccupģʽ*/ + if(gVor_Output_Short_Irq_Flag) + { + Vor_Output_Short_Debounce++; + if(Vor_Output_Short_Debounce > 5) //Vor·100ms¿ADT + { + Vor_Output_Short_Debounce = 0; + + gVor_Output_Short_Irq_Flag = 0; + Vor_State = VOX_NONE_IN_BOX; + } + } + +#endif +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + + if(IRQ3_Flag & 0x3C) + { + gIrq_Event_Type |= VOX_LOADON_IRQ_EVENT; //vox loadon interrupt flag + } + + if(IRQ4_Flag & 0xF0) //VOx IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOX_IOFF_IRQ_EVENT; + } + +#if SLEEP_ENABLE + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(1868).c b/TP3310_Demo.si4project/Backup/vox_module(1868).c new file mode 100644 index 0000000..d2a017a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(1868).c @@ -0,0 +1,775 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 50 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 300 //ػǰdebounceʱ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + WkUp_EarPhone_Debounce++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ5sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //͹ظָ ͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + #if 0 + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1) ) == 0 ) //300msһ + { + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //͹ظָ ͨ +#endif + } + } + #endif + else + { + if( CoverStatus == OPEN ) //VoxADTģʽCOM_CTRLʶ֡ + { + COM_CTRL = ON; + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ5+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif +#ifdef VOX_TX + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; +#ifdef VOX_TX + // HandleTxCommand(CMD_BES_HEARTBEAT,VOX_BOTH); //ָֶָͨη÷һΣã +#endif + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * --Header--cmd----len_h---len_l-----Data------CRC16 + * 4bytes 2byte 1byte 1byte Len bytes 1byte + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +idata uint8_t BES_ShutDown_State = 0; //ػ״̬0磻1ӵ͵ +//idata uint8_t BES_Addr[2][6] = 0; //ַBES_Addr[0][6]BES_Addr[1][6]Ҷ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[8] = 0; + uint8_t i = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_BOX_CLOSE: + + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + #if 0 + for(i=0 ;i<6;i++) + { + tx_pData[9] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + #endif + break; + + case CMD_SHUT_DOWN: + + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + tx_pData[7] = BES_ShutDown_State; + + break; + + case CMD_BES_PAIRING: + + /*Data Length*/ + tx_pData[4] = 0x02; + #if 0 + for(i=0 ;i<6;i++) + { + tx_pData[7] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + #endif + tx_pData[5] = 0x03; //Ƿö + tx_pData[6] = 0x03; //ں͵ĸ + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_OTA: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; +#endif + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=2 ;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header cmd Ack type len_h len_l Data CRC16 + * 4bytes 2byte 1byte 1byte 1byte Len bytes 1byte + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +idata uint8_t Vox_BatLevel[2] = 0; //Vox_BatLevel[0]:VOL;Vox_BatLevel[1]:VOR +idata uint8_t Vox_Pairing_State = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Paired_State = 0; //Լ¼VOL:4bitVOR:4bit1йԼ¼0û +//idata uint8_t Bes_OTA_Ver[2] = 0; //OTA汾 + + +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + #if 1 + switch(RxCommand) + { + case CMD_BOX_OPEN: + + #if 0 + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[5]; //ȡ + Vox_Pairing_State = RX0_Buffer[6]; //ȡ״̬ + Vox_Paired_State = RX0_Buffer[7]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ + Vox_Pairing_State = RX0_Buffer[6] >> 4; //ȡҶ״̬ + Vox_Paired_State = RX0_Buffer[7] >> 4; //ȡҶԼ¼ + } + + break; + #endif + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[5]; //ȡ + Vox_Pairing_State = RX0_Buffer[6]; //ȡ״̬ + Vox_Paired_State = RX0_Buffer[7]; //ȡԼ¼ + #if 0 + for(i=10 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-10] += RX0_Buffer[i]; //ȡַ + } + #endif + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ + Vox_Pairing_State = RX0_Buffer[6] >> 4; //ȡҶ״̬ + Vox_Paired_State = RX0_Buffer[7] >> 4; //ȡҶԼ¼ + #if 0 + for(i=10 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-10] += RX0_Buffer[i]; //ȡҶַ + } + #endif + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + #if 0 + for(i=7 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-7] += RX0_Buffer[i]; //ȡַ + } + #endif + Vox_Pairing_State = RX0_Buffer[5]; //ȡ״̬ + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[6]; //ȡ + + } + else + { + #if 0 + for(i=7 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-7] += RX0_Buffer[i]; //ȡҶַ + } + #endif + Vox_Pairing_State = RX0_Buffer[5] >> 4; //ȡҶ״̬ + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[6]; //ȡҶ + } + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; +#endif + default: + break; + } + #endif + return 1; +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +uint8_t Box_To_Bes_Comm_Debounce = 0; +uint16_t Bes_Pairing_Debounce = 0; + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if(Uart0_RX_Finish_Flag == 1) + { + Uart0_RX_Finish_Flag = 0; + + for(i=3 ;i<(RX0_Buffer[6] + 4);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[2] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[4]); + } + else + { + return; + } + } +#if 1 + if(Event_key == KEY_EVENT_L_2S) //ǣжڲ̡֣ + { + if( (CoverStatus == OPEN) && ( CHIP_STA1 & 0xA0 ) ) //1ǣ2жںС + { + if(Box_To_Bes_Comm_Debounce < 1) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_CLEAN,VOX_BOTH); /*ԣ˫ַָ*/ +#endif + } + else + if(Box_To_Bes_Comm_Debounce < 2) //ֻһڲ֣β + { + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ԣָ*/ + Vox_Pairing_State = 0x00; + // BES_Addr[VOL_CHAN][6] = 0x00; +#endif + } + else + { + if( (Vox_Pairing_State > VOX_PAIR_ING) && (Vox_Pairing_State > VOX_PAIR_ING) ) //˫Գɹ򲻴浱ǰ״̬ + { + Event_key = KEY_EVENT_Empty; + Bes_Pairing_Debounce = 0; + /*todo ԳɹЧ*/ + + } + else + if( Vox_Pairing_State != 0x00 ) //յظָ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ԣҶָ*/ + Vox_Pairing_State = 0x00; + // BES_Addr[VOR_CHAN][6] = 0x00; + Box_To_Bes_Comm_Debounce = 0; /*ظָ*/ +#endif + } + else + if(Vox_Pairing_State == 0x00 || Vox_Pairing_State == 0x00) + { + Event_key = KEY_EVENT_Empty; + + /*ʾֹԵЧ*/ + LED_R_FLASH(20,6); //5Hz˸6 + Display_Sta=DISPLAY_FLASH; + return; + + } + } + + if(Bes_Pairing_Debounce > 600) //10ӳʱ + { + Event_key = KEY_EVENT_Empty; + Bes_Pairing_Debounce = 0; + LED_R_FLASH(20,10); //5Hz˸10 + Display_Sta=DISPLAY_FLASH; + } + + Box_To_Bes_Comm_Debounce++; + Bes_Pairing_Debounce++; + } + else + { + Event_key = KEY_EVENT_Empty; + } + + } +#endif +} + +#endif + + +#ifdef VOX_TX_RST_PATTERN + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2129).c b/TP3310_Demo.si4project/Backup/vox_module(2129).c new file mode 100644 index 0000000..bc725c1 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2129).c @@ -0,0 +1,624 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 50 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +#ifdef VOX_TX +idata uint8_t BES_ShutDown_State = 0; //ػ״̬0磻1ӵ͵ +//idata uint8_t BES_Addr[2][6] = 0; //ַBES_Addr[0][6]BES_Addr[1][6]Ҷ +idata uint8_t EarPhone_Num = 0; +bit BES_Pairing_Again = 0; +#endif + +#ifdef VOX_RX + +idata uint8_t Vox_Pairing_State[2] = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Paired_State[2] = 0; //Լ¼VOL:4bitVOR:4bit1йԼ¼0û +idata uint8_t Vox_Bes_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ +#if 1 + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } +#endif + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + // BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + // Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + //WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ5sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //͹ظָ ͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + #if 1 + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1) ) == 0 ) //300msһ + { + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //͹ظָ ͨ +#endif + } + } + + else + { + if( CoverStatus == OPEN ) //VoxADTģʽCOM_CTRLʶ֡ + { + COM_CTRL = ON; + } + } + #endif + + Vox_TX_Timer++; + } + else //5s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + //BES_Rst_Puls_Timer++; + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ5+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif +#ifdef VOX_TX + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; + //SFRDATA = 0x00; + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; +#ifdef VOX_TX + // HandleTxCommand(CMD_BES_HEARTBEAT,VOX_BOTH); //ָֶָͨη÷һΣã +#endif + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_SHUT_DOWN: + + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + tx_pData[7] = BES_ShutDown_State; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + for(i=0;i<6;i++) + { + tx_pData[5] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=2 ;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + #if 1 + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[6]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[7]; //ȡԼ¼ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[6]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[7]; //ȡҶԼ¼ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + + for(i=5 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-5] += RX0_Buffer[i]; //ȡַ + } + Vox_Pairing_State[0] = RX0_Buffer[11]; //ȡ״̬ + } + else + { + for(i=5 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-5] += RX0_Buffer[i]; //ȡַ + } + Vox_Pairing_State[1] = RX0_Buffer[11]; //ȡҶ״̬ + } + + break; + + default: + break; + } + #endif + return 1; +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +uint8_t Box_To_Bes_Comm_Debounce = 0; +//uint16_t Bes_Pairing_Debounce = 0; + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if(Uart0_RX_Finish_Flag == 1) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +#if 0 + + if(IRQ_FLAG7 & 0x20) //ǣжڲ̡֣ + { + if( (CoverStatus == OPEN) && ( CHIP_STA1 & 0xA0 ) ) //1ǣ2жںС + { + if(Box_To_Bes_Comm_Debounce < 1) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_CLEAN,VOX_BOTH); /*ԣ˫ַָ*/ +#endif + } + else + if(Box_To_Bes_Comm_Debounce < 2) //ֻһڲ֣β + { + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ԣָ*/ + Vox_Pairing_State[VOL_CHAN] = 0x00; + // BES_Addr[VOL_CHAN][6] = 0x00; +#endif + } + else + { + if( (Vox_Pairing_State[VOL_CHAN] > VOX_PAIR_ING) && (Vox_Pairing_State[VOR_CHAN] > VOX_PAIR_ING) ) //˫Գɹ򲻴浱ǰ״̬ + { + IRQ_FLAG7 = 0x20; + // Bes_Pairing_Debounce = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + /*todo ԳɹЧ*/ + + } + else + if( Vox_Pairing_State[VOL_CHAN] != 0x00 ) //յظָ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ԣҶָ*/ + Vox_Pairing_State[VOL_CHAN] = 0x00; + // BES_Addr[VOR_CHAN][6] = 0x00; + Box_To_Bes_Comm_Debounce = 0; /*ظָ*/ +#endif + } + else + if(Vox_Pairing_State[VOL_CHAN] == 0x00 || Vox_Pairing_State[VOR_CHAN] == 0x00) + { + IRQ_FLAG7 = 0x20; + /*ʾֹԵЧ*/ + LED_R_FLASH(20,6); //5Hz˸6 + //Display_Sta=DISPLAY_FLASH; + return; + + } + } + + // if(Bes_Pairing_Debounce > 600) //10ӳʱ + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) + { + IRQ_FLAG7 = 0x20; + //Bes_Pairing_Debounce = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + LED_R_FLASH(20,10); //5Hz˸10 + } + + Box_To_Bes_Comm_Debounce++; + // Bes_Pairing_Debounce++; + } + else + { + IRQ_FLAG7 = 0x20; + } + } +#endif +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2156).h b/TP3310_Demo.si4project/Backup/vox_module(2156).h new file mode 100644 index 0000000..6013894 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2156).h @@ -0,0 +1,184 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^2; +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#ifdef QIANCHENG //ة + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ + +#elif ZHONGKELANXUN //пѶ + +#define BOXHEADER 0x55AA +#define BOXIDCODE 0xFF + +#endif + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +/*ͨѡ*/ +#ifdef QIANCHENG //ة + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; +#elif ZHONGKELANXUN //пѶ + typedef enum { + VOL_CHAN = 0, + VOR_CHAN = 0x11, + VOX_BOTH = 0x22, + }e_Vox_Chan; +#endif + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + + /*ͳֽ˫ͨѶЭID*/ +#ifdef QIANCHENG //ة + + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; + +#elif ZHONGKELANXUN //пѶ + +typedef enum _VOX_BES_COMMAND_E +{ + VHOUSE_CMD_GET_VBAT = 0x01, //ȡصҲΪʼ־ + VHOUSE_CMD_PAIR, //ַϢ + VHOUSE_CMD_GET_TWS_BTADDR, //ȡԶַϢʹñΪԶ໥תֻת棬յcopyһֻԶɡ + VHOUSE_CMD_CLEAR_PAIR, //Ϣ + VHOUSE_CMD_PWROFF, //ػϢ + VHOUSE_CMD_ERR, //Ϣ + VHOUSE_CMD_SUCCESS, //ɹӦ + VHOUSE_CMD_CLOSE_WINDOW, //ظ + VHOUSE_CMD_OPEN_WINDOW, // + VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //ظǻȡ + + VHOUSE_CMD_ENABLE_POPUP = 0x80, //صܿ + + VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //ͻָ + VHOUSE_CMD_CUSTOM_RESV_END = 0xEF, + + VHOUSE_CMD_SYS_RST = 0xFF, //ϵͳλָ + +}VOX_BES_COMMAND_E; + +#endif + +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2242).c b/TP3310_Demo.si4project/Backup/vox_module(2242).c new file mode 100644 index 0000000..ea785cc --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2242).c @@ -0,0 +1,386 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 100 //VOXָʱ䣨10s +#define EARPHONR_WKUP_CNT 5 +#define BES_RST_PULS_CNT 50 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; + +bit Vox_Vout_Enable = OFF; //Vox־λ + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +} +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + if( CoverEvent_Flg ) //Hall¼ + { + if(gBoost_Prepared_Flag) //Boost㣬VoxһֱADTģʽ + { + DisCharge_Boost_Open(); //BoostVox 5vڷһιظָ֮10msʱ + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + if( CoverStatus == CLOSE ) //1ظǿVOUTʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮俪VOUT + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else //2Ǵ + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + WkUp_EarPhone_Debounce++; + } + else + { + DisCharge_Boost_Close(); + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300ms͹ظָ10s֮俪VOUT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % 3) == 0 ) //300msһ + { + if( EarPhone_ShutDown_Flag ) + { + Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + } + else + if( CoverStatus == CLOSE ) + { + Vox_TX_Machine(CLOSE_COVER); //͹ظָ + } + else + if( CoverStatus == OPEN ) + { + Vox_TX_Machine(OPEN_COVER); //Ϳָ + } + } + else + { + COM_CTRL = ON; + } + Vox_TX_Timer++; + } + else //10s־λ + { + COM_CTRL = ON; + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + DisCharge_Boost_Close(); + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + + if( (!BES_Rst_Puls_Flag ) ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //10+5sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 22*5=110ms + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + } + } +} + + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + COM_CTRL = ON; + } + + BES_Puls_Cnt++; + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + COM_CTRL = ON; + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + Uart0SendPacket(9, tx_pData); +} + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2357).c b/TP3310_Demo.si4project/Backup/vox_module(2357).c new file mode 100644 index 0000000..bfb260f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2357).c @@ -0,0 +1,559 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; + +#ifdef VOX_RX + +idata uint8_t Vox_Pairing_State[2] = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳظָ*/ + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +bit Boost_Vout_Change_Flag = 0; +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + Box_To_Bes_Comm_Debounce += 1; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2452).h b/TP3310_Demo.si4project/Backup/vox_module(2452).h new file mode 100644 index 0000000..715156a --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2452).h @@ -0,0 +1,100 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vox_Vout_Enable; + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#define HEADER 0x050A //VOXͨѶݰͷ + +sbit COM_CTRL = P0^7; + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + + typedef enum { + VOX_NONE = 0, + VOL_CHAN, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; + + +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + +extern bit BES_Puls_Start; + +extern uint16_t Boost_Open_Atleast_10min_Cnt; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void BES_Reset_Puls(void); +extern void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID); +extern void Vox_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2603).c b/TP3310_Demo.si4project/Backup/vox_module(2603).c new file mode 100644 index 0000000..598ecb7 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2603).c @@ -0,0 +1,537 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 100 //VOXָʱ䣨10s +#define EARPHONR_WKUP_CNT 5 +#define BES_RST_PULS_CNT 50 +#define Vox_TX_Interval 3 //Voxʱָʱ +#define T10MIN_DEBOUNCE 600 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_10min_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + if( CoverStatus == CLOSE ) //1ظǿVOUTʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮俪VOUT + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_10min_Cnt = 0; + VOX_EN_Type(VOX_VOUT_Mode); + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + WkUp_EarPhone_Debounce++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ10sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //300msһ + { + if( EarPhone_ShutDown_Flag ) + { + #ifdef VOX_TX + Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + #endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { + #ifdef VOX_TX + Vox_TX_Machine(CLOSE_COVER); //͹ظָ + #endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { + #ifdef VOX_TX + Vox_TX_Machine(OPEN_COVER); //Ϳָ + #endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + else + { + COM_CTRL = ON; + } + + Vox_TX_Timer++; + } + else //10s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_10min_Cnt >= T10MIN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ10+5sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif + #ifdef VOX_TX + Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 23*5=115ms + #endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * --Header--cmd----len_h---len_l-----Data------CRC16 + * 4bytes 2byte 1byte 1byte Len bytes 1byte + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + switch(TxCommand) + { + case CMD_BOX_OPEN: + + break; + + case CMD_BOX_CLOSE: + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + break; + + case CMD_BES_CLEAN: + + break; + + case CMD_BES_HEARTBEAT: + + break; + + case CMD_OTA: + + break; + default: + break; + } +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header cmd Ack type len_h len_l Data CRC16 + * 4bytes 2byte 1byte 1byte 1byte Len bytes 1byte + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + switch(RxCommand) + { + case CMD_BOX_OPEN: + + break; + + case CMD_BOX_CLOSE: + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + break; + + case CMD_BES_CLEAN: + + break; + + case CMD_BES_HEARTBEAT: + + break; + default: + break; + } + return 1; +} + +#endif + + +#ifdef VOX_TX + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[9] = 0; + uint8_t i = 0; + + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(9, tx_pData); +#endif +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2637).c b/TP3310_Demo.si4project/Backup/vox_module(2637).c new file mode 100644 index 0000000..a4c06f9 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2637).c @@ -0,0 +1,883 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_TIMOUT 30 //ظ5s󣬶ַû3sطһΡֱ10κʱ +#define BES_ADDR_EXCHG_CNT 5 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +bit BES_Rst_Puls_Flag = 0; +bit BES_Addr_Exchg_Flag = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +uint8_t Box_To_Bes_Comm_Cnt = 0; + +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0}; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = {0}; +idata uint8_t BES_Addr[6] = {0}; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif + + + +#ifdef XIAOMI +bit gShip_Mode_Flag = 0; //ģʽ־λ0ػ1ģʽ + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + + #if 1 + if( VOX_Enable_Mode == VOX_VOUT_Mode) + { + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + } + else + { + VOX_CTL0 &= ~0x30; //VOX 5v Off + } + + #else + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + // VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } + #endif +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + Vox_Pairing_State[VOL_CHAN] = 0; + Vox_Pairing_State[VOR_CHAN] = 0; + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + COM_CTRL = OFF; + //VOX_EN_Type(VOX_VOUT_Mode); + VOX_CTL0 |= 0x30; //VOX Enable 5VVOX˵NMOS + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + BES_Addr_Exchg_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { +#if 0 + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + +#else + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //͹ظָ ֶͨ +#endif + } + } + else + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //͹ظָ ֶͨ +#endif + } + + } +#endif + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + BES_Addr_Exchg_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + Box_To_Bes_Comm_Cnt = 0; + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + // if( BES_Addr_Exchg_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + if( BES_Addr_Exchg_Flag ) + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + } + else + { + if(Box_To_Bes_Comm_Cnt > BES_ADDR_EXCHG_CNT) //ַûʱ20sرַûVOX 5V + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_TIMOUT) //3sطһΡط5κʱ + { + Box_To_Bes_Comm_Cnt++; + Box_To_Bes_Comm_Debounce = 0; + } + else + { + Box_To_Bes_Comm_Debounce++; + } + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} +#ifdef ZHONGKELANXUN + +uint8_t Crc8Maxim(u8 *buf, u8 length) +{ + u8 i; + u8 crc = 0; + while(length--) + { + crc ^= *buf++; + for(i=0;i<8;i++) + { + if( crc&1 ) + { + crc = (crc >> 1)^0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; +} + +#elif XIAOMI + + /******************************************************************************\ + Functions definitions + \******************************************************************************/ + + /* + ******************************************************************************* + * u16 CalCheckCrc16(u8 * pucFrame, u16 usLen) + * + * Description : У͵ļ + * + * + * Arguments : u8 *pucFrame: ݴŵַ + u16 usLen: ݳ, byteΪλ + + * Returns : + * + * Notes : + * + ******************************************************************************* + */ + + uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen) +{ + uint16_t wCRCin = 0x0000; + uint16_t wCPoly = 0x1021; + uint8_t wChar = 0; + unsigned int i; + + while (usLen--) + { + + wChar = *(pucFrame++); + + wCRCin ^= (wChar << 8); + + for(i = 0;i < 8;i++) + { + if(wCRCin & 0x8000) + { + wCRCin = (wCRCin << 1) ^ wCPoly; + } + else + { + wCRCin = wCRCin << 1; + } + } + } + + return (wCRCin); +} +#endif + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ +#ifdef QIANCHENG //ة + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[i]; //Ͷַ + } + + break; + + case BES_RESET: //BES λpatten + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function + SFRDATA &= ~0x0C; + + for(i=0;i<6;i++) + { + BES_Addr[i] = 0; //屾ضַ + } + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + +#elif ZHONGKELANXUN //пѶ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ʶ*/ + tx_pData[2] = BOXIDCODE; + /*ͨ*/ + tx_pData[5] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case VHOUSE_CMD_GET_VBAT: + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[6] = (CHIP_STA4 & 0x80) | bat_level; //bit 0~6 ʾֵֵ 0~100bit 7 Ϊ 1 ʾڸֳ磬Ϊ 0 ʾûиֳ磻 + tx_pData[7] = 0x03; //ear_vbat:Զִȡõ bit7 1 ͸Ҷ + //ûлȡ֪ԶڲڶҪ bit7 1 + break; + + case VHOUSE_CMD_PAIR: //ְ3sַָ + /*Data Length*/ + tx_pData[4] = 0x01; + break; + + case VHOUSE_CMD_GET_TWS_BTADDR: + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + +#elif XIAOMI //С + /* + + */ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + uint16_t Checksum = 0; + uint16_t DataLen = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + + tx_pData[1] = nVox_Chn_Select; /*䷽Bit0-3նˣBit4-7Ͷ + 1˫ + 2 + 3PC/װ + 4 + 5Ҷ + */ + /*ָ*/ + tx_pData[2] = TxCommand; + tx_pData[3] = TxCommand >> 8; /*Сģʽֽǰ + Bit0-7 + Bit8-14Ԥ + Bit15: + 0:REQ + 1:ACK + */ + tx_pData[4] = CoverStatus; //غ״̬ + + switch(TxCommand) + { + case CMD_TWS_PAIR: //ȡMACַ + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + break; + + case CMD_TWS_BTADDR_EXCH: + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + break; + + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = gShip_Mode_Flag; //ģʽ0ػ1ģʽ + + break; + + case CMD_CLEAR_PAIR: + + break; + + case CMD_HEARTBEAT: + + break; + + case CMD_SN: + + break; + + case CMD_GET_INTO_PAIR: + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + DataLen = tx_pData[5] | (tx_pData[6] << 8); + Checksum = CalCheckCrc16( tx_pData, 7 + DataLen ); // + tx_pData[4 + DataLen] = Checksum; + tx_pData[5 + DataLen] = Checksum >> 8; + +#endif + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(10 + DataLen, tx_pData); +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡַ״̬ + } + else + { + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶַ״̬ + } + + for(i=0;i<6;i++) + { + BES_Addr[i] = RX0_Buffer[i+5]; //ȡַ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2880).c b/TP3310_Demo.si4project/Backup/vox_module(2880).c new file mode 100644 index 0000000..a61c43c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2880).c @@ -0,0 +1,424 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 100 //VOXָʱ䣨10s +#define EARPHONR_WKUP_CNT 5 +#define BES_RST_PULS_CNT 50 +#define Vox_TX_Interval 3 //Voxʱָʱ +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Vox_Vout_Enable = OFF; //Vox־λ +uint8_t Boost_Open_Cnt = 0; //ڿBoostʱVox 5V + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +} +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_10min_Cnt = 0; +#define T10MIN_DEBOUNCE 600 + +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + //if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + + if( gBoost_Prepared_Flag ) + { + if( Boost_Open_Cnt < 1 ) + { + DisCharge_Boost_Open(); //BoostVox 5vڷһιظָ֮100msʱ + Boost_Open_Cnt++; + + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + if( CoverStatus == CLOSE ) //1ظǿVOUTʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮俪VOUT + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Atleast_10min_Cnt = 0; + VOX_EN_Type(VOX_VOUT_Mode); + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + WkUp_EarPhone_Debounce++; + } + else + { + DisCharge_Boost_Close(); + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Cnt = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ10sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //300msһ + { + if( EarPhone_ShutDown_Flag ) + { + //Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + } + else + if( CoverStatus == CLOSE ) + { + //Vox_TX_Machine(CLOSE_COVER); //͹ظָ + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + } + else + if( CoverStatus == OPEN ) + { + //Vox_TX_Machine(OPEN_COVER); //Ϳָ + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + } + } + else + { + COM_CTRL = ON; + } + + Vox_TX_Timer++; + } + else //10s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + DisCharge_Boost_Close(); + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_10min_Cnt >= T10MIN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ10+5sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + printf("Bes Reset.\r\n"); + //Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 23*5=115ms + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + COM_CTRL = ON; + } + } +} + + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + // COM_CTRL = ON; + } + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + //COM_CTRL = ON; + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + Uart0SendPacket(9, tx_pData); +} + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(2987).h b/TP3310_Demo.si4project/Backup/vox_module(2987).h new file mode 100644 index 0000000..ea2df9e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(2987).h @@ -0,0 +1,84 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +#define VOL_TYPE 0x01 +#define VOR_TYPE 0x02 + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +extern bit Vol_LiPro_Flag; +extern bit Vor_LiPro_Flag; + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + +typedef enum { + + VOX_NONE = 0, + VOL_CHAN, + VOR_CHAN, + VOX_BOTH, + +}e_Vox_Chan; + +typedef enum { + + VOX_GET_INTO_BOX = 0, // + VOX_STAY_IN_BOX, //ڲ + VOX_GET_OUTPUT_BOX, // + VOX_NONE_IN_BOX, //ղ + +}Vox_State_e; + +extern Vox_State_e Vol_State; +extern Vox_State_e Vor_State; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + + extern void Vox_init(void); + + extern void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + extern void VOR_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + + extern void Vol_Det_Machine(void); + extern void Vor_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(3144).c b/TP3310_Demo.si4project/Backup/vox_module(3144).c new file mode 100644 index 0000000..d503228 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(3144).c @@ -0,0 +1,584 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; + +#ifdef VOX_RX + +idata uint8_t Vox_Pairing_State[2] = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ +#if 1 + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } +#endif + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + //Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + //WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳظָ*/ + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + else + { + if( CoverStatus == OPEN ) //VoxADTģʽCOM_CTRLʶ֡ + { + COM_CTRL = ON; + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +bit Boost_Vout_Change_Flag = 0; +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if(Uart0_RX_Finish_Flag == 1) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +#if 1 + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + Box_To_Bes_Comm_Debounce += 1; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } +#endif + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(3243).c b/TP3310_Demo.si4project/Backup/vox_module(3243).c new file mode 100644 index 0000000..c64921f --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(3243).c @@ -0,0 +1,639 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gVor_Recharge_Irq_Flag = 0; //жϱ־λ +bit gVol_Recharge_Irq_Flag = 0; + +bit gVor_Charge_Normal_Flag = 0; //Voutdebounceһʱ䲻IOFF־˵磬زﮱ״̬ +bit gVol_Charge_Normal_Flag = 0; + +bit gVor_Output_Short_Irq_Flag = 0; +bit gVol_Output_Short_Irq_Flag = 0; +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit Vol_Bat_Full_Flag = 0; +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit Vor_Bat_Full_Flag = 0; +bit gVor_Take_Out_Flag = 0; //ּ־λ + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ +#if 0 + SFRADDR = VOX_CON1; + SFRDATA &= ~0x07; + SFRDATA |= 0x07; //VOX ã200mA ,VOX ؼ5mA + + + SFRADDR = VOX_CON0; + SFRDATA &= ~0x03; + SFRDATA |= 0x03; +#endif + + VOL_EN_Type(VOX_ADT_Mode); + VOR_EN_Type(VOX_ADT_Mode); + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x10; //VOL Disable 5V Charge + + VOX_CTL0 |= 0x10; //VOL Enable 5V Charge + + VOX_CTL0 &= ~0x05; //ADTL Disable,VOL_PU Disable + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + VOX_CTL0 &= ~((0x01<<2)|(0x01<<4)); //VOL Pull Up,5v Discharge Off +#ifndef BOOST_AOUT + DisCharge_Boost_Close(); +#endif + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x20; //VOR Disable 5V Charge + + VOX_CTL0 |= 0x20; //VOR Enable 5V Charge + + VOX_CTL0 &= ~0x0A; //ADTR Disable,VOR_PU Disable + + break; + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x02; //VOR load detect On + + VOX_CTL0 &= ~((0x01<<3)|(0x01<<5)); //VOR Pull Up,5v Discharge Off +#ifndef BOOST_AOUT + DisCharge_Boost_Close(); +#endif + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vol_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; +#ifndef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch(Vol_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type&0x07) != 0x02 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧ˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x04) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vol_Vout_Enable = ON; //־ON + Vol_Bat_Full_Flag = 0; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + { + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef _DEBUG_VOX + printf("Vol Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + Vol_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vol_Vout_Enable = OFF; + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vol Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( 1 == gVol_Take_Out_Flag ) //ٴ֣硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; + Vol_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vol Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x24) == 0x04 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vol_State = VOX_GET_OUTPUT_BOX; + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; + gVol_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_R_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vol Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOL_EN_Type(VOX_ADT_Mode); + + if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vol Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + + if(CHIP_STA1 & 0x20) + { + Vol_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vol VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } + } + else + { + Vol_State = VOX_NONE_IN_BOX; + } + +#if 0 + if(gVol_Output_Short_Irq_Flag) + { + Vol_Output_Short_Debounce++; + if(Vol_Output_Short_Debounce >= 5) //Vor·100ms¿ADT + { + Vol_Output_Short_Debounce = 0; + + gVol_Output_Short_Irq_Flag = 0; + Vol_State = VOX_NONE_IN_BOX; + } + } +#endif +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; +#ifndef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch(Vor_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type&0x70) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x08) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + Vor_Bat_Full_Flag = 0; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vor_Bat_Full_Flag = 1; +#ifdef _DEBUG_VOX + printf("Vor Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + Vor_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vor_Vout_Enable = OFF; + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vor Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( 1 == gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; + Vor_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vor Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x88) == 0x08 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vor_State = VOX_GET_OUTPUT_BOX; + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; + gVor_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + // LED_G_FLASH(5); + LED_G_FLASH(200,5); +#endif +#ifdef _DEBUG_VOX + printf("Vor Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOR_EN_Type(VOX_ADT_Mode); + + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vor Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Loadon_Det_Debounce = 0; + + /* Loadon״̬λڡ־1˵̡֣*/ + if(CHIP_STA1 & 0x80) + { + Vor_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vor VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } + } + else + { + Vor_State = VOX_NONE_IN_BOX; + } + +#if 0 + /*VOX·VOX·¿VOXΪADTģʽVoxһֱHiccupģʽ*/ + if(gVor_Output_Short_Irq_Flag) + { + Vor_Output_Short_Debounce++; + if(Vor_Output_Short_Debounce > 5) //Vor·100ms¿ADT + { + Vor_Output_Short_Debounce = 0; + + gVor_Output_Short_Irq_Flag = 0; + Vor_State = VOX_NONE_IN_BOX; + } + } + +#endif +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 1 +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + +#if 0 + if(IRQ3_Flag & 0x0C) //vol loadon interrupt flag + { + gIrq_Event_Type |= VOR_LOADON_IRQ_EVENT; + } + + if(IRQ3_Flag & 0x30) //vor loadon interrupt flag + { + gIrq_Event_Type |= VOL_LOADON_IRQ_EVENT; + } + + if(IRQ4_Flag & 0xC0) //VOR IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOR_IOFF_IRQ_EVENT; + } + + if(IRQ4_Flag & 0x30) //VOL IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOL_IOFF_IRQ_EVENT; + } +#else + + if(IRQ3_Flag & 0x3C) + { + gIrq_Event_Type |= VOX_LOADON_IRQ_EVENT; //vox loadon interrupt flag + } + + if(IRQ4_Flag & 0xF0) //VOx IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOX_IOFF_IRQ_EVENT; + } + +#endif + +#if SLEEP_ENABLE + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} +#endif +#endif diff --git a/TP3310_Demo.si4project/Backup/vox_module(325).c b/TP3310_Demo.si4project/Backup/vox_module(325).c new file mode 100644 index 0000000..b250079 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(325).c @@ -0,0 +1,505 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +bit Vol_Bat_Full_Flag = 0; +bit Vor_Bat_Full_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V + + SFRADDR = VOX_CON0; + SFRDATA = 0x1A; + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x11; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x22; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧֻloadon״̬˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x24) == 0x20 ) + { + Vol_Vout_Enable = ON; //־ON +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬1֣2س3ﮱ + { + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + VOL_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽֻLoadon״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( Vol_Bat_Full_Flag ) //ADTģʽ£ֻLoadon״̬˵ + { + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Bat Full\r\n"); +#endif + } + + } + else + if( !(CHIP_STA1 & 0x24) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vol_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = OFF; + + if( CHIP_STA1 & 0x20 ) //ADTģʽ³Loadonźţ˵ж֡ + { + Vol_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vol ÿ200msһ*/ + if( IRQ_FLAG0 & 0x04 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x04; + Vol_State = VOX_NONE_IN_BOX; + } + } + +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x88) == 0x80 ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + VOR_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻3ﮱ10ӡ + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( Vor_Bat_Full_Flag ) + { + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Bat Full\r\n"); +#endif + } + } + else + if( !(CHIP_STA1 & 0x88) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vor_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Loadon_Det_Debounce = 0; + Vor_Vout_Enable = OFF; + + /* Loadon״̬λڣ˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); //ڿBoost¸ڿVOUT(100msһ) + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vor (жϱ־λ)ÿ200msһ*/ + if( IRQ_FLAG0 & 0x08 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x08; + Vor_State = VOX_NONE_IN_BOX; + } + } + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(3529).c b/TP3310_Demo.si4project/Backup/vox_module(3529).c new file mode 100644 index 0000000..0f1c7a3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(3529).c @@ -0,0 +1,692 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 50 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 300 //ػǰdebounceʱ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + WkUp_EarPhone_Debounce++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ5sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //͹ظָ ͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1) ) == 0 ) //300msһ + { + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //͹ظָ ͨ +#endif + } + } + else + { + if( CoverStatus == OPEN ) //VoxADTģʽCOM_CTRLʶ֡ + { + COM_CTRL = ON; + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ5+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif +#ifdef VOX_TX + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; +#ifdef VOX_TX + // HandleTxCommand(CMD_BES_HEARTBEAT,VOX_BOTH); //ָֶָͨη÷һΣã +#endif + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * --Header--cmd----len_h---len_l-----Data------CRC16 + * 4bytes 2byte 1byte 1byte Len bytes 1byte + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +uint8_t BES_ShutDown_State = 0; //ػ״̬0磻1ӵ͵ +uint8_t BES_Addr[2][6] = 0; //ַBES_Addr[0][6]BES_Addr[1][6]Ҷ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[14] = 0; + uint8_t i = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ͨ*/ + tx_pData[3] = nVox_Chn_Select; + /*ָ*/ + tx_pData[4] = TxCommand; + /*RW*/ + tx_pData[5] = 0x00; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + /*Data Length*/ + tx_pData[6] = 0x02; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_BOX_CLOSE: + + /*Data Length*/ + tx_pData[6] = 0x08; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + for(i=0 ;i<6;i++) + { + tx_pData[9] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case CMD_SHUT_DOWN: + + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + tx_pData[9] = BES_ShutDown_State; + + break; + + case CMD_BES_PAIRING: + + /*Data Length*/ + tx_pData[6] = 0x08; + for(i=0 ;i<6;i++) + { + tx_pData[7] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + tx_pData[13] = 0x03; //Ƿö + tx_pData[14] = 0x03; //ں͵ĸ + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_OTA: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; +#endif + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=3 ;i<(tx_pData[6] + 4);i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(tx_pData[6] + 6, tx_pData); +#endif +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header cmd Ack type len_h len_l Data CRC16 + * 4bytes 2byte 1byte 1byte 1byte Len bytes 1byte + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +uint8_t Vox_BatLevel[2] = 0; //Vox_BatLevel[0]:VOL;Vox_BatLevel[1]:VOR +uint8_t Vox_Pairing_State[2] = 0; //״̬0Ч1ԣ2Գɹ3ֵǰ״̬ +uint8_t Vox_Paired_State[2] = 0; //Լ¼1йԼ¼0û +uint8_t Bes_OTA_Ver[2] = 0; //OTA汾 + + +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + uint8_t j = 0; + switch(RxCommand) + { + case CMD_BOX_OPEN: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + + for(i=10 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-10] += RX0_Buffer[i]; //ȡַ + } + + Bes_OTA_Ver[VOL_CHAN] = RX0_Buffer[16]; //ȡOTA汾 + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + + for(i=10 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-10] += RX0_Buffer[i]; //ȡҶַ + } + + Bes_OTA_Ver[VOR_CHAN] = RX0_Buffer[16]; //ȡҶOTA汾 + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + for(i=7 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-7] += RX0_Buffer[i]; //ȡַ + } + + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[13]; //ȡ״̬ + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[14]; //ȡ + + } + else + { + for(i=7 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-7] += RX0_Buffer[i]; //ȡҶַ + } + + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[13]; //ȡҶ״̬ + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[14]; //ȡҶ + } + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; +#endif + default: + break; + } + return 1; +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ10msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if(Uart0_RX_Finish_Flag == 1) + { + Uart0_RX_Finish_Flag = 0; + + for(i=3 ;i<(RX0_Buffer[6] + 4);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[2] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[4]); + } + } +} + +#endif + + +#ifdef VOX_TX + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(3648).c b/TP3310_Demo.si4project/Backup/vox_module(3648).c new file mode 100644 index 0000000..748186b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(3648).c @@ -0,0 +1,385 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +} +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. +#define VOX_TX_CNT 100 //VOXָʱ䣨10s + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +#define BES_RST_PULS_CNT 50 +bit BES_Rst_Puls_Flag = 0; + +uint8_t WkUp_EarPhone_Debounce = 0; +#define EARPHONR_WKUP_CNT 5 + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_Full_Flag = 0; + +bit Vox_Vout_Enable = OFF; //Vox־λ + +void Vox_Det_Machine(void) +{ + if( CoverEvent_Flg ) //Hall¼ + { + DisCharge_Boost_Open(); //BoostVox 5vڷһιظָ֮10msʱ + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_Full_Flag = 0; + Vox_TX_Timer = 0; + + if( CoverStatus == CLOSE ) //1ظǿVOUTʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮俪VOUT + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + VOX_EN_Type(VOX_VOUT_Mode); + } + else //2Ǵ + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + WkUp_EarPhone_Debounce++; + } + else + { + DisCharge_Boost_Close(); + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_Full_Flag ) + { + /*300ms͹ظָ10s֮俪VOUT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % 3) == 0 ) //300msһ + { + if( EarPhone_Full_Flag ) + { + Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + } + else + if( CoverStatus == CLOSE ) + { + Vox_TX_Machine(CLOSE_COVER); //͹ظָ + } + else + if( CoverStatus == OPEN ) + { + Vox_TX_Machine(OPEN_COVER); //Ϳָ + } + } + else + { + COM_CTRL = ON; + } + Vox_TX_Timer++; + } + else //10s־λ + { + COM_CTRL = ON; + if(EarPhone_Full_Flag) + { + EarPhone_Full_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + DisCharge_Boost_Close(); + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( (CHIP_STA1 & 0xAC) == 0xAC ) //loadonioff״̬ͬʱڣ˵1س2ﮱ3ûSHUT_DOWNȴ²ζ + { + EarPhone_Full_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + + if( (!BES_Rst_Puls_Flag ) ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //10+5sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 22*5=110ms + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + } + } +} + + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + COM_CTRL = ON; + } + + BES_Puls_Cnt++; + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x0A; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + COM_CTRL = ON; + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + Uart0SendPacket(9, tx_pData); +} + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(3858).c b/TP3310_Demo.si4project/Backup/vox_module(3858).c new file mode 100644 index 0000000..b45426d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(3858).c @@ -0,0 +1,668 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_CNT 100 //ظ5s󣬶ַûʱ10sûûVox 5V硣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +bit BES_Rst_Puls_Flag = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0xff,0xff}; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1)) == 0 ) //300msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + + Vox_Pairing_State[VOL_CHAN] = 0xff; + Vox_Pairing_State[VOR_CHAN] = 0xff; + + //Box_To_Bes_Comm_Debounce += 1; + } + else + { + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_CNT) //ַûʱ10sرַûVOX 5V + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + Box_To_Bes_Comm_Debounce++; + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} + +uint8_t Crc8Maxim(u8 *buf, u8 length) +{ + u8 i; + u8 crc = 0; + while(length--) + { + crc ^= *buf++; + for(i=0;i<8;i++) + { + if( crc&1 ) + { + crc = (crc >> 1)^0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ +#ifdef QIANCHENG //ة + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + +#elif ZHONGKELANXUN //пѶ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ʶ*/ + tx_pData[2] = BESHEADER; + /*ͨ*/ + tx_pData[5] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case VHOUSE_CMD_GET_VBAT: + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[6] = (CHIP_STA4 & 0x80) | bat_level; //bit 0~6 ʾֵֵ 0~100bit 7 Ϊ 1 ʾڸֳ磬Ϊ 0 ʾûиֳ磻 + tx_pData[7] = 0x03; //ear_vbat:Զִȡõ bit7 1 ͸Ҷ + //ûлȡ֪ԶڲڶҪ bit7 1 + break; + + case VHOUSE_CMD_PAIR: + + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + +#endif + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼһֽûüȥ +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(4558).c b/TP3310_Demo.si4project/Backup/vox_module(4558).c new file mode 100644 index 0000000..cff7236 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(4558).c @@ -0,0 +1,508 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +bit Vol_Bat_Full_Flag = 0; +bit Vor_Bat_Full_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x10; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x20; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧֻloadon״̬˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x24) == 0x20 ) + { + Vol_Vout_Enable = ON; //־ON +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬1֣2س3ﮱ + { + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + VOL_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽֻLoadon״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = ON; //־ON +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( Vol_Bat_Full_Flag ) //ADTģʽ£ֻLoadon״̬˵ + { + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Bat Full\r\n"); +#endif + } + + } + else + if( !(CHIP_STA1 & 0x24) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vol_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = OFF; + + if( CHIP_STA1 & 0x20 ) //ADTģʽ³Loadonźţ˵ж֡ + { + Vol_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vol ÿ200msһ*/ + if( IRQ_FLAG0 & 0x04 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x04; + Vol_State = VOX_NONE_IN_BOX; + } + } + +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x88) == 0x80 ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + VOR_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻3ﮱ10ӡ + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Vout_Enable = ON; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( Vor_Bat_Full_Flag ) + { + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Bat Full\r\n"); +#endif + } + } + else + if( !(CHIP_STA1 & 0x88) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vor_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Loadon_Det_Debounce = 0; + Vor_Vout_Enable = OFF; + + /* Loadon״̬λڣ˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); //ڿBoost¸ڿVOUT(100msһ) + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vor (жϱ־λ)ÿ200msһ*/ + if( IRQ_FLAG0 & 0x08 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x08; + Vor_State = VOX_NONE_IN_BOX; + } + } + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(4667).h b/TP3310_Demo.si4project/Backup/vox_module(4667).h new file mode 100644 index 0000000..0635694 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(4667).h @@ -0,0 +1,182 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^2; +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#ifdef QIANCHENG //ة + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ +#elif ZHONGKELANXUN //пѶ + +#define BOXHEADER 0x55AA +#define BOXIDCODE 0xFF + +#endif + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +/*ͨѡ*/ +#ifdef QIANCHENG //ة + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; +#elif ZHONGKELANXUN //пѶ + typedef enum { + VOL_CHAN = 0, + VOR_CHAN = 0x11, + VOX_BOTH = 0x22, + }e_Vox_Chan; +#endif + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + /*ͳֽ˫ͨѶЭID*/ +#ifdef QIANCHENG //ة + + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; + +#elif ZHONGKELANXUN //пѶ + +typedef enum _VOX_BES_COMMAND_E +{ + VHOUSE_CMD_GET_VBAT = 0x01, //ȡصҲΪʼ־ + VHOUSE_CMD_PAIR, //ַϢ + VHOUSE_CMD_GET_TWS_BTADDR, //ȡԶַϢ + VHOUSE_CMD_CLEAR_PAIR, //Ϣ + VHOUSE_CMD_PWROFF, //ػϢ + VHOUSE_CMD_ERR, //Ϣ + VHOUSE_CMD_SUCCESS, //ɹӦ + VHOUSE_CMD_CLOSE_WINDOW, //ظ + VHOUSE_CMD_OPEN_WINDOW, // + VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //ظǻȡ + + VHOUSE_CMD_ENABLE_POPUP = 0x80, //صܿ + + VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //ͻָ + VHOUSE_CMD_CUSTOM_RESV_END = 0xEF, + + VHOUSE_CMD_SYS_RST = 0xFF, //ϵͳλָ + +}VOX_BES_COMMAND_E; + +#endif + +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(4918).h b/TP3310_Demo.si4project/Backup/vox_module(4918).h new file mode 100644 index 0000000..866b359 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(4918).h @@ -0,0 +1,113 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vox_Vout_Enable; + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#define HEADER 0x050A //VOXͨѶݰͷ + +sbit COM_CTRL = P0^7; + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + + typedef enum { + VOX_NONE = 0, + VOL_CHAN, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; + + + /*ͳֽ˫ͨѶЭID*/ + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + CMD_BES_CLEAN = 0x05, //˫¼ + CMD_BES_HEARTBEAT = 0x07, // + CMD_OTA = 0x09, + + }VOX_BES_COMMAND_E; + +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + +extern bit BES_Puls_Start; + +extern uint16_t Boost_Open_Atleast_10min_Cnt; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void BES_Reset_Puls(void); +extern void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID); +extern void Vox_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(5019).c b/TP3310_Demo.si4project/Backup/vox_module(5019).c new file mode 100644 index 0000000..c2727c8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(5019).c @@ -0,0 +1,561 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit gVor_Take_Out_Flag = 0; //ּ־λ + + + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +bit Vol_Bat_Full_Flag = 0; +bit Vor_Bat_Full_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V + + SFRADDR = VOX_CON0; + SFRDATA = 0x1A; + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x11; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x22; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧֻloadon״̬˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x24) == 0x20 ) + { + Vol_Vout_Enable = ON; //־ON + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬1֣2س3ﮱ + { + // gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + // gVol_Take_Out_Flag = 0; + Vol_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + VOL_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽֻLoadon״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif +#if 0 + if( gVol_Take_Out_Flag ) //ٴ֣ﮱ10δﮱ硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol In Agn\r\n"); +#endif + } +#endif + if( Vol_Bat_Full_Flag ) //ADTģʽ£ֻLoadon״̬˵ + { + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Bat Full\r\n"); +#endif + } + + } + else + if( !(CHIP_STA1 & 0x24) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vol_State = VOX_GET_OUTPUT_BOX; + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Vout_Enable = OFF; + + // if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("VOL_OUTPUT_BOX\r\n"); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + if( (VOX_CTL0 & 0x01) != 0x01 ) + { + VOL_EN_Type(VOX_ADT_Mode); + } + + Vol_Loadon_Det_Debounce = 0; + + if( CHIP_STA1 & 0x20 ) //ADTģʽ³Loadonźţ˵ж֡ + { + Vol_State = VOX_GET_INTO_BOX; +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); + +#endif +#endif +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else + { + Vol_State = VOX_NONE_IN_BOX; + } + +#if 1 + /*Vol ÿ200msһ*/ + if( CHIP_STA1 & 0x01 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + Vol_State = VOX_NONE_IN_BOX; + } + } +#endif +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x88) == 0x80 ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + gVor_Take_Out_Flag = 0; + Vor_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + VOR_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻3ﮱ10ӡ + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor In Agin\r\n"); +#endif + } + + if( Vor_Bat_Full_Flag ) + { + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Bat Full\r\n"); +#endif + } + } + else + if( !(CHIP_STA1 & 0x88) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vor_State = VOX_GET_OUTPUT_BOX; + } + + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOR_EN_Type(VOX_ADT_Mode); + Vor_Vout_Enable = OFF; + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("VOR_OUTPUT_BOX\r\n"); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + if( (VOX_CTL0 & 0x02) != 0x02 ) + { + VOR_EN_Type(VOX_ADT_Mode); + } + + Vor_Loadon_Det_Debounce = 0; + + /* Loadon״̬λڣ˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); //ڿBoost¸ڿVOUT(100msһ) + +#endif +#endif +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + +#if 1 +/*Vor ÿ200msһ*/ + if( CHIP_STA1 & 0x02 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + Vor_State = VOX_NONE_IN_BOX; + } + } +#endif + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(5070).c b/TP3310_Demo.si4project/Backup/vox_module(5070).c new file mode 100644 index 0000000..bfc2da8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(5070).c @@ -0,0 +1,424 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 100 //VOXָʱ䣨10s +#define EARPHONR_WKUP_CNT 5 +#define BES_RST_PULS_CNT 50 +#define Vox_TX_Interval 3 //Voxʱָʱ +#define T10MIN_DEBOUNCE 600 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_10min_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + if( CoverStatus == CLOSE ) //1ظǿVOUTʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮俪VOUT + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_10min_Cnt = 0; + VOX_EN_Type(VOX_VOUT_Mode); + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + WkUp_EarPhone_Debounce++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ10sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //300msһ + { + if( EarPhone_ShutDown_Flag ) + { + #ifdef VOX_TX + Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + #endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { + #ifdef VOX_TX + Vox_TX_Machine(CLOSE_COVER); //͹ظָ + #endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { + #ifdef VOX_TX + Vox_TX_Machine(OPEN_COVER); //Ϳָ + #endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + else + { + COM_CTRL = ON; + } + + Vox_TX_Timer++; + } + else //10s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_10min_Cnt >= T10MIN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ10+5sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif + #ifdef VOX_TX + Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 23*5=115ms + #endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + + COM_CTRL = ON; + } + } +} +#ifdef VOX_TX + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[9] = 0; + uint8_t i = 0; + + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(9, tx_pData); +#endif +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(6003).c b/TP3310_Demo.si4project/Backup/vox_module(6003).c new file mode 100644 index 0000000..fad2b5b --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(6003).c @@ -0,0 +1,667 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_CNT 100 //ظ5s󣬶ַûʱ10sûûVox 5V硣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +bit BES_Rst_Puls_Flag = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0xff,0xff}; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1)) == 0 ) //300msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + + Vox_Pairing_State[VOL_CHAN] = 0xff; + Vox_Pairing_State[VOR_CHAN] = 0xff; + + //Box_To_Bes_Comm_Debounce += 1; + } + else + { + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_CNT) //ַûʱ10sرַûVOX 5V + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + Box_To_Bes_Comm_Debounce++; + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} + +uint8_t Crc8Maxim(u8 *buf, u8 length) +{ + u8 i; + u8 crc = 0; + while(length--) + { + crc ^= *buf++; + for(i=0;i<8;i++) + { + if( crc&1 ) + { + crc = (crc >> 1)^0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ +#ifdef QIANCHENG //ة + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + +#elif ZHONGKELANXUN //пѶ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ʶ*/ + tx_pData[2] = BOXIDCODE; + /*ͨ*/ + tx_pData[5] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case VHOUSE_CMD_GET_VBAT: + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[6] = (CHIP_STA4 & 0x80) | bat_level; //bit 0~6 ʾֵֵ 0~100bit 7 Ϊ 1 ʾڸֳ磬Ϊ 0 ʾûиֳ磻 + tx_pData[7] = 0x03; //ear_vbat:Զִȡõ bit7 1 ͸Ҷ + //ûлȡ֪ԶڲڶҪ bit7 1 + break; + + case VHOUSE_CMD_PAIR: //ְ3sַָ + /*Data Length*/ + tx_pData[4] = 0x01; + break; + + case VHOUSE_CMD_GET_TWS_BTADDR: + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + +#endif + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼһֽûüȥ +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(6129).c b/TP3310_Demo.si4project/Backup/vox_module(6129).c new file mode 100644 index 0000000..54fcdd8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(6129).c @@ -0,0 +1,617 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit gVor_Take_Out_Flag = 0; //ּ־λ + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +//uint8_t Hall_Open_Debounce = 0; + +//#define VOX_OUT_DET_DEBOUNCE 40 + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ +#if 0 + SFRADDR = VOX_CON1; + SFRDATA &= ~0x07; + SFRDATA |= 0x07; //VOX ã200mA ,VOX ؼ5mA + + + SFRADDR = VOX_CON0; + SFRDATA &= ~0x03; + SFRDATA |= 0x03; +#endif + + VOX_CTL0 |= 0x0F; //VOX ؽ롢ʶʹܣԶʶ + + VOX_CTL0 &= ~0x30; //5v Discharge Off + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x10; //VOL Disable 5V Charge + + VOX_CTL0 |= 0x10; //VOL Enable 5V Charge + + // VOX_CTL0 &= ~0x05; //ADTL Disable,VOL_PU Disable + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + VOX_CTL0 &= ~((0x01<<2)|(0x01<<4)); //VOL Pull Up,5v Discharge Off +#ifndef BOOST_AOUT + DisCharge_Boost_Close(); +#endif + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x20; //VOR Disable 5V Charge + + VOX_CTL0 |= 0x20; //VOR Enable 5V Charge + + // VOX_CTL0 &= ~0x0A; //ADTR Disable,VOR_PU Disable + + break; + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x02; //VOR load detect On + + VOX_CTL0 &= ~((0x01<<3)|(0x01<<5)); //VOR Pull Up,5v Discharge Off +#ifndef BOOST_AOUT + DisCharge_Boost_Close(); +#endif + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vol_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; + +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch(Vol_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type & 0x07) != 0x02 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧ˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x04) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vol_Vout_Enable = ON; //־ON + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + { + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س +#ifdef _DEBUG_VOX + printf("Vol Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + Vol_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vol_Vout_Enable = OFF; + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vol Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( gVol_Take_Out_Flag ) //ٴ֣硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; + Vol_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vol Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x24) == 0x04 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vol_State = VOX_GET_OUTPUT_BOX; + Vol_Vout_Enable = OFF; + gVol_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_R_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vol Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOL_EN_Type(VOX_ADT_Mode); + + if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vol Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + + if( CHIP_STA1 & 0x20 ) + { + Vol_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vol VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; + +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch(Vor_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type & 0x70) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x08) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س +#ifdef _DEBUG_VOX + printf("Vor Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + Vor_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vor_Vout_Enable = OFF; + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vor Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; + Vor_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vor Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x88) == 0x08 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vor_State = VOX_GET_OUTPUT_BOX; + Vor_Vout_Enable = OFF; + gVor_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_G_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOR_EN_Type(VOX_ADT_Mode); + + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vor Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Loadon_Det_Debounce = 0; + + /* Loadon״̬λڡ־1˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vor VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } + } +} +#if 0 +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vox_Det_Machine(void) +{ + if( CoverStatus == OPEN ) //ǺʱһʱرVOX磬رBoost + { + Hall_Open_Debounce++; + if( Hall_Open_Debounce >= VOX_OUT_DET_DEBOUNCE ) //ʱ4sرVOXرBoost + { + VOX_CTL0 &= ~0x30; //VOX Disable 5V Charge + DisCharge_Boost_Close(); + } + + /* LoadonIOFF˵ѳ֡ VOXתADTģʽ*/ + if( (CHIP_STA1 & 0x08) == 0x08 ) //VOR + { + VOR_EN_Type(VOX_ADT_Mode); + } + + if( (CHIP_STA1 & 0x04) == 0x04 ) //VOL + { + VOL_EN_Type(VOX_ADT_Mode); + } + } + else + if( CoverStatus == CLOSE ) //ظǺڲִBoostVOX硣 + { + /* Loadon˵ڲ֣VOXתVOUT*/ + if( (CHIP_STA1 & 0x80) == 0x80 ) //VOR + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + if( (CHIP_STA1 & 0x20) == 0x20 ) //VOL + { + VOL_EN_Type(VOX_VOUT_Mode); + } + } +} +#endif +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; + + if(IRQ3_Flag & 0x3C) //vox loadon interrupt flag + { + gIrq_Event_Type |= VOX_LOADON_IRQ_EVENT; + } + + if(IRQ4_Flag & 0xF0) //VOx IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOX_IOFF_IRQ_EVENT; + } + +#if SLEEP_ENABLE + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(6157).c b/TP3310_Demo.si4project/Backup/vox_module(6157).c new file mode 100644 index 0000000..c8f73b5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(6157).c @@ -0,0 +1,570 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +idata uint8_t Vox_Pairing_State[2] = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1)) == 0 ) //300msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + Box_To_Bes_Comm_Debounce += 1; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(6227).c b/TP3310_Demo.si4project/Backup/vox_module(6227).c new file mode 100644 index 0000000..f308bf2 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(6227).c @@ -0,0 +1,696 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 50 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 50 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define T10MIN_DEBOUNCE 600 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_10min_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_10min_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + WkUp_EarPhone_Debounce++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ5sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { + #ifdef VOX_TX + Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + #endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { + #ifdef VOX_TX + Vox_TX_Machine(CLOSE_COVER); //͹ظָ + #endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { + #ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ + #endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + + Vox_TX_Timer++; + COM_CTRL = OFF; + } + else //5s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_10min_Cnt >= T10MIN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ10+5sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif + #ifdef VOX_TX + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; + Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 23*5=115ms + #endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + #ifdef VOX_TX + HandleTxCommand(CMD_BES_HEARTBEAT,VOX_BOTH); //ָֶָͨη÷һΣã + #endif + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * --Header--cmd----len_h---len_l-----Data------CRC16 + * 4bytes 2byte 1byte 1byte Len bytes 1byte + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +uint8_t BES_ShutDown_State = 0; //ػ״̬0磻1ӵ͵ +uint8_t BES_Addr[2][6] = 0; //ַBES_Addr[0][6]BES_Addr[1][6]Ҷ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[14] = 0; + uint8_t i = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ͨ*/ + tx_pData[3] = nVox_Chn_Select; + /*ָ*/ + tx_pData[4] = TxCommand; + /*RW*/ + tx_pData[5] = 0x00; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + /*Data Length*/ + tx_pData[6] = 0x02; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_BOX_CLOSE: + + /*Data Length*/ + tx_pData[6] = 0x08; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + for(i=0 ;i<6;i++) + { + tx_pData[9] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case CMD_SHUT_DOWN: + + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + tx_pData[9] = BES_ShutDown_State; + + break; + + case CMD_BES_PAIRING: + + /*Data Length*/ + tx_pData[6] = 0x08; + for(i=0 ;i<6;i++) + { + tx_pData[7] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + tx_pData[13] = 0x03; //Ƿö + tx_pData[14] = 0x03; //ں͵ĸ + + break; + + case CMD_BES_CLEAN: + + break; + + case CMD_BES_HEARTBEAT: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_OTA: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + default: + break; + } + + for(i=3 ;i<(tx_pData[6] + 4);i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(tx_pData[6] + 6, tx_pData); +#endif +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header cmd Ack type len_h len_l Data CRC16 + * 4bytes 2byte 1byte 1byte 1byte Len bytes 1byte + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +uint8_t Vox_BatLevel[2] = 0; //Vox_BatLevel[0]:VOL;Vox_BatLevel[1]:VOR +uint8_t Vox_Pairing_State[2] = 0; //״̬0Ч1ԣ2Գɹ3ֵǰ״̬ +uint8_t Vox_Paired_State[2] = 0; //Լ¼1йԼ¼0û +uint8_t Bes_OTA_Ver[2] = 0; //OTA汾 + + +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + uint8_t j = 0; + switch(RxCommand) + { + case CMD_BOX_OPEN: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + + for(i=10 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-10] += RX0_Buffer[i]; //ȡַ + } + + Bes_OTA_Ver[VOL_CHAN] = RX0_Buffer[16]; //ȡOTA汾 + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + + for(i=10 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-10] += RX0_Buffer[i]; //ȡҶַ + } + + Bes_OTA_Ver[VOR_CHAN] = RX0_Buffer[16]; //ȡҶOTA汾 + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + for(i=7 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-7] += RX0_Buffer[i]; //ȡַ + } + + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[13]; //ȡ״̬ + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[14]; //ȡ + + } + else + { + for(i=7 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-7] += RX0_Buffer[i]; //ȡҶַ + } + + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[13]; //ȡҶ״̬ + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[14]; //ȡҶ + } + + break; + + case CMD_BES_CLEAN: + + break; + + case CMD_BES_HEARTBEAT: + + if( RX0_Buffer[3] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; + default: + break; + } + return 1; +} + +#endif + + +#ifdef VOX_TX + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[9] = 0; + uint8_t i = 0; + + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(9, tx_pData); +#endif +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(6283).c b/TP3310_Demo.si4project/Backup/vox_module(6283).c new file mode 100644 index 0000000..e5c41ab --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(6283).c @@ -0,0 +1,1160 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_TIMOUT 30 //ظ5s󣬶ַû3sطһΡֱ10κʱ +#define BES_ADDR_EXCHG_CNT 5 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit BES_Rst_Puls_Flag = 0; +bit BES_Addr_Exchg_Flag = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +uint8_t Box_To_Bes_Comm_Cnt = 0; + +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0}; //״̬0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = {0}; +idata uint8_t BES_Addr[6] = {0}; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#if defined(XIAOMI) + +idata uint8_t Random_Data[8] = {0}; + +idata uint8_t Bes_Bet_Level[2] = {0}; //ԶصϢBes_Bet_Level[0]Bes_Bet_Level[1]Ҷ +idata uint8_t Bes_Chg_Full[2] = {0}; //ԶӲǷ磺0磻1硣 +idata uint8_t Tws_Paired_Record[2] = {0}; //TWSԼ¼0TWSԼ¼1ûTWSԼ¼ +idata uint8_t Phone_Paired_Record[2] = {0}; //ֻԼ¼0ֻԼ¼1ûкֻԼ¼ +idata uint8_t Bes_OTA_State[2] = {0}; //Ĭ״̬1У0û +idata uint8_t Bes_Set_SN_State[2] = {0}; //ӦдSNǷɹ1ɹ0ʧ + +idata uint8_t SN_Num[22] = {0}; //SN룬ҪOTPĹ̶λûȡ +uint8_t SN_Num_Start = 0; //SN뷢ʼλãпǶʱ㡣 +bit gShip_Mode_Flag = 0; //ģʽ־λ0ػ1ģʽ + +#define COVER_OPEN_CNT 600 //1 + +uint16_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. +#define VOX_TX_CNT 50 //VOXָʱ5s + +#elif defined(QIANCHENG) + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +#define COVER_OPEN_CNT 0xff +#define VOX_TX_CNT 30 //VOXָʱ3s + +#endif + + +#endif + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + + #if 1 + if( VOX_Enable_Mode == VOX_VOUT_Mode) + { + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + } + else + { + VOX_CTL0 &= ~0x30; //VOX 5v Off + } + + #else + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + // VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } + #endif +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + Vox_Pairing_State[VOL_CHAN] = 0; + Vox_Pairing_State[VOR_CHAN] = 0; + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + COM_CTRL = OFF; + //VOX_EN_Type(VOX_VOUT_Mode); + VOX_CTL0 |= 0x30; //VOX Enable 5VVOX˵NMOS + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + BES_Addr_Exchg_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( Vox_TX_Timer < COVER_OPEN_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); +#endif + +#endif + } + else + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //ָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); +#endif + +#endif + } + + Vox_TX_Timer++; + } +#ifdef XIAOMI + else + { + VOX_EN_Type(VOX_VOUT_Mode); + } +#endif + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { +#if 0 + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + +#else + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //ظָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); +#endif + +#endif + } + } + else + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //ָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); +#endif + +#endif + } + + } +#endif + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + BES_Addr_Exchg_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + Box_To_Bes_Comm_Cnt = 0; + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + // if( BES_Addr_Exchg_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + if( BES_Addr_Exchg_Flag ) + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + } + else + { + if(Box_To_Bes_Comm_Cnt > BES_ADDR_EXCHG_CNT) //ַûʱ20sرַûVOX 5V + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_TIMOUT) //3sطһΡط5κʱ + { + Box_To_Bes_Comm_Cnt++; + Box_To_Bes_Comm_Debounce = 0; + } + else + { + Box_To_Bes_Comm_Debounce++; + } + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} +#if defined(ZHONGKELANXUN) + +uint8_t Crc8Maxim(u8 *buf, u8 length) +{ + u8 i; + u8 crc = 0; + while(length--) + { + crc ^= *buf++; + for(i=0;i<8;i++) + { + if( crc&1 ) + { + crc = (crc >> 1)^0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; +} + +#elif defined(XIAOMI) + + /******************************************************************************\ + Functions definitions + \******************************************************************************/ + + /* + ******************************************************************************* + * u16 CalCheckCrc16(u8 * pucFrame, u16 usLen) + * + * Description : У͵ļ + * + * + * Arguments : u8 *pucFrame: ݴŵַ + u16 usLen: ݳ, byteΪλ + + * Returns : + * + * Notes : + * + ******************************************************************************* + */ + + uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen) +{ + uint16_t wCRCin = 0x0000; + uint16_t wCPoly = 0x1021; + uint8_t wChar = 0; + unsigned int i; + + while (usLen--) + { + + wChar = *(pucFrame++); + + wCRCin ^= (wChar << 8); + + for(i = 0;i < 8;i++) + { + if(wCRCin & 0x8000) + { + wCRCin = (wCRCin << 1) ^ wCPoly; + } + else + { + wCRCin = wCRCin << 1; + } + } + } + + return (wCRCin); +} +#endif + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ +#if defined(QIANCHENG) //ة + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[i]; //Ͷַ + } + + break; + + case BES_RESET: //BES λpatten + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function + SFRDATA &= ~0x0C; + + for(i=0;i<6;i++) + { + BES_Addr[i] = 0; //屾ضַ + } + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼһֽûüȥ +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +#elif defined(ZHONGKELANXUN) //пѶ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ʶ*/ + tx_pData[2] = BOXIDCODE; + /*ͨ*/ + tx_pData[5] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case VHOUSE_CMD_GET_VBAT: + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[6] = (CHIP_STA4 & 0x80) | bat_level; //bit 0~6 ʾֵֵ 0~100bit 7 Ϊ 1 ʾڸֳ磬Ϊ 0 ʾûиֳ磻 + tx_pData[7] = 0x03; //ear_vbat:Զִȡõ bit7 1 ͸Ҷ + //ûлȡ֪ԶڲڶҪ bit7 1 + break; + + case VHOUSE_CMD_PAIR: //ְ3sַָ + /*Data Length*/ + tx_pData[4] = 0x01; + break; + + case VHOUSE_CMD_GET_TWS_BTADDR: + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + +#elif defined(XIAOMI) //С + /* + + */ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + uint16_t Checksum = 0; + uint16_t DataLen = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + + tx_pData[1] = nVox_Chn_Select; /*䷽Bit0-3նˣBit4-7Ͷ + 1˫ + 2 + 3PC/װ + 4 + 5Ҷ + */ + /*ָ*/ + tx_pData[2] = TxCommand; + tx_pData[3] = TxCommand >> 8; /*Сģʽֽǰ + Bit0-7 + Bit8-14Ԥ + Bit15: + 0:REQ + 1:ACK + */ + tx_pData[4] = CoverStatus; //غ״̬ + + switch(TxCommand) + { + case CMD_TWS_PAIR: //ȡMACַ + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + break; + + case CMD_TWS_BTADDR_EXCH: + /*Data Length*/ + tx_pData[5] = 0x0E; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + for(i=0;i<6;i++) + { + tx_pData[7+i] = BES_Addr[i]; //Ͷַ + } + + for(i=0;i<8;i++) + { + tx_pData[13+i] = Random_Data[i]; // + } + + break; + + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = gShip_Mode_Flag; //ģʽ0ػ1ģʽ + + break; + + case CMD_PAIRING_IMD: //ִTWS + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + break; + + case CMD_CLEAR_PAIR: + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + break; + + case CMD_HEARTBEAT: + /*Data Length*/ + tx_pData[5] = 0x05; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + /* + data壺 + 1D0D12Bytesɳеİ汾ϢD0ĸ4bitΪӲPCBA汾ţD04bitD1ɳ汾š + 2D21Byteɳеͳ״̬D2bit7ΪǷPG룻D2ĵ7λʾеϢΧ0-100; + 3D31ByteɶԶϢЭеSideϢҶϢ + 4D41ByteĬĬϷ0x00 + */ + tx_pData[7] = HW_VER << 4; + tx_pData[7] = FW_VER >> 8; + tx_pData[8] = FW_VER; + + tx_pData[9] = (CHIP_STA4 & 0x80) | bat_level; + + if(nVox_Chn_Select == VOL_CHAN) + { + tx_pData[10] = Bes_Bet_Level[0]; + } + else + if(nVox_Chn_Select == VOR_CHAN) + { + tx_pData[10] = Bes_Bet_Level[1]; + } + + tx_pData[11] = 0x00; + break; + + case CMD_SN: //SNϳֶηͣD0ʾڼλʼͣһι̶9BytesһSNݲ9BytesIJ00xff + /*Data Length*/ + tx_pData[5] = 0x0A; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = SN_Num_Start; + + for(i=0;i<9;i++) + { + if( (SN_Num_Start + i) > 22 ) + { + tx_pData[8+i] = 0xFF; + } + else + { + tx_pData[8+i] = SN_Num[ SN_Num_Start + i ]; // + } + } + + SN_Num_Start += 9; + + break; + + case CMD_GET_INTO_PAIR: + /*Data Length*/ + tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = 0x01; //01״̬ + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + DataLen = tx_pData[5] | (tx_pData[6] << 8) + 7; + Checksum = CalCheckCrc16( tx_pData, DataLen ); // + tx_pData[1 + DataLen] = Checksum; + tx_pData[2 + DataLen] = Checksum >> 8; + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(10 + DataLen, tx_pData); +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +#endif + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(VOX_BES_COMMAND_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : VOX_BES_COMMAND_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + +#if defined(QIANCHENG) //ة + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡַ״̬ + } + else + { + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶַ״̬ + } + + for(i=0;i<6;i++) + { + BES_Addr[i] = RX0_Buffer[i+5]; //ȡַ + } + + break; + + default: + break; + } + +#elif defined(XIAOMI) //С + + uint8_t CMD_Type = 0; + + CMD_Type = RX0_Buffer[1] >> 4; + if( CMD_Type & TWS_PC ) //PC/װ-> + { + + } + else //-> + { + switch(RxCommand) + { + case CMD_TWS_PAIR: + + for(i=0;i> 7; //ȡǷ + Vox_Pairing_State[0] = RX0_Buffer[10]; //ȡ״̬ + Tws_Paired_Record[0] = RX0_Buffer[11] & 0x01; //bit0:0TWSԼ¼1ûTWSԼ¼bit1:0ֻԼ¼1ûкֻԼ¼ + Phone_Paired_Record[0] = (RX0_Buffer[11] >> 1) & 0x01; + Bes_OTA_State[0] = RX0_Buffer[12]; + } + else + { + Bes_Bet_Level[1] = RX0_Buffer[9]&0x7F; + Bes_Chg_Full[1] = RX0_Buffer[9] >> 7; + Vox_Pairing_State[1] = RX0_Buffer[10]; + Tws_Paired_Record[1] = RX0_Buffer[11] & 0x01; + Phone_Paired_Record[1] = (RX0_Buffer[11] >> 1) & 0x01; + Bes_OTA_State[1] = RX0_Buffer[12]; + } + + break; + + case CMD_SN: + + if( CMD_Type == TWS_VOL ) //ݶSide + { + Bes_Set_SN_State[0] = RX0_Buffer[7]; //SNдǷɹ״̬־ + } + else + { + Bes_Set_SN_State[1] = RX0_Buffer[7]; //ҶSNдǷɹ״̬־ + } + + break; + + case CMD_GET_INTO_PAIR: + + break; + case CMD_PAIRING_IMD: + + break; + default: + break; + } + } + + +#endif + +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + +#if defined(QIANCHENG) //ة + + uint8_t CrcCheckSum = 0; + +#elif defined(ZHONGKELANXUN) //пѶ + + uint8_t CrcCheckSum = 0; + +#elif defined(XIAOMI) + + uint16_t CrcCheckSum = 0; + uint16_t Data_Len = 0; + +#endif + + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + +#if defined(QIANCHENG) //ة + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + +#elif defined(XIAOMI) //С + Data_Len = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 7; + + CrcCheckSum = CalCheckCrc16( RX0_Buffer, Data_Len); // + + if( CrcCheckSum == (uint16_t)(RX0_Buffer[Data_Len+1] | RX0_Buffer[Data_Len+2] << 8) ) //УСģʽλǰ + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[2]); + } + else + { + return; + } + +#endif + + } + +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(6580).h b/TP3310_Demo.si4project/Backup/vox_module(6580).h new file mode 100644 index 0000000..07adeef --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(6580).h @@ -0,0 +1,138 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^2; +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#define HEADER 0x050A //VOXͨѶݰͷ + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ +/*ͨѡ*/ + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + /*ͳֽ˫ͨѶЭID*/ + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(680).c b/TP3310_Demo.si4project/Backup/vox_module(680).c new file mode 100644 index 0000000..dbf45b8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(680).c @@ -0,0 +1,581 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 5 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit gVor_Take_Out_Flag = 0; //ּ־λ + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V + + SFRADDR = VOX_CON0; + SFRDATA = 0x1A; + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x11; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x22; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +// uint8_t Vox_Mode_Type = 0; + +// SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ +// Vox_Mode_Type = SFRDATA; + +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + // if( (Vox_Mode_Type & 0x07) != 0x02 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧ˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( !(CHIP_STA1 & 0x04) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vol_Vout_Enable = ON; //־ON + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_State = VOX_GET_OUTPUT_BOX; + //Vol_Vout_Enable = OFF; + gVol_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_R_FLASH(200,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + Vol_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + //Vol_Vout_Enable = OFF; + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( gVol_Take_Out_Flag ) //ٴ֣硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; + Vol_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vol In Agn\r\n"); +#endif + } + } + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Vout_Enable = OFF; + //Vol_LiPro_Flag = 0; + // if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("VOL_OUTPUT_BOX\r\n"); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + // if( (Vox_Mode_Type & 0x07) != 0x01 ) + { + VOL_EN_Type(VOX_ADT_Mode); + } + + Vol_Loadon_Det_Debounce = 0; + + if( CHIP_STA1 & 0x20 ) + { + Vol_State = VOX_GET_INTO_BOX; + +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + +#if 1 + /*Vol ÿ300msһ*/ + if( CHIP_STA1 & 0x01 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 3 ) //Vor·100ms¿ADT + { + Vol_Output_Short_Debounce = 0; + Vol_State = VOX_NONE_IN_BOX; + } + } +#endif +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +// uint8_t Vox_Mode_Type = 0; + +// SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ +// Vox_Mode_Type = SFRDATA; + +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + // if( (Vox_Mode_Type & 0x70) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( !(CHIP_STA1 & 0x08) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_State = VOX_GET_OUTPUT_BOX; + //Vor_Vout_Enable = OFF; + gVor_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_G_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + Vor_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + //Vor_Vout_Enable = OFF; + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; + Vor_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vor In Agin\r\n"); +#endif + } + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOR_EN_Type(VOX_ADT_Mode); + Vor_Vout_Enable = OFF; + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("VOR_OUTPUT_BOX\r\n"); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + // if( (Vox_Mode_Type & 0x70) != 0x10 ) + { + VOR_EN_Type(VOX_ADT_Mode); + } + + Vor_Loadon_Det_Debounce = 0; + + /* Loadon״̬λڡ־1˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + +#if 1 +/*Vor ÿ200msһ*/ + if( CHIP_STA1 & 0x02 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·100ms¿ADT + { + Vor_Output_Short_Debounce = 0; + Vor_State = VOX_NONE_IN_BOX; + } + } +#endif + +} + +#if 0 +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vox_Det_Machine(void) +{ + if( CoverStatus == OPEN ) //ǺʱһʱرVOX磬رBoost + { + Hall_Open_Debounce++; + if( Hall_Open_Debounce >= VOX_OUT_DET_DEBOUNCE ) //ʱ4sرVOXرBoost + { + VOX_CTL0 &= ~0x30; //VOX Disable 5V Charge + DisCharge_Boost_Close(); + } + + /* LoadonIOFF˵ѳ֡ VOXתADTģʽ*/ + if( (CHIP_STA1 & 0x08) == 0x08 ) //VOR + { + VOR_EN_Type(VOX_ADT_Mode); + } + + if( (CHIP_STA1 & 0x04) == 0x04 ) //VOL + { + VOL_EN_Type(VOX_ADT_Mode); + } + } + else + if( CoverStatus == CLOSE ) //ظǺڲִBoostVOX硣 + { + /* Loadon˵ڲ֣VOXתVOUT*/ + if( (CHIP_STA1 & 0x80) == 0x80 ) //VOR + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + if( (CHIP_STA1 & 0x20) == 0x20 ) //VOL + { + VOL_EN_Type(VOX_VOUT_Mode); + } + } +} +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(7250).c b/TP3310_Demo.si4project/Backup/vox_module(7250).c new file mode 100644 index 0000000..5179f4e --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(7250).c @@ -0,0 +1,817 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" + + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +#if 0 +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +bit Vol_Bat_Full_Flag = 0; +bit Vor_Bat_Full_Flag = 0; + +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ + #if 0 + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; + #endif +} +#if 0 + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x10; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x20; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧֻloadon״̬˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x24) == 0x20 ) + { + Vol_Vout_Enable = ON; //־ON +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬1֣2س3ﮱ + { + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + //LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + VOL_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽֻLoadon״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + //LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = ON; //־ON +#ifdef LED_DISPLAY + //LED_R_ON(); +#endif + if( Vol_Bat_Full_Flag ) //ADTģʽ£ֻLoadon״̬˵ + { + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Bat Full\r\n"); +#endif + } + + } + else + if( !(CHIP_STA1 & 0x24) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vol_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = OFF; + + if( CHIP_STA1 & 0x20 ) //ADTģʽ³Loadonźţ˵ж֡ + { + Vol_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vol ÿ200msһ*/ + if( IRQ_FLAG0 & 0x04 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x04; + Vol_State = VOX_NONE_IN_BOX; + } + } + +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x88) == 0x80 ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + //LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + VOR_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + //LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻3ﮱ10ӡ + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Vout_Enable = ON; +#ifdef LED_DISPLAY + //LED_G_ON(); +#endif + if( Vor_Bat_Full_Flag ) + { + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Bat Full\r\n"); +#endif + } + } + else + if( !(CHIP_STA1 & 0x88) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vor_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Loadon_Det_Debounce = 0; + Vor_Vout_Enable = OFF; + + /* Loadon״̬λڣ˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); //ڿBoost¸ڿVOUT(100msһ) + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vor (жϱ־λ)ÿ200msһ*/ + if( IRQ_FLAG0 & 0x08 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x08; + Vor_State = VOX_NONE_IN_BOX; + } + } + +} +#endif +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿVOUTʾЧ +2ǿVOUT500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ + +*/ +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. +#define VOX_TX_CNT 100 //VOXָʱ䣨10s + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +#define BES_RST_PULS_CNT 150 +bit BES_Rst_Puls_Flag = 0; + +uint8_t WkUp_EarPhone_Debounce = 0; +#define EARPHONR_WKUP_CNT 5 + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; + +void Vox_Det_Machine(void) +{ + if( CoverEvent_Flg ) //Hall¼ + { + if( CoverStatus == CLOSE ) //1ظǿVOUTʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮俪VOUT + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) + { + BES_Rst_Puls_Flag = 1; + Vox_TX_Machine(BES_RESET); //BES Reset壬ֻһΡ 22*5=110ms + CoverEvent_Flg = 0; + } + } + } + else //2Ǵ + { + Cover_Close_Flag = 0; + BES_Rst_Puls_Flag = 0; + + /*VOUT 500msڻѶ*/ + if(WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + WkUp_EarPhone_Debounce++; + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + } + + } + } + + if(Cover_Open_Flag || Cover_Close_Flag ) + { + /*300ms͹ظָ10s֮俪VOUT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % 3) == 0 ) //300msһ + { + if(BES_Rst_Puls_Flag) + { + if( (CHIP_STA1 & 0xAC) == 0xAC ) //loadonioff״̬ͬʱڣ˵1س2ﮱ3ûSHUT_DOWNȴ²ζ + { + Vox_TX_Machine(SHUT_DOWN); /*سִڵ͵磬ػָ*/ + } + } + else + if( CoverStatus == CLOSE ) + { + Vox_TX_Machine(CLOSE_COVER); //͹ظָ + + } + else + if( CoverStatus == OPEN ) + { + Vox_TX_Machine(OPEN_COVER); //Ϳָ + } + } + else + { + if( CoverStatus == CLOSE ) + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + Vox_TX_Timer++; + } + else //10s־λ + { + if(BES_Rst_Puls_Flag) + { + BES_Rst_Puls_Flag = 0; + } + else + if( CoverStatus == CLOSE ) + { + Cover_Close_Flag = 0; + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; + } + } + } +} + + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + COM_CTRL = ON; + } + + BES_Puls_Cnt++; + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t tx_pData[10] = 0; + uint8_t i = 0; + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x0A; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + COM_CTRL = ON; + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + Uart0SendPacket(9, tx_pData); +} + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(7332).c b/TP3310_Demo.si4project/Backup/vox_module(7332).c new file mode 100644 index 0000000..91c21ec --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(7332).c @@ -0,0 +1,648 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 50 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ +#if 1 + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } +#endif + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + // BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + // Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + //WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ5sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //͹ظָ ͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + #if 0 + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1) ) == 0 ) //300msһ + { + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //͹ظָ ͨ +#endif + } + } + + else + { + if( CoverStatus == OPEN ) //VoxADTģʽCOM_CTRLʶ֡ + { + COM_CTRL = ON; + } + } + #endif + + Vox_TX_Timer++; + } + else //5s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + //BES_Rst_Puls_Timer++; + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ5+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif +#ifdef VOX_TX + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; +#ifdef VOX_TX + // HandleTxCommand(CMD_BES_HEARTBEAT,VOX_BOTH); //ָֶָͨη÷һΣã +#endif + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * --Header--cmd----len_h---len_l-----Data------CRC16 + * 4bytes 2byte 1byte 1byte Len bytes 1byte + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +idata uint8_t BES_ShutDown_State = 0; //ػ״̬0磻1ӵ͵ +//idata uint8_t BES_Addr[2][6] = 0; //ַBES_Addr[0][6]BES_Addr[1][6]Ҷ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[8] = 0; + uint8_t i = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_SHUT_DOWN: + + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + tx_pData[7] = BES_ShutDown_State; + + break; + + case CMD_BES_PAIRING: + + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = 0x03; //Ƿö + tx_pData[6] = 0x03; //ں͵ĸ + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_OTA: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; +#endif + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=2 ;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header cmd Ack type len_h len_l Data CRC16 + * 4bytes 2byte 1byte 1byte 1byte Len bytes 1byte + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +//idata uint8_t Vox_BatLevel[2] = 0; //Vox_BatLevel[0]:VOL;Vox_BatLevel[1]:VOR +idata uint8_t Vox_Pairing_State[2] = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Paired_State[2] = 0; //Լ¼VOL:4bitVOR:4bit1йԼ¼0û + + +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + #if 1 + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[0] = RX0_Buffer[6]; //ȡ״̬ + Vox_Paired_State[0] = RX0_Buffer[7]; //ȡԼ¼ + } + else + { + Vox_Pairing_State[1] = RX0_Buffer[6]; //ȡҶ״̬ + Vox_Paired_State[1] = RX0_Buffer[7]; //ȡҶԼ¼ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[0] = RX0_Buffer[5]; //ȡ״̬ + + } + else + { + Vox_Pairing_State[1] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; +#endif + default: + break; + } + #endif + return 1; +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +uint8_t Box_To_Bes_Comm_Debounce = 0; +//uint16_t Bes_Pairing_Debounce = 0; + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if(Uart0_RX_Finish_Flag == 1) + { + Uart0_RX_Finish_Flag = 0; + + for(i=3 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +#if 1 + + if(IRQ_FLAG7 & 0x20) //ǣжڲ̡֣ + { + if( (CoverStatus == OPEN) && ( CHIP_STA1 & 0xA0 ) ) //1ǣ2жںС + { + if(Box_To_Bes_Comm_Debounce < 1) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_CLEAN,VOX_BOTH); /*ԣ˫ַָ*/ +#endif + } + else + if(Box_To_Bes_Comm_Debounce < 2) //ֻһڲ֣β + { + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ԣָ*/ + Vox_Pairing_State[VOL_CHAN] = 0x00; + // BES_Addr[VOL_CHAN][6] = 0x00; +#endif + } + else + { + if( (Vox_Pairing_State[VOL_CHAN] > VOX_PAIR_ING) && (Vox_Pairing_State[VOR_CHAN] > VOX_PAIR_ING) ) //˫Գɹ򲻴浱ǰ״̬ + { + IRQ_FLAG7 = 0x20; + // Bes_Pairing_Debounce = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + /*todo ԳɹЧ*/ + + } + else + if( Vox_Pairing_State[VOL_CHAN] != 0x00 ) //յظָ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ԣҶָ*/ + Vox_Pairing_State[VOL_CHAN] = 0x00; + // BES_Addr[VOR_CHAN][6] = 0x00; + Box_To_Bes_Comm_Debounce = 0; /*ظָ*/ +#endif + } + else + if(Vox_Pairing_State[VOL_CHAN] == 0x00 || Vox_Pairing_State[VOR_CHAN] == 0x00) + { + IRQ_FLAG7 = 0x20; + /*ʾֹԵЧ*/ + LED_R_FLASH(20,6); //5Hz˸6 + Display_Sta=DISPLAY_FLASH; + return; + + } + } + + // if(Bes_Pairing_Debounce > 600) //10ӳʱ + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) + { + IRQ_FLAG7 = 0x20; + //Bes_Pairing_Debounce = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + LED_R_FLASH(20,10); //5Hz˸10 + Display_Sta=DISPLAY_FLASH; + } + + Box_To_Bes_Comm_Debounce++; + // Bes_Pairing_Debounce++; + } + else + { + IRQ_FLAG7 = 0x20; + } + } +#endif +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(7467).h b/TP3310_Demo.si4project/Backup/vox_module(7467).h new file mode 100644 index 0000000..d2ddd32 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(7467).h @@ -0,0 +1,73 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +extern bit Vol_LiPro_Flag; +extern bit Vor_LiPro_Flag; + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +typedef enum { + + VOX_GET_INTO_BOX = 0, // + VOX_STAY_IN_BOX, //ڲ + VOX_GET_OUTPUT_BOX, // + VOX_NONE_IN_BOX, //ղ + +}Vox_State_e; + +extern Vox_State_e Vol_State; +extern Vox_State_e Vor_State; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + + extern void Vox_init(void); + + extern void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + extern void VOR_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + + extern void Vol_Det_Machine(void); + extern void Vor_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(7651).h b/TP3310_Demo.si4project/Backup/vox_module(7651).h new file mode 100644 index 0000000..684105c --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(7651).h @@ -0,0 +1,184 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +#define ZHONGKELANXUN + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^2; +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#ifdef QIANCHENG //ة + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ +#elif ZHONGKELANXUN //пѶ + +#define BOXHEADER 0x55AA +#define BOXIDCODE 0xFF + +#endif + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +/*ͨѡ*/ +#ifdef QIANCHENG //ة + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; +#elif ZHONGKELANXUN //пѶ + typedef enum { + VOL_CHAN = 0, + VOR_CHAN = 0x11, + VOX_BOTH = 0x22, + }e_Vox_Chan; +#endif + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + /*ͳֽ˫ͨѶЭID*/ +#ifdef QIANCHENG //ة + + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; + +#elif ZHONGKELANXUN //пѶ + +typedef enum _VOX_BES_COMMAND_E +{ + VHOUSE_CMD_GET_VBAT = 0x01, //ȡصҲΪʼ־ + VHOUSE_CMD_PAIR, //ַϢ + VHOUSE_CMD_GET_TWS_BTADDR, //ȡԶַϢ + VHOUSE_CMD_CLEAR_PAIR, //Ϣ + VHOUSE_CMD_PWROFF, //ػϢ + VHOUSE_CMD_ERR, //Ϣ + VHOUSE_CMD_SUCCESS, //ɹӦ + VHOUSE_CMD_CLOSE_WINDOW, //ظ + VHOUSE_CMD_OPEN_WINDOW, // + VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //ظǻȡ + + VHOUSE_CMD_ENABLE_POPUP = 0x80, //صܿ + + VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //ͻָ + VHOUSE_CMD_CUSTOM_RESV_END = 0xEF, + + VHOUSE_CMD_SYS_RST = 0xFF, //ϵͳλָ + +}VOX_BES_COMMAND_E; + +#endif + +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(7879).c b/TP3310_Demo.si4project/Backup/vox_module(7879).c new file mode 100644 index 0000000..491175d --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(7879).c @@ -0,0 +1,588 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 30 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_CNT 100 //ظ5s󣬶ַûʱ10sûûVox 5V硣 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +//uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +//uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0xff,0xff}; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = 0; +idata uint8_t BES_Addr[2][6] = 0; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ +#endif + } + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1)) == 0 ) //300msһ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //Ҷָֶͨ +#endif + } + + Vox_TX_Timer++; + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOX_BOTH); //͹ظָ ֶͨ +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + if( BES_Rst_Puls_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + + Vox_Pairing_State[VOL_CHAN] = 0xff; + Vox_Pairing_State[VOR_CHAN] = 0xff; + + //Box_To_Bes_Comm_Debounce += 1; + } + else + { + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_CNT) //ַûʱ10sرַûVOX 5V + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 0; + Boost_Vout_Change_Flag = 1; + + VOX_EN_Type(VOX_VOUT_Mode); + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + Box_To_Bes_Comm_Debounce++; + } + + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼһֽûüȥ +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + for(i=0;i<6;i++) + { + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡ״̬ + } + else + { + for(i=0;i<6;i++) + { + BES_Addr[VOR_CHAN][i+5] = RX0_Buffer[i]; //ȡַ + BES_Addr[VOL_CHAN][i+5] = RX0_Buffer[i]; + } + + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶ״̬ + } + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } + +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(7909).c b/TP3310_Demo.si4project/Backup/vox_module(7909).c new file mode 100644 index 0000000..2a16ec8 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(7909).c @@ -0,0 +1,511 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 5 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit gVor_Take_Out_Flag = 0; //ּ־λ + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V + + SFRADDR = VOX_CON0; + SFRDATA = 0x1A; + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x11; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); +#endif + VOX_CTL0 &= ~0x22; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧ˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( !(CHIP_STA1 & 0x04) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vol_Vout_Enable = ON; //־ON + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_State = VOX_GET_OUTPUT_BOX; + gVol_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + Vol_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( gVol_Take_Out_Flag ) //ٴ֣硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol In Agn\r\n"); +#endif + } + } + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Vout_Enable = OFF; + + // if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("VOL_OUTPUT_BOX\r\n"); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + if( (VOX_CTL0 & 0x01) != 0x01 ) + { + VOL_EN_Type(VOX_ADT_Mode); + } + + Vol_Loadon_Det_Debounce = 0; + + if( CHIP_STA1 & 0x20 ) + { + Vol_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + +#if 1 + /*Vol ÿ300msһ*/ + if( CHIP_STA1 & 0x01 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + Vol_State = VOX_NONE_IN_BOX; + } + } +#endif +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( !(CHIP_STA1 & 0x08) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_State = VOX_GET_OUTPUT_BOX; + + gVor_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + Vor_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor In Agin\r\n"); +#endif + } + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + VOR_EN_Type(VOX_ADT_Mode); + Vor_Vout_Enable = OFF; + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("VOR_OUTPUT_BOX\r\n"); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + if( (VOX_CTL0 & 0x02) != 0x02 ) + { + VOR_EN_Type(VOX_ADT_Mode); + } + + Vor_Loadon_Det_Debounce = 0; + + /* Loadon״̬λڡ־1˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + +#if 1 +/*Vor ÿ200msһ*/ + if( CHIP_STA1 & 0x02 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + Vor_State = VOX_NONE_IN_BOX; + } + } +#endif + +} + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(807).h b/TP3310_Demo.si4project/Backup/vox_module(807).h new file mode 100644 index 0000000..68454ec --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(807).h @@ -0,0 +1,75 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +extern bit Vol_Vout_Enable; +extern bit Vor_Vout_Enable; + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + + + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +typedef enum { + + VOX_GET_INTO_BOX = 0, // + VOX_STAY_IN_BOX, //ڲ + //VOX_GET_OUTPUT_BOX, // + VOX_NONE_IN_BOX, //ղ + +}Vox_State_e; + +extern Vox_State_e Vol_State; +extern Vox_State_e Vor_State; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + + extern void Vox_init(void); + + extern void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + extern void VOR_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + + extern void Vol_Det_Machine(void); + extern void Vor_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(82).h b/TP3310_Demo.si4project/Backup/vox_module(82).h new file mode 100644 index 0000000..1ab3590 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(82).h @@ -0,0 +1,95 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#define HEADER 0x050A //VOXͨѶݰͷ + + sbit COM_CTRL = P0^7; + + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + + +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; + + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern bit BES_Puls_Start; +extern bit Vox_Vout_Enable; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void Vox_init(void); +extern void BES_Reset_Puls(void); +extern void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID); +extern void Vox_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(833).c b/TP3310_Demo.si4project/Backup/vox_module(833).c new file mode 100644 index 0000000..7dca7ae --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(833).c @@ -0,0 +1,628 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" + + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +bit Vol_Bat_Full_Flag = 0; +bit Vor_Bat_Full_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x10; //VOL Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x10; //VOL Enable 5V + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x10; //VOL 5v Off + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x20; //VOR Disable 5V And Disable VOR ADT + + VOX_CTL0 |= 0x20; //VOR Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x20; //VOR 5v Off + + VOX_CTL0 |= 0x02; //VOR load detect On + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vol_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vol_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x10) != 0x10 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧֻloadon״̬˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x24) == 0x20 ) + { + Vol_Vout_Enable = ON; //־ON +#ifdef _DEBUG_VOX + printf("Vol Vo Nor\r\n"); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬1֣2س3ﮱ + { + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_R_FLASH(100,5); +#endif +#ifdef _DEBUG_VOX + printf("Vol Get Out\r\n"); +#endif + + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + VOL_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽֻLoadon״̬ + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vol LiPro\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = ON; //־ON +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( Vol_Bat_Full_Flag ) //ADTģʽ£ֻLoadon״̬˵ + { + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Bat Full\r\n"); +#endif + } + + } + else + if( !(CHIP_STA1 & 0x24) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vol_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; + Vol_Vout_Enable = OFF; + + if( CHIP_STA1 & 0x20 ) //ADTģʽ³Loadonźţ˵ж֡ + { + Vol_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VO_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vol ÿ200msһ*/ + if( IRQ_FLAG0 & 0x04 ) + { + Vol_Output_Short_Debounce++; + if( Vol_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vol_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x04; + Vol_State = VOX_NONE_IN_BOX; + } + } + +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ +#ifdef BOOST_AOUT + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ +#else + if( gBoost_Prepared_Flag ) +#endif + { + switch( Vor_State ) + { + case VOX_GET_INTO_BOX: // + + if( (VOX_CTL0 & 0x20) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE ) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + + if( (CHIP_STA1 & 0x88) == 0x80 ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; +#ifdef _DEBUG_VOX + printf("Vor Vo Nor\r\n"); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + + Vor_Bat_Full_Flag = 1; +#ifdef LED_DISPLAY + LED_G_FLASH(100,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vor Get Out\r\n"); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + VOR_EN_Type(VOX_ADT_Mode); //210Դﮱ״̬VoxתADTģʽ + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(50); +#endif +#ifdef _DEBUG_VOX + printf("Vor LiP\r\n"); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻3ﮱ10ӡ + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Vout_Enable = ON; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( Vor_Bat_Full_Flag ) + { + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Bat Full\r\n"); +#endif + } + } + else + if( !(CHIP_STA1 & 0x88) ) //CHIP_STA1loadonioff״̬˵ˡ + { + Vor_State = VOX_NONE_IN_BOX; + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; + Vor_Loadon_Det_Debounce = 0; + Vor_Vout_Enable = OFF; + + /* Loadon״̬λڣ˵̡֣*/ + if( CHIP_STA1 & 0x80 ) + { + Vor_State = VOX_GET_INTO_BOX; + +#if DISCHARGE_ENABLE +#ifndef BOOST_AOUT + DisCharge_Boost_Open(); //ڿBoost¸ڿVOUT(100msһ) + +#endif +#endif + +#ifdef _DEBUG_VOX + printf("VOR_INTO_BOX\r\n"); +#endif + } + + break; + + default: + break; + } + } + else //BoostVOXָ״̬ + { + Vol_State = VOX_NONE_IN_BOX; + } + + /*Vor (жϱ־λ)ÿ200msһ*/ + if( IRQ_FLAG0 & 0x08 ) + { + Vor_Output_Short_Debounce++; + if( Vor_Output_Short_Debounce >= 2 ) //Vor·200ms¿ADT + { + Vor_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x08; + Vor_State = VOX_NONE_IN_BOX; + } + } + +} + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +uint8_t BES_Puls_Cnt = 0; +bit BES_Puls_Start = 0; + +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + P07 = 0; + } + else + { + if(BES_Puls_Cnt%2) + { + P07 = 1; + if(BES_Puls_Cnt == 13) + { + P07 = 0; + } + } + else + { + P07 = 0; + if(BES_Puls_Cnt == 14) + { + P07 = 1; + } + } + } + BES_Puls_Cnt++; + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + P0 |= 0x80; + } + } +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void Vox_TX_Machine(VOX_Comm_ID_e VOX_Comm_ID) +{ + uint8_t *tx_pData; + uint8_t i = 0; + tx_pData[0] = HEADER>>8; + tx_pData[1] = HEADER; + + tx_pData[3] = 0x02; + tx_pData[5] = 0x02; + tx_pData[6] = bat_level; + tx_pData[7] = FW_VER; + tx_pData[8] = bat_level; + + switch(VOX_Comm_ID) + { + case OPEN_COVER: //ָ + tx_pData[4] = 0x00; + break; + + case CLOSE_COVER: //ظָ + tx_pData[4] = 0x01; + break; + + case BES_RESET: //BES λpatten + P0 |= 0x80; + BES_Puls_Start = 1; + return; + + case SHUT_DOWN: //ػָ + tx_pData[4] = 0x03; + break; + default: + break; + } + + for(i=3 ;i<9 ;i++) + { + tx_pData[2] += tx_pData[i]; //У + } + + Uart0SendPacket(9, tx_pData); +} + + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(870).c b/TP3310_Demo.si4project/Backup/vox_module(870).c new file mode 100644 index 0000000..2766aa3 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(870).c @@ -0,0 +1,641 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_IOFF_DET_DEBOUNCE 40 //Vox Ioffʱ4sΪ˱֤˳ʼɣʼ + +#define VOX_LOADON_DET_DEBOUNCE 2 + +#define T10MIN_DEBOUNCE 150 //10Ӷʱ4sһΡ150 +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit gVor_Recharge_Irq_Flag = 0; //жϱ־λ +bit gVol_Recharge_Irq_Flag = 0; + +bit gVor_Charge_Normal_Flag = 0; //Voutdebounceһʱ䲻IOFF־˵磬زﮱ״̬ +bit gVol_Charge_Normal_Flag = 0; + +bit gVor_Output_Short_Irq_Flag = 0; +bit gVol_Output_Short_Irq_Flag = 0; +uint8_t Vol_Output_Short_Debounce = 0; +uint8_t Vor_Output_Short_Debounce = 0; + +Vox_State_e Vol_State = VOX_NONE_IN_BOX; + +uint8_t Vol_Loadon_Det_Debounce = 0; +uint8_t Vol_Ioff_Det_Debounce = 0; +uint8_t Vol_LiPro_Det_Debounce = 0; +bit Vol_LiPro_Flag = 0; + +bit Vol_Bat_Full_Flag = 0; +bit gVol_Take_Out_Flag = 0; + +Vox_State_e Vor_State = VOX_NONE_IN_BOX; + +uint8_t Vor_Loadon_Det_Debounce = 0; +uint8_t Vor_Ioff_Det_Debounce = 0; +uint8_t Vor_LiPro_Det_Debounce = 0; +bit Vor_LiPro_Flag = 0; + +bit Vor_Bat_Full_Flag = 0; +bit gVor_Take_Out_Flag = 0; //ּ־λ + +bit Vor_Vout_Enable = OFF; //OFF:BOOSTʱVOUTTRUE:ж绹IOFF硣 +bit Vol_Vout_Enable = OFF; + +uint8_t VoxBufLength = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Vox_init(void) + * + * Description : Vox Initialization :Voxʼ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Vox_init(void) +{ +#if 0 + SFRADDR = VOX_CON1; + SFRDATA &= ~0x07; + SFRDATA |= 0x07; //VOX ã200mA ,VOX ؼ5mA + + + SFRADDR = VOX_CON0; + SFRDATA &= ~0x03; + SFRDATA |= 0x03; +#endif + + VOL_EN_Type(VOX_ADT_Mode); + VOR_EN_Type(VOX_ADT_Mode); + + Vol_State = VOX_NONE_IN_BOX; + + Vor_State = VOX_NONE_IN_BOX; +} + +/* + ******************************************************************************* + * uint8_t VOL_EN_Type(VOL_Enable_Type_e VOL_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode) + { + switch(VOL_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x10; //VOL Disable 5V Charge + + VOX_CTL0 |= 0x10; //VOL Enable 5V Charge + + VOX_CTL0 &= ~0x05; //ADTL Disable,VOL_PU Disable + + break; + + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x01; //VOL ؽ롢ʶʹܣԶʶ + + VOX_CTL0 &= ~((0x01<<2)|(0x01<<4)); //Comm Disable,Discharge Off + + break; + + default: + break; + } +} + + /* + ******************************************************************************* + * void VOR_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOR_EN_Type(VOX_Enable_Mode_e VOR_Enable_Mode) + { + switch(VOR_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x20; //VOR Disable 5V Charge + + VOX_CTL0 |= 0x20; //VOR Enable 5V Charge + + VOX_CTL0 &= ~0x0A; //ADTR Disable,VOR_PU Disable + + break; + case VOX_ADT_Mode: + + VOX_CTL0 |= 0x02; //VOR load detect On + + VOX_CTL0 &= ~((0x01<<3)|(0x01<<5)); //Comm Disable,Discharge Off + + break; + + default: + break; + } + } + + +/* +******************************************************************************* +* void Vol_Det_Machine(void) +* +* Description : Vol Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vol_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; + + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + { + switch(Vol_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type&0x07) != 0x02 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOL_EN_Type(VOX_VOUT_Mode); + } + + Vol_Loadon_Det_Debounce++; + if( Vol_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE) //VoxVOUTdebounceһʱ(200ms)IOFF״̬ʧ˵Vox硣 + { + Vol_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x04) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vol_Vout_Enable = ON; //־ON + Vol_Bat_Full_Flag = 0; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vol Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vol_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x24) == 0x24 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVol_Take_Out_Flag = 1; + Vol_Ioff_Det_Debounce++; + if( Vol_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vol_Ioff_Det_Debounce = 0; + { + if( ON == Vol_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOL_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vol_Bat_Full_Flag = 1; +#ifdef _DEBUG_VOX + printf("Vol Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vol_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣor Ҫʱѽм + Vol_LiPro_Det_Debounce++; + if( Vol_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vol_LiPro_Det_Debounce = 0; + Vol_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vol_Vout_Enable = OFF; + Vol_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_R_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vol Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + } + else + if( (CHIP_STA1 & 0x24) == 0x20 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vol_Ioff_Det_Debounce = 0; + Vol_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_R_ON(); +#endif + if( 1 == gVol_Take_Out_Flag ) //ٴ֣硣 + { + Vol_State = VOX_GET_INTO_BOX; + gVol_Take_Out_Flag = 0; + Vol_LiPro_Flag = 0; + Vol_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vol Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x24) == 0x04 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vol_State = VOX_GET_OUTPUT_BOX; + Vol_Vout_Enable = OFF; + Vol_Bat_Full_Flag = 0; + gVol_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + LED_R_FLASH(200,5); +#endif + +#ifdef _DEBUG_VOX + printf("Vol Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + //VOL_EN_Type(VOX_ADT_Mode); + + if( !(CHIP_STA1 & 0x20) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vol_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vol Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOL_EN_Type(VOX_ADT_Mode); + + Vol_Loadon_Det_Debounce = 0; + + // if( (CHIP_STA1 & 0x20) //Loadon״̬λڡ־1˵̡֣ + if(CHIP_STA1 & 0x20) + { + Vol_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vol VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } +#ifdef _DEBUG_VOX + // printf("Vol State:%d!,CHIP_STA1:0x%x\r\n",(uint16)Vol_State,(uint16)CHIP_STA1); +#endif + } + else + { + Vol_State = VOX_NONE_IN_BOX; + } + +#if 0 + if(gVol_Output_Short_Irq_Flag) + { + Vol_Output_Short_Debounce++; + if(Vol_Output_Short_Debounce >= 5) //Vor·100ms¿ADT + { + Vol_Output_Short_Debounce = 0; + + gVol_Output_Short_Irq_Flag = 0; + Vol_State = VOX_NONE_IN_BOX; + } + } +#endif +} + +/* +******************************************************************************* +* void Vor_Det_Machine(void) +* +* Description : Vor Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void Vor_Det_Machine(void) +{ + uint8_t Vox_Mode_Type = 0; + + SFRADDR = ST_VOX; //ȡVOL\R ״̬Ĵ + Vox_Mode_Type = SFRDATA; + + if( gBoost_Opened_Flag ) //Vox Det1Voxڷ˫ͨŹܣ2BoostѾ + { + switch(Vor_State) + { + case VOX_GET_INTO_BOX: // + + if( (Vox_Mode_Type&0x70) != 0x20 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOR_EN_Type(VOX_VOUT_Mode); + } + + Vor_Loadon_Det_Debounce++; + if( Vor_Loadon_Det_Debounce >= VOX_LOADON_DET_DEBOUNCE) //VoxVOUTdebounceһʱIOFF״̬ʧ˵Vox硣 + { + Vor_Loadon_Det_Debounce = 0; + if( !(CHIP_STA1 & 0x08) ) //سVoxתADTģʽADTģʽ£ͬʱLoadonIOFF״̬ڸVoxĹܣͬloadin״̬ʶ + { + Vor_Vout_Enable = ON; + Vor_Bat_Full_Flag = 0; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; +#ifdef _DEBUG_VOX + printf("Vor Vout Normal(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + Vor_State = VOX_STAY_IN_BOX; + } + + break; + + case VOX_STAY_IN_BOX: //ڲ + + if( (CHIP_STA1 & 0x88) == 0x88 ) //VoxڳгLoadonIOFFͬʱڵ״̬˵1֣2س3ﮱ + { + gVor_Take_Out_Flag = 1; + Vor_Ioff_Det_Debounce++; + if( Vor_Ioff_Det_Debounce >= VOX_IOFF_DET_DEBOUNCE ) //ת(ֺ)ʱ4s + { + Vor_Ioff_Det_Debounce = 0; + + if( ON == Vor_Vout_Enable ) //VoxгIOFF״̬˵1֣2س + { + VOR_EN_Type(VOX_ADT_Mode); //VoxADTģʽ󣬹۲CHIP_STA1״̬1LoadonIOFF˵֣2ֻLoadon˵ڲ֣س + Vor_Bat_Full_Flag = 1; +#ifdef _DEBUG_VOX + printf("Vor Stay In Box.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + else //򣬶شﮱ״̬Vout5mA10ӡ110δﮱ״̬210Դﮱ״̬ + { + Vor_LiPro_Flag = 1; //ؽﮱ״̬󣬲ܵߣ + Vor_LiPro_Det_Debounce++; + if( Vor_LiPro_Det_Debounce >= T10MIN_DEBOUNCE ) + { + Vor_LiPro_Det_Debounce = 0; + Vor_State = VOX_GET_OUTPUT_BOX; //210Դﮱ״̬Voxת״̬ + Vor_Vout_Enable = OFF; + Vor_LiPro_Flag = 0; + } +#ifdef LED_DISPLAY + LED_G_KEEP_FLASHING(500); +#endif +#ifdef _DEBUG_VOX + printf("Vor Go In LiPro.(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + } + else + if( (CHIP_STA1 & 0x88) == 0x80 ) //۲CHIP_STA1״̬IOFFLoadon˵1ֺ4sڣٴ֣210δ˳ﮱ״̬磻 + { + Vor_Ioff_Det_Debounce = 0; + Vor_LiPro_Det_Debounce = 0; +#ifdef LED_DISPLAY + LED_G_ON(); +#endif + if( 1 == gVor_Take_Out_Flag ) //ٴ֣硣 + { + Vor_State = VOX_GET_INTO_BOX; + gVor_Take_Out_Flag = 0; + Vor_LiPro_Flag = 0; + Vor_Loadon_Det_Debounce = 0; +#ifdef _DEBUG_VOX + printf("Vor Get In Again(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + } + else + if( (CHIP_STA1 & 0x88) == 0x08 ) //۲CHIP_STA1״̬1LoadonIOFF˵ѳ֣ + { + Vor_State = VOX_GET_OUTPUT_BOX; + Vor_Vout_Enable = OFF; + Vor_Bat_Full_Flag = 0; + gVor_Take_Out_Flag = 0; +#ifdef LED_DISPLAY + // LED_G_FLASH(5); + LED_G_FLASH(200,5); +#endif +#ifdef _DEBUG_VOX + printf("Vor Get Out(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_GET_OUTPUT_BOX: //֣VoxԶʶģʽ1Loadon־ʧ֣2LoadonIOFF־ͬʱڡ + //˵:1ؾ10ӵ5mAδﮱʧЧ2س + //VOR_EN_Type(VOX_ADT_Mode); + + // if( !(CHIP_STA1 & 0x80) ) //1Loadon־ʧ֣Voxתղ״̬ȴ֡2LoadonIOFF־ͬʱڣ˵ؾ10ӵ5mAδﮱʧЧ²ζ + { + Vor_State = VOX_NONE_IN_BOX; +#ifdef _DEBUG_VOX + printf("Vor Output Box(line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + case VOX_NONE_IN_BOX: //ղ + + VOR_EN_Type(VOX_ADT_Mode); + + Vor_Loadon_Det_Debounce = 0; + + // if( (CHIP_STA1 & 0x80) //Loadon״̬λڡ־1˵̡֣ + if(CHIP_STA1 & 0x80) + { + Vor_State = VOX_GET_INTO_BOX; +#ifdef _DEBUG_VOX + printf("Vor VOX_GET_INTO_BOX (line:%d)!\r\n",(uint16)__LINE__); +#endif + } + + break; + + default: + break; + } +#ifdef _DEBUG_VOX + // printf("Vor State:%d!,CHIP_STA1:0x%x\r\n",(uint16)Vor_State,(uint16)CHIP_STA1); +#endif + } + else + { + Vor_State = VOX_NONE_IN_BOX; + } + +#if 0 + /*VOX·VOX·¿VOXΪADTģʽVoxһֱHiccupģʽ*/ + if(gVor_Output_Short_Irq_Flag) + { + Vor_Output_Short_Debounce++; + if(Vor_Output_Short_Debounce > 5) //Vor·100ms¿ADT + { + Vor_Output_Short_Debounce = 0; + + gVor_Output_Short_Irq_Flag = 0; + Vor_State = VOX_NONE_IN_BOX; + } + } + +#endif +} + + + + + + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + uint8_t IRQ3_Flag = 0; + uint8_t IRQ4_Flag = 0; + + IRQ3_Flag = IRQ_FLAG3; + IRQ_FLAG3 = IRQ3_Flag; + + IRQ4_Flag = IRQ_FLAG4; + IRQ_FLAG4 = IRQ4_Flag; +#if 0 + if(IRQ3_Flag & 0x0C) //vol loadon interrupt flag + { + gIrq_Event_Type |= VOR_LOADON_IRQ_EVENT; + } + + if(IRQ3_Flag & 0x30) //vor loadon interrupt flag + { + gIrq_Event_Type |= VOL_LOADON_IRQ_EVENT; + } + + if(IRQ4_Flag & 0xC0) //VOR IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOR_IOFF_IRQ_EVENT; + } + + if(IRQ4_Flag & 0x30) //VOL IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOL_IOFF_IRQ_EVENT; + } +#else + + if(IRQ3_Flag & 0x3C) + { + gIrq_Event_Type |= VOL_LOADON_IRQ_EVENT; //vox loadon interrupt flag + } + + if(IRQ4_Flag & 0xF0) //VOx IOFF Edge Interrupt Flag + { + gIrq_Event_Type |= VOR_IOFF_IRQ_EVENT; + } + +#endif +#if 0 + if(!Enter_Sleep_Cnt_Restart_Flag) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif + + +} + +#endif diff --git a/TP3310_Demo.si4project/Backup/vox_module(897).c b/TP3310_Demo.si4project/Backup/vox_module(897).c new file mode 100644 index 0000000..cb92186 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(897).c @@ -0,0 +1,776 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define VOX_TX_CNT 50 //VOXָʱ +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 +#define Vox_TX_Interval 2 //Voxʱָʱ +#define TIM_SHUTDOWN_DEBOUNCE 300 //ػǰdebounceʱ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +#ifdef VOX_TX_RST_PATTERN +uint8_t BES_Puls_Cnt = 0; //BES Reset +bit BES_Puls_Start = 0; //BES Resetź +#endif + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +uint8_t BES_Rst_Puls_Timer = 0; //ظ15sBES Reset +bit BES_Rst_Puls_Flag = 0; +uint8_t WkUp_EarPhone_Debounce = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + BES_Rst_Puls_Flag = 0; + BES_Rst_Puls_Timer = 0; + EarPhone_ShutDown_Flag = 0; + Vox_TX_Timer = 0; + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + WkUp_EarPhone_Debounce = 0; + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + COM_CTRL = OFF; + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( WkUp_EarPhone_Debounce < EARPHONR_WKUP_CNT ) //debounce 500ms + { + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + WkUp_EarPhone_Debounce++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + VOX_EN_Type(VOX_ADT_Mode); + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + if( Cover_Open_Flag || Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ5sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if(Vox_TX_Timer < VOX_TX_CNT) + { + if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOX_BOTH); /*سִڵ͵磬ػָ*/ +#endif + #ifdef _DEBUG_VOX + printf("Shut Down,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //͹ظָ ͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Close,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + else + if( CoverStatus == OPEN ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_OPEN,VOX_BOTH); //ָֶͨ +#endif + #ifdef _DEBUG_VOX + printf("Cover Open,Cnt:%d\r\n",(uint16_t)Vox_TX_Timer); + #endif + } + } + #if 1 + else + if( (Vox_TX_Timer % (Vox_TX_Interval + 1) ) == 0 ) //300msһ + { + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //͹ظָ ͨ +#endif + } + } + #endif + else + { + if( CoverStatus == OPEN ) //VoxADTģʽCOM_CTRLʶ֡ + { + COM_CTRL = ON; + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if(EarPhone_ShutDown_Flag) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( CoverStatus == CLOSE ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺10sSHUT_DOWNָ + } + } + + if( !BES_Rst_Puls_Flag ) + { + BES_Rst_Puls_Timer++; + if( BES_Rst_Puls_Timer > BES_RST_PULS_CNT ) //ظǺ5+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; + #ifdef _DEBUG_VOX + printf("Bes Reset.\r\n"); + #endif +#ifdef VOX_TX + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,Ŀģ֤BES Reset Pattern͵ƽ0V + SFRDATA &= ~0x0C; + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + if( (VOX_CTL0 & 0x30) != 0x30 ) //1ǰѾVOUTظԭʹVOUTǰҪȹرVOUTʹܣһʱϿ + { + VOX_EN_Type(VOX_VOUT_Mode); + } + } + else + if( CoverStatus == OPEN ) + { + Cover_Open_Flag = 0; +#ifdef VOX_TX + // HandleTxCommand(CMD_BES_HEARTBEAT,VOX_BOTH); //ָֶָͨη÷һΣã +#endif + } + + COM_CTRL = ON; + } + } +} + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * --Header--cmd----len_h---len_l-----Data------CRC16 + * 4bytes 2byte 1byte 1byte Len bytes 1byte + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +idata uint8_t BES_ShutDown_State = 0; //ػ״̬0磻1ӵ͵ +//idata uint8_t BES_Addr[2][6] = 0; //ַBES_Addr[0][6]BES_Addr[1][6]Ҷ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ + uint8_t tx_pData[8] = 0; + uint8_t i = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_BOX_CLOSE: + + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + #if 0 + for(i=0 ;i<6;i++) + { + tx_pData[9] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + #endif + break; + + case CMD_SHUT_DOWN: + + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + tx_pData[7] = BES_ShutDown_State; + + break; + + case CMD_BES_PAIRING: + + /*Data Length*/ + tx_pData[4] = 0x02; + #if 0 + for(i=0 ;i<6;i++) + { + tx_pData[7] += BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + #endif + tx_pData[5] = 0x03; //Ƿö + tx_pData[6] = 0x03; //ں͵ĸ + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; + + case CMD_OTA: + /*Data Length*/ + tx_pData[6] = 0x03; + tx_pData[7] = bat_level; + tx_pData[8] = FW_VER; + + break; +#endif + case BES_RESET: //BES λpatten + BES_Puls_Start = 1; + return; + + default: + break; + } + + for(i=2 ;i<(tx_pData[4] + 3);i++) + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 5, tx_pData); +#endif +} + + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * char HandleRxCommand(ACK_TYPE_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header cmd Ack type len_h len_l Data CRC16 + * 4bytes 2byte 1byte 1byte 1byte Len bytes 1byte + * + * Arguments : ACK_TYPE_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +//idata uint8_t Vox_BatLevel[2] = 0; //Vox_BatLevel[0]:VOL;Vox_BatLevel[1]:VOR +idata uint8_t Vox_Pairing_State = 0; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Paired_State = 0; //Լ¼VOL:4bitVOR:4bit1йԼ¼0û +//idata uint8_t Bes_OTA_Ver[2] = 0; //OTA汾 + + +char HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + + #if 1 + switch(RxCommand) + { + case CMD_BOX_OPEN: + + #if 0 + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[5]; //ȡ + Vox_Pairing_State = RX0_Buffer[6]; //ȡ״̬ + Vox_Paired_State = RX0_Buffer[7]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ + Vox_Pairing_State = RX0_Buffer[6] >> 4; //ȡҶ״̬ + Vox_Paired_State = RX0_Buffer[7] >> 4; //ȡҶԼ¼ + } + + break; + #endif + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + // Vox_BatLevel[VOL_CHAN] = RX0_Buffer[5]; //ȡ + Vox_Pairing_State = RX0_Buffer[6]; //ȡ״̬ + Vox_Paired_State = RX0_Buffer[7]; //ȡԼ¼ + #if 0 + for(i=10 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-10] += RX0_Buffer[i]; //ȡַ + } + #endif + } + else + { + // Vox_BatLevel[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ + Vox_Pairing_State = RX0_Buffer[6] >> 4; //ȡҶ״̬ + Vox_Paired_State = RX0_Buffer[7] >> 4; //ȡҶԼ¼ + #if 0 + for(i=10 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-10] += RX0_Buffer[i]; //ȡҶַ + } + #endif + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + #if 0 + for(i=7 ;i<6;i++) + { + BES_Addr[VOL_CHAN][i-7] += RX0_Buffer[i]; //ȡַ + } + #endif + Vox_Pairing_State = RX0_Buffer[5]; //ȡ״̬ + // Vox_BatLevel[VOL_CHAN] = RX0_Buffer[6]; //ȡ + + } + else + { + #if 0 + for(i=7 ;i<6;i++) + { + BES_Addr[VOR_CHAN][i-7] += RX0_Buffer[i]; //ȡҶַ + } + #endif + Vox_Pairing_State = RX0_Buffer[5] >> 4; //ȡҶ״̬ + // Vox_BatLevel[VOR_CHAN] = RX0_Buffer[6]; //ȡҶ + } + + break; + + case CMD_BES_CLEAN: + + break; +#if 0 + case CMD_BES_HEARTBEAT: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_BatLevel[VOL_CHAN] = RX0_Buffer[7]; //ȡ + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[8]; //ȡ״̬ + Vox_Paired_State[VOL_CHAN] = RX0_Buffer[9]; //ȡԼ¼ + } + else + { + Vox_BatLevel[VOR_CHAN] = RX0_Buffer[7]; //ȡҶ + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[8]; //ȡҶ״̬ + Vox_Paired_State[VOR_CHAN] = RX0_Buffer[9]; //ȡҶԼ¼ + } + + break; +#endif + default: + break; + } + #endif + return 1; +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +//uint8_t Box_To_Bes_Comm_Debounce = 0; +//uint16_t Bes_Pairing_Debounce = 0; + +void HandleVoxCommMsg(void) +{ + uint8_t CrcCheckSum = 0; + uint8_t i = 0; + + /*RXݴ*/ + if(Uart0_RX_Finish_Flag == 1) + { + Uart0_RX_Finish_Flag = 0; + + for(i=3 ;i<(RX0_Buffer[4] + 3);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + } +#if 0 + if(Event_key == KEY_EVENT_L_2S) //ǣжڲ̡֣ + { + if( (CoverStatus == OPEN) && ( CHIP_STA1 & 0xA0 ) ) //1ǣ2жںС + { + if(Box_To_Bes_Comm_Debounce < 1) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_CLEAN,VOX_BOTH); /*ԣ˫ַָ*/ +#endif + } + else + if(Box_To_Bes_Comm_Debounce < 2) //ֻһڲ֣β + { + +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ԣָ*/ + Vox_Pairing_State = 0x00; + // BES_Addr[VOL_CHAN][6] = 0x00; +#endif + } + else + { + if( (Vox_Pairing_State > VOX_PAIR_ING) && (Vox_Pairing_State > VOX_PAIR_ING) ) //˫Գɹ򲻴浱ǰ״̬ + { + Event_key = KEY_EVENT_Empty; + Bes_Pairing_Debounce = 0; + /*todo ԳɹЧ*/ + + } + else + if( Vox_Pairing_State != 0x00 ) //յظָ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ԣҶָ*/ + Vox_Pairing_State = 0x00; + // BES_Addr[VOR_CHAN][6] = 0x00; + Box_To_Bes_Comm_Debounce = 0; /*ظָ*/ +#endif + } + else + if(Vox_Pairing_State == 0x00 || Vox_Pairing_State == 0x00) + { + Event_key = KEY_EVENT_Empty; + + /*ʾֹԵЧ*/ + LED_R_FLASH(20,6); //5Hz˸6 + Display_Sta=DISPLAY_FLASH; + return; + + } + } + + if(Bes_Pairing_Debounce > 600) //10ӳʱ + { + Event_key = KEY_EVENT_Empty; + Bes_Pairing_Debounce = 0; + LED_R_FLASH(20,10); //5Hz˸10 + Display_Sta=DISPLAY_FLASH; + } + + Box_To_Bes_Comm_Debounce++; + Bes_Pairing_Debounce++; + } + else + { + Event_key = KEY_EVENT_Empty; + } + } +#endif +} + +#endif + + +#ifdef VOX_TX_RST_PATTERN + +/* +******************************************************************************* +* void BES_Reset_Puls(void) +* +* Description : BES Resetڲλʱ (5ms) +* Vox TX BES PlusVOXʱˡ +* 5T Low + 1T High + 1T lOW + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 2T Low + 2T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low + 1T High + 1T Low +* _ _ _ _ _ _ _ _ _ +*0 0 0 0 0 |1|0|1|0|1|0|1|0 0|1 1|0|1|0|1|0|1|0 +*__________| |_| |_|_|_|_|___|___|_|_|_|_|_|_|_______ + +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +void BES_Reset_Puls(void) +{ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } +} + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/vox_module(917).h b/TP3310_Demo.si4project/Backup/vox_module(917).h new file mode 100644 index 0000000..2d726a5 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/vox_module(917).h @@ -0,0 +1,103 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +#define VOX_PLUSE_LONG 30 //vox ߵƽʱ + +#define VOX_PLUSE_SHORT 10 //vox ͵ƽʱ + +#define VOX_PLUSE_CODE_GAP 20 + +#define VOX_PLUSE_START_CNT 20 + +#define VOX_PLUSE_SYS_CNT 150 + +#define VOX_PLUSE_STOP_CNT 80 + +#define C_pluse_CODE_start 0x80 +#define C_Debounce_load_Max 5 + + +#define VOL_TYPE 0x01 +#define VOR_TYPE 0x02 + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +extern bit gVor_Output_Short_Irq_Flag; +extern bit gVol_Output_Short_Irq_Flag; + +extern bit Vol_LiPro_Flag; +extern bit Vor_LiPro_Flag; + + +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + +typedef enum { + VOX_NONE = 0, + VOL_CHAN, + VOR_CHAN, + VOX_BOTH, +}e_Vox_Chan; + +typedef enum { + + VOX_GET_INTO_BOX = 0, // + VOX_STAY_IN_BOX, //ڲ + VOX_GET_OUTPUT_BOX, // + VOX_NONE_IN_BOX, //ղ + +}Vox_State_e; + +extern Vox_State_e Vol_State; +extern Vox_State_e Vor_State; + + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + + extern void Vox_init(void); + + extern void VOL_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + extern void VOR_EN_Type(VOX_Enable_Mode_e VOL_Enable_Mode); + + extern void Vol_Det_Machine(void); + extern void Vor_Det_Machine(void); + +#endif + +#endif + diff --git a/TP3310_Demo.si4project/Backup/watchdog(2665).h b/TP3310_Demo.si4project/Backup/watchdog(2665).h new file mode 100644 index 0000000..eb4ff25 --- /dev/null +++ b/TP3310_Demo.si4project/Backup/watchdog(2665).h @@ -0,0 +1,50 @@ +/* + ****************************************************************************** + * + * @file watchdog.h + * @brief watchdog module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __WATCHDOG_H__ +#define __WATCHDOG_H__ + +#include "define.h" + +#if WTG_ENABLE + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +#define _WDT_TIME_65ms_ 0 +#define _WDT_TIME_1s_ 1 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + +/******************************************************************************\ + UserCfg.Functions definitions +\******************************************************************************/ + +extern void Watchdog_Clear(void); +extern void Watchdog_Init(uint8_t watchdog_time ); + +#endif +#endif + diff --git a/TP3310_Demo.si4project/Backup/watchdog(5399).c b/TP3310_Demo.si4project/Backup/watchdog(5399).c new file mode 100644 index 0000000..272ecca --- /dev/null +++ b/TP3310_Demo.si4project/Backup/watchdog(5399).c @@ -0,0 +1,95 @@ +/* + ****************************************************************************** + * + * @file watchdog.c + * @brief watchdog module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "watchdog.h" +#if WTG_ENABLE +/*_____ D E F I N I T I O N S ______________________________________________*/ + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/*_____ F U N C T I O N S __________________________________________________*/ + +/* + ******************************************************************************* + * void Watchdog_Init(uint8_t watchdog_time) + * + * Description : watchdog Initialization. WDT_TM = 0ŹʱΪϵͳʱӵ12ƵΪϵͳʱӡ + wdtrel.7=1 ŹʱΪSys_Fre/12*32wdtrel.7=0 ŹʱΪSys_Fre/12*2. + Sys_Fre = 12MHzwdtrel.7=0ʱʱΧ + (1/Sys_Fre)*12*2*256~(1/Sys_Fre)*12*2*256*128 = 5ms~65ms + + Sys_Fre = 12MHzwdtrel.7=1ʱʱΧ + (1/Sys_Fre)*12*32*256~(1/Sys_Fre)*12*32*256*128 = 80ms~1s + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +void Watchdog_Init(uint8_t watchdog_time) +{ + switch(watchdog_time) + { + case _WDT_TIME_65ms_: + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + break; + case _WDT_TIME_1s_: + WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + break; + } + SWDT = 1; //Watchdog Start +} + +/* + ******************************************************************************* + * void Watchdog_Clear(void) + * + * Description : Feed watchdog ϵͳʼʱδпŹʼڳнι + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +void Watchdog_Clear(void) +{ + WDT = 1; + SWDT = 1; +} + +#endif \ No newline at end of file diff --git a/TP3310_Demo.si4project/TP3310_Demo.SearchResults b/TP3310_Demo.si4project/TP3310_Demo.SearchResults new file mode 100644 index 0000000..61a1d04 --- /dev/null +++ b/TP3310_Demo.si4project/TP3310_Demo.SearchResults @@ -0,0 +1,8 @@ +---- Vox_TX_Interval Matches (7 in 3 files) ---- +Key_Handler in key.c (UsrSrc\key) : if( Key_TWS_Pair_Tim % Vox_TX_Interval ) +Vox_Det_Machine in vox_module.c (UsrSrc\vox) : if( !(Vox_TX_Timer % 2*Vox_TX_Interval) ) //200ms发送一次 +Vox_Det_Machine in vox_module.c (UsrSrc\vox) : if( !(Vox_TX_Timer % Vox_TX_Interval) ) +Vox_Det_Machine in vox_module.c (UsrSrc\vox) : if( !(Vox_TX_Timer % 2*Vox_TX_Interval) ) //200ms发送一次 +Vox_Det_Machine in vox_module.c (UsrSrc\vox) : if( !(Vox_TX_Timer % Vox_TX_Interval) ) +Vox_Det_Machine in vox_module.c (UsrSrc\vox) : if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200ms发送一次 +vox_module.h (UsrInc\vox) line 72 : #define Vox_TX_Interval 2 //Vox定时发送指令时间间隔 diff --git a/TP3310_Demo.si4project/TP3310_Demo.bookmarks.xml b/TP3310_Demo.si4project/TP3310_Demo.bookmarks.xml new file mode 100644 index 0000000..c8b9cb1 --- /dev/null +++ b/TP3310_Demo.si4project/TP3310_Demo.bookmarks.xml @@ -0,0 +1,7 @@ + + + + diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_sym b/TP3310_Demo.si4project/TP3310_Demo.sip_sym new file mode 100644 index 0000000..0664473 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_sym differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xab b/TP3310_Demo.si4project/TP3310_Demo.sip_xab new file mode 100644 index 0000000..bc271c5 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xab differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xad b/TP3310_Demo.si4project/TP3310_Demo.sip_xad new file mode 100644 index 0000000..b527b4e Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xad differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xc b/TP3310_Demo.si4project/TP3310_Demo.sip_xc new file mode 100644 index 0000000..dff210e Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xc differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xf b/TP3310_Demo.si4project/TP3310_Demo.sip_xf new file mode 100644 index 0000000..1791174 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xf differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xm b/TP3310_Demo.si4project/TP3310_Demo.sip_xm new file mode 100644 index 0000000..34b4212 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xm differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xr b/TP3310_Demo.si4project/TP3310_Demo.sip_xr new file mode 100644 index 0000000..944fa3b Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xr differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xsb b/TP3310_Demo.si4project/TP3310_Demo.sip_xsb new file mode 100644 index 0000000..591fc31 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xsb differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.sip_xsd b/TP3310_Demo.si4project/TP3310_Demo.sip_xsd new file mode 100644 index 0000000..3134949 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.sip_xsd differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.siproj b/TP3310_Demo.si4project/TP3310_Demo.siproj new file mode 100644 index 0000000..79dee4f Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.siproj differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.siproj_settings.xml b/TP3310_Demo.si4project/TP3310_Demo.siproj_settings.xml new file mode 100644 index 0000000..ca84b35 --- /dev/null +++ b/TP3310_Demo.si4project/TP3310_Demo.siproj_settings.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/TP3310_Demo.si4project/TP3310_Demo.siwork b/TP3310_Demo.si4project/TP3310_Demo.siwork new file mode 100644 index 0000000..8c8f791 Binary files /dev/null and b/TP3310_Demo.si4project/TP3310_Demo.siwork differ diff --git a/TP3310_Demo.si4project/TP3310_Demo.snippets.xml b/TP3310_Demo.si4project/TP3310_Demo.snippets.xml new file mode 100644 index 0000000..a337f1d --- /dev/null +++ b/TP3310_Demo.si4project/TP3310_Demo.snippets.xml @@ -0,0 +1,7 @@ + + + + diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_adc_adc.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_adc_adc.h.sisc new file mode 100644 index 0000000..a6e7aed Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_adc_adc.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_bat_bat.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_bat_bat.h.sisc new file mode 100644 index 0000000..9bd5ec0 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_bat_bat.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_charger_charger_module.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_charger_charger_module.h.sisc new file mode 100644 index 0000000..6205556 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_charger_charger_module.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_discharge_discharge_module.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_discharge_discharge_module.h.sisc new file mode 100644 index 0000000..7f6722e Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_discharge_discharge_module.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_gpio_gpio.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_gpio_gpio.h.sisc new file mode 100644 index 0000000..fc04f23 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_gpio_gpio.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_hall_hall.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_hall_hall.h.sisc new file mode 100644 index 0000000..73373f2 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_hall_hall.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_inc_config.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_inc_config.h.sisc new file mode 100644 index 0000000..0315ae6 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_inc_config.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_inc_define.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_inc_define.h.sisc new file mode 100644 index 0000000..276bd59 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_inc_define.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_inc_reg3310.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_inc_reg3310.h.sisc new file mode 100644 index 0000000..eefcc8a Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_inc_reg3310.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_key_key.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_key_key.h.sisc new file mode 100644 index 0000000..f7c427b Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_key_key.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_led_led.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_led_led.h.sisc new file mode 100644 index 0000000..8a6bd64 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_led_led.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_sleep_sleep.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_sleep_sleep.h.sisc new file mode 100644 index 0000000..daf290c Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_sleep_sleep.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_system_system.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_system_system.h.sisc new file mode 100644 index 0000000..01dcbf7 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_system_system.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_timer_sys_tim.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_timer_sys_tim.h.sisc new file mode 100644 index 0000000..54f32b2 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_timer_sys_tim.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_uart_uart.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_uart_uart.h.sisc new file mode 100644 index 0000000..f364b82 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_uart_uart.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_userapp_userapp.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_userapp_userapp.h.sisc new file mode 100644 index 0000000..7316b77 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_userapp_userapp.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_vox_vox_module.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_vox_vox_module.h.sisc new file mode 100644 index 0000000..eff2c56 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_vox_vox_module.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrInc_watchdog_watchdog.h.sisc b/TP3310_Demo.si4project/cache/parse/UsrInc_watchdog_watchdog.h.sisc new file mode 100644 index 0000000..c71b25f Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrInc_watchdog_watchdog.h.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_adc_adc.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_adc_adc.c.sisc new file mode 100644 index 0000000..52d7b33 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_adc_adc.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_bat_bat.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_bat_bat.c.sisc new file mode 100644 index 0000000..6433b14 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_bat_bat.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_charger_charger_module.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_charger_charger_module.c.sisc new file mode 100644 index 0000000..b51cf0e Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_charger_charger_module.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_discharge_discharge_module.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_discharge_discharge_module.c.sisc new file mode 100644 index 0000000..926a339 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_discharge_discharge_module.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_gpio_gpio.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_gpio_gpio.c.sisc new file mode 100644 index 0000000..b7b799a Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_gpio_gpio.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_hall_hall.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_hall_hall.c.sisc new file mode 100644 index 0000000..bae1a30 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_hall_hall.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_key_key.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_key_key.c.sisc new file mode 100644 index 0000000..7fdb654 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_key_key.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_led_led.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_led_led.c.sisc new file mode 100644 index 0000000..f4b2092 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_led_led.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_main.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_main.c.sisc new file mode 100644 index 0000000..e0fe377 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_main.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_sleep_sleep.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_sleep_sleep.c.sisc new file mode 100644 index 0000000..a6373f4 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_sleep_sleep.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_system_system.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_system_system.c.sisc new file mode 100644 index 0000000..03f42df Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_system_system.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_timer_sys_tim.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_timer_sys_tim.c.sisc new file mode 100644 index 0000000..2ec31d3 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_timer_sys_tim.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_uart_uart.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_uart_uart.c.sisc new file mode 100644 index 0000000..eeb509b Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_uart_uart.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_userapp_userapp.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_userapp_userapp.c.sisc new file mode 100644 index 0000000..718e5aa Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_userapp_userapp.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_vox_vox_module.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_vox_vox_module.c.sisc new file mode 100644 index 0000000..9218091 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_vox_vox_module.c.sisc differ diff --git a/TP3310_Demo.si4project/cache/parse/UsrSrc_watchdog_watchdog.c.sisc b/TP3310_Demo.si4project/cache/parse/UsrSrc_watchdog_watchdog.c.sisc new file mode 100644 index 0000000..1bf4006 Binary files /dev/null and b/TP3310_Demo.si4project/cache/parse/UsrSrc_watchdog_watchdog.c.sisc differ diff --git a/UsrDoc/HEXBIN.bat b/UsrDoc/HEXBIN.bat new file mode 100644 index 0000000..b80788c --- /dev/null +++ b/UsrDoc/HEXBIN.bat @@ -0,0 +1,61 @@ +:: @File Name: HEXBIN.bat +:: @Version : 1.0 +:: @Author : Alex-XU +:: @Creat Date : 2023-03-30 +:: @Brief : +:: 在keil中,生成hex、bin文件到 Out 文件夹中. +:: 复制本文件到keil工程文件所在目录下(/Project目录下) +:: 在keil 魔法棒USER里填写 +:: .\Out.bat $K !P @P +:: $K hextobin转换工具位置 !P 工程名 @P 工程目录 +:: .\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\ + + +::关闭显示 +@echo off +::获取时间 +set year=%date:~0,4% +set month=%date:~5,2% +set day=%date:~8,2% +set hour=%time:~0,2% +set min=%time:~3,2% +set sec=%time:~6,2% +::创建输出文件夹 Out +if exist .\..\Out ( + echo exist +) else ( + mkdir .\..\Out +) + +::设置hex2bin_TP.exe位置 ,\Objects\hex2bin_TP.exe +set exe_location=%1 +::获取工程名 mcu.hex +set project_name=%2 +::设置.hex文件所在目录路径\Objects\ +set obj_path=%3 +::设置输出后的文件名 +set output_name=TP3102_%project_name%_%year%_%month%_%day%_%hour%_%min%_%sec% + +::将bin文件生成到HEXBIN文件夹 >nul屏蔽成功命令 .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 16 0 +%exe_location% .%obj_path%%project_name%.hex .%obj_path%%output_name%.bin 16 0 >nul +::将hex文件重命名 +ren .%obj_path%%project_name%.hex %output_name%.hex >nul + +ECHO Add CRC16 At the end of the .bin file +ECHO ------------------------------------- + +SET SREC_PATH=D:\Keil_v5\SREC + +for /f %%i in ('dir /s /b .%obj_path%%output_name%.bin') do ( +set indexdx=%%~zi +) + +ECHO --- size= %indexdx% Byte---- + +ECHO %SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary +%SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary + +::将hex文件复制到HEXBIN文件夹 +move .%obj_path%%output_name%.hex .\..\Out >nul +move .%obj_path%%output_name%.bin .\..\Out >nul +move .%obj_path%%output_name%_crc.bin .\..\Out >nul \ No newline at end of file diff --git a/UsrDoc/Review问题待办.xls b/UsrDoc/Review问题待办.xls new file mode 100644 index 0000000..6fb9e6c Binary files /dev/null and b/UsrDoc/Review问题待办.xls differ diff --git a/UsrDoc/SY8833A软件开发说明文档.doc b/UsrDoc/SY8833A软件开发说明文档.doc new file mode 100644 index 0000000..22b24ad Binary files /dev/null and b/UsrDoc/SY8833A软件开发说明文档.doc differ diff --git a/UsrDoc/SY8833A验证Checklist.xlsx b/UsrDoc/SY8833A验证Checklist.xlsx new file mode 100644 index 0000000..5f2378f Binary files /dev/null and b/UsrDoc/SY8833A验证Checklist.xlsx differ diff --git a/UsrDoc/Vox双向通信/SY8831A VOX通讯协议-V1.0.docx b/UsrDoc/Vox双向通信/SY8831A VOX通讯协议-V1.0.docx new file mode 100644 index 0000000..a1788b0 Binary files /dev/null and b/UsrDoc/Vox双向通信/SY8831A VOX通讯协议-V1.0.docx differ diff --git a/UsrDoc/Vox双向通信/SY8831A VOX通讯说明-V1.0.doc b/UsrDoc/Vox双向通信/SY8831A VOX通讯说明-V1.0.doc new file mode 100644 index 0000000..74de1e1 Binary files /dev/null and b/UsrDoc/Vox双向通信/SY8831A VOX通讯说明-V1.0.doc differ diff --git a/UsrDoc/Vox双向通信/SY8831A 透传协议-V1.0.docx b/UsrDoc/Vox双向通信/SY8831A 透传协议-V1.0.docx new file mode 100644 index 0000000..5eed139 Binary files /dev/null and b/UsrDoc/Vox双向通信/SY8831A 透传协议-V1.0.docx differ diff --git a/UsrDoc/Vox耳机相关功能状态.png b/UsrDoc/Vox耳机相关功能状态.png new file mode 100644 index 0000000..85e51a4 Binary files /dev/null and b/UsrDoc/Vox耳机相关功能状态.png differ diff --git a/UsrDoc/Vox耳机相关功能状态思维导图.pdf b/UsrDoc/Vox耳机相关功能状态思维导图.pdf new file mode 100644 index 0000000..7359832 Binary files /dev/null and b/UsrDoc/Vox耳机相关功能状态思维导图.pdf differ diff --git a/UsrDoc/Vox耳机相关功能状态思维导图.xmind b/UsrDoc/Vox耳机相关功能状态思维导图.xmind new file mode 100644 index 0000000..a786db4 Binary files /dev/null and b/UsrDoc/Vox耳机相关功能状态思维导图.xmind differ diff --git a/UsrDoc/readme.txt b/UsrDoc/readme.txt new file mode 100644 index 0000000..ea74d11 --- /dev/null +++ b/UsrDoc/readme.txt @@ -0,0 +1,8 @@ +工程文件应包含以下全部或部分文件夹: +UsrSrc:用户源文件,用来存放.c文件和其它源文件。main.c应放在这里; +UsrInc:用户头文件,用来存放.h文件; +UsrDoc:用户说明文档,用来存放用户在开发过程中书协的文档,包括软件开发说明、指令说明、版本更改说明等; +Src:引用库的源文件; +Inc:应用库的头文件; +Lib:应用的库文件。 +Out:编译生成的烧写程序(烧录到芯片中的firmware)。 \ No newline at end of file diff --git a/UsrDoc/功能测试/SY8833A Demo软件问题记录.xlsx b/UsrDoc/功能测试/SY8833A Demo软件问题记录.xlsx new file mode 100644 index 0000000..0dc7d9f Binary files /dev/null and b/UsrDoc/功能测试/SY8833A Demo软件问题记录.xlsx differ diff --git a/UsrDoc/功能测试/SY8833A测试说明20230713).doc b/UsrDoc/功能测试/SY8833A测试说明20230713).doc new file mode 100644 index 0000000..1879bce Binary files /dev/null and b/UsrDoc/功能测试/SY8833A测试说明20230713).doc differ diff --git a/UsrDoc/功能测试/~$8833A测试说明20230713).doc b/UsrDoc/功能测试/~$8833A测试说明20230713).doc new file mode 100644 index 0000000..329ef5f Binary files /dev/null and b/UsrDoc/功能测试/~$8833A测试说明20230713).doc differ diff --git a/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理).rar b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理).rar new file mode 100644 index 0000000..38e1c20 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理).rar differ diff --git a/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/-德芯成-D2160 - 优化——2023-3-25.xlsx b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/-德芯成-D2160 - 优化——2023-3-25.xlsx new file mode 100644 index 0000000..b41a46c Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/-德芯成-D2160 - 优化——2023-3-25.xlsx differ diff --git a/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 IP5518 PJD P94 H1.0_V1.3.pcb b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 IP5518 PJD P94 H1.0_V1.3.pcb new file mode 100644 index 0000000..c544a1d Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 IP5518 PJD P94 H1.0_V1.3.pcb differ diff --git a/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 _P94_T0.8_V1.0数显板.pcb b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 _P94_T0.8_V1.0数显板.pcb new file mode 100644 index 0000000..c499505 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 _P94_T0.8_V1.0数显板.pcb differ diff --git a/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/P98-1128(1).dxf b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/P98-1128(1).dxf new file mode 100644 index 0000000..c50ca88 --- /dev/null +++ b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/P98-1128(1).dxf @@ -0,0 +1,57154 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 104 + 9 +$DWGCODEPAGE + 3 +ANSI_936 + 9 +$INSBASE + 10 +-46.40660826349699 + 20 +65.50375871393178 + 30 +0.0 + 9 +$EXTMIN + 10 +-133.2000498853733 + 20 +-59.48958693768827 + 30 +-0.0000000349181948 + 9 +$EXTMAX + 10 +441.5001731495599 + 20 +145.4958274597401 + 30 +0.0000000814935747 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +11.6929133858 + 20 +8.267716535399999 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 0 + 9 +$LTSCALE + 40 +0.6431102362 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +0.2 + 9 +$TRACEWID + 40 +0.05 + 9 +$TEXTSTYLE + 7 +STANDARD + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +BYLAYER + 9 +$CECOLOR + 62 + 2 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +0.1875 + 9 +$DIMEXO + 40 +0.0730807087 + 9 +$DIMDLI + 40 +0.4443307087 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.2104724409 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +3.0 + 9 +$DIMCEN + 40 +0.1052362205 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 1 + 9 +$DIMTOH + 70 + 1 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 0 + 9 +$DIMZIN + 70 + 0 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +25.4 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 0 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +STANDARD + 9 +$DIMCLRD + 70 + 1 + 9 +$DIMCLRE + 70 + 1 + 9 +$DIMCLRT + 70 + 256 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.09 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 1 + 9 +$DIMTZIN + 70 + 0 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 4 + 9 +$DIMTDEC + 70 + 4 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 2 + 9 +$DIMTXSTY + 7 +STANDARD + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2459863.649754676 + 9 +$TDUCREATE + 40 +2459863.316421343 + 9 +$TDUPDATE + 40 +2459863.649754676 + 9 +$TDUUPDATE + 40 +2459863.316421343 + 9 +$TDINDWG + 40 +0.0770605671 + 9 +$TDUSRTIMER + 40 +0.0770569097 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 3 + 9 +$PDSIZE + 40 +0.3125 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$HANDSEED + 5 +671 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$PEXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{CD585DEE-45E6-4DE5-ACD3-38BD4AE0998B} + 9 +$VERSIONGUID + 2 +{5DA7A3D6-DE8E-4FD6-9466-9A8E390B637B} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 1 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 2 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 + 91 + 2 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 1024 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 0 +280 + 1 +281 + 0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 + 4095 + 91 + 0 +280 + 1 +281 + 0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 + 1152 + 91 + 3 +280 + 1 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 + 91 + 3 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DIMASSOC + 2 +AcDbDimAssoc + 3 +"AcDbDimAssoc|Product Desc: AcDim ARX App For Dimension|Company: Autodesk, Inc.|WEB Address: www.autodesk.com" + 90 + 0 + 91 + 5 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SOLID_BACKGROUND + 2 +AcDbSolidBackground + 3 +SCENEOE + 90 + 4095 + 91 + 0 +280 + 1 +281 + 0 + 0 +CLASS + 1 +NPOCOLLECTION + 2 +AcDbImpNonPersistentObjectsCollection + 3 +ObjectDBX Classes + 90 + 1153 + 91 + 0 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +2C +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +VPORT + 5 +2D +330 +2C +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*ACTIVE + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +58.79385415249069 + 22 +21.56742701797157 + 13 +0.0 + 23 +0.0 + 14 +1.0 + 24 +1.0 + 15 +0.0 + 25 +0.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +225.5695929518452 + 41 +1.898446833930704 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 1 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +27 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +28 +330 +27 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYBLOCK + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +29 +330 +27 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYLAYER + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +12 +330 +27 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +23 +330 +0 +100 +AcDbSymbolTable + 70 + 3 + 0 +LAYER + 5 +4 +330 +23 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +CONTINUOUS +370 + -3 +390 +5 + 0 +LAYER + 5 +1A9 +330 +23 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Defpoints + 70 + 0 + 62 + 7 + 6 +CONTINUOUS +290 + 0 +370 + -3 +390 +5 + 0 +LAYER + 5 +1C1 +330 +23 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +8_4_1_1 + 70 + 0 + 62 + 7 + 6 +CONTINUOUS +370 + -3 +390 +5 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +24 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +25 +330 +24 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STANDARD + 70 + 0 + 40 +0.0 + 41 +0.8 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +2A +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +2B +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +31 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +30 +330 +31 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +32 +330 +0 +100 +AcDbSymbolTable + 70 + 1 +100 +AcDbDimStyleTable + 71 + 1 +340 +33 + 0 +DIMSTYLE +105 +33 +102 +{ACAD_REACTORS +330 +19C +330 +1AD +330 +2FE +330 +641 +330 +651 +102 +} +330 +32 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +STANDARD + 70 + 0 + 41 +0.1875 + 47 +0.01 + 48 +0.01 + 78 + 4 +140 +0.15625 +271 + 2 +272 + 2 +284 + 4 +340 +25 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 5 + 0 +BLOCK_RECORD + 5 +2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +1D + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +22 + 0 +BLOCK_RECORD + 5 +19F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D0 +340 +0 + 0 +BLOCK_RECORD + 5 +1B0 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D1 +340 +0 + 0 +BLOCK_RECORD + 5 +301 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D2 +340 +0 + 0 +BLOCK_RECORD + 5 +644 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D3 +340 +0 + 0 +BLOCK_RECORD + 5 +654 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*D4 +340 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +3 +330 +2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +1C +330 +2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1A0 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbBlockBegin + 2 +*D0 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D0 + 1 + + 0 +LINE + 5 +1A1 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +333.0528305226283 + 20 +35.16355628578085 + 30 +0.0 + 11 +333.0528305226283 + 21 +39.88549775261862 + 31 +0.0 + 0 +LINE + 5 +1A2 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +332.2528305224283 + 20 +35.16355628578085 + 30 +0.0 + 11 +332.2528305224283 + 21 +39.88549775261862 + 31 +0.0 + 0 +LINE + 5 +1A3 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +332.8653305226282 + 20 +39.67502531171863 + 30 +0.0 + 11 +332.4403305224283 + 21 +39.67502531171863 + 31 +0.0 + 0 +LINE + 5 +1A4 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +332.2528305224283 + 20 +39.67502531171863 + 30 +0.0 + 11 +332.0653305224283 + 21 +39.67502531171863 + 31 +0.0 + 0 +SOLID + 5 +1A5 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +332.8653305226282 + 20 +39.70627531171863 + 30 +0.0 + 11 +332.8653305226282 + 21 +39.64377531171863 + 31 +0.0 + 12 +333.0528305226283 + 22 +39.67502531171863 + 32 +0.0 + 13 +333.0528305226283 + 23 +39.67502531171863 + 33 +0.0 + 0 +SOLID + 5 +1A6 +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +332.4403305224283 + 20 +39.70627531171863 + 30 +0.0 + 11 +332.4403305224283 + 21 +39.64377531171863 + 31 +0.0 + 12 +332.2528305224283 + 22 +39.67502531171863 + 32 +0.0 + 13 +332.2528305224283 + 23 +39.67502531171863 + 33 +0.0 + 0 +MTEXT + 5 +1A7 +330 +19F +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +326.7753305224283 + 20 +39.67502531171863 + 30 +0.0 + 40 +3.0 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;0.8000 + 73 + 1 + 44 +1.0 + 90 + 1 + 63 + 1 + 45 +1.25 +441 + 3805196 + 0 +POINT + 5 +1A8 +330 +19F +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +333.0528305226283 + 20 +35.09047557708085 + 30 +0.0 + 0 +POINT + 5 +1AA +330 +19F +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +332.2528305224283 + 20 +35.09047557708085 + 30 +0.0 + 0 +POINT + 5 +1AB +330 +19F +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +332.2528305224283 + 20 +39.67502531171863 + 30 +0.0 + 0 +ENDBLK + 5 +1AC +330 +19F +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1B1 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbBlockBegin + 2 +*D1 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D1 + 1 + + 0 +LINE + 5 +1B2 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +306.0694120181483 + 20 +33.66355628604085 + 30 +0.0 + 11 +306.0694120181483 + 21 +40.0398807020344 + 31 +0.0 + 0 +LINE + 5 +1B3 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +300.9694120187783 + 20 +33.66355628604085 + 30 +0.0 + 11 +300.9694120187783 + 21 +40.0398807020344 + 31 +0.0 + 0 +LINE + 5 +1B4 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +305.8819120181483 + 20 +39.8294082611344 + 30 +0.0 + 11 +301.1569120187783 + 21 +39.8294082611344 + 31 +0.0 + 0 +LINE + 5 +1B5 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +300.9694120187783 + 20 +39.8294082611344 + 30 +0.0 + 11 +300.7819120187783 + 21 +39.8294082611344 + 31 +0.0 + 0 +SOLID + 5 +1B6 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +305.8819120181483 + 20 +39.86065826113441 + 30 +0.0 + 11 +305.8819120181483 + 21 +39.79815826113441 + 31 +0.0 + 12 +306.0694120181483 + 22 +39.8294082611344 + 32 +0.0 + 13 +306.0694120181483 + 23 +39.8294082611344 + 33 +0.0 + 0 +SOLID + 5 +1B7 +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +301.1569120187783 + 20 +39.86065826113441 + 30 +0.0 + 11 +301.1569120187783 + 21 +39.79815826113441 + 31 +0.0 + 12 +300.9694120187783 + 22 +39.8294082611344 + 32 +0.0 + 13 +300.9694120187783 + 23 +39.8294082611344 + 33 +0.0 + 0 +MTEXT + 5 +1B8 +330 +1B0 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +295.6919120187783 + 20 +39.8294082611344 + 30 +0.0 + 40 +3.0 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;5.1000 + 73 + 1 + 44 +1.0 + 90 + 1 + 63 + 1 + 45 +1.25 +441 + 3805196 + 0 +POINT + 5 +1B9 +330 +1B0 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +306.0694120181483 + 20 +33.59047557734085 + 30 +0.0 + 0 +POINT + 5 +1BA +330 +1B0 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +300.9694120187783 + 20 +33.59047557734085 + 30 +0.0 + 0 +POINT + 5 +1BB +330 +1B0 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +300.9694120187783 + 20 +39.8294082611344 + 30 +0.0 + 0 +ENDBLK + 5 +1BC +330 +1B0 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +302 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbBlockBegin + 2 +*D2 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D2 + 1 + + 0 +LINE + 5 +303 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +422.5833546694812 + 20 +35.92165724840457 + 30 +0.0 + 11 +422.5833546694812 + 21 +38.65332569443808 + 31 +0.0 + 0 +LINE + 5 +304 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +421.7833546692816 + 20 +35.92165724840457 + 30 +0.0 + 11 +421.7833546692816 + 21 +38.65332569443808 + 31 +0.0 + 0 +LINE + 5 +305 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +422.3958546694815 + 20 +38.44285325353808 + 30 +0.0 + 11 +421.9708546692817 + 21 +38.44285325353808 + 31 +0.0 + 0 +LINE + 5 +306 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +421.7833546692816 + 20 +38.44285325353808 + 30 +0.0 + 11 +421.5958546692816 + 21 +38.44285325353808 + 31 +0.0 + 0 +SOLID + 5 +307 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +422.3958546694815 + 20 +38.47410325353808 + 30 +0.0 + 11 +422.3958546694815 + 21 +38.41160325353808 + 31 +0.0 + 12 +422.5833546694812 + 22 +38.44285325353808 + 32 +0.0 + 13 +422.5833546694812 + 23 +38.44285325353808 + 33 +0.0 + 0 +SOLID + 5 +308 +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +421.9708546692817 + 20 +38.47410325353808 + 30 +0.0 + 11 +421.9708546692817 + 21 +38.41160325353808 + 31 +0.0 + 12 +421.7833546692816 + 22 +38.44285325353808 + 32 +0.0 + 13 +421.7833546692816 + 23 +38.44285325353808 + 33 +0.0 + 0 +MTEXT + 5 +309 +330 +301 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +416.3058546692816 + 20 +38.44285325353808 + 30 +0.0 + 40 +3.0 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;0.8000 + 73 + 1 + 44 +1.0 + 90 + 1 + 63 + 1 + 45 +1.25 +441 + 9308504 + 0 +POINT + 5 +30A +330 +301 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +422.5833546694812 + 20 +35.84857653970456 + 30 +0.0 + 0 +POINT + 5 +30B +330 +301 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +421.7833546692816 + 20 +35.84857653970456 + 30 +0.0 + 0 +POINT + 5 +30C +330 +301 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +421.7833546692816 + 20 +38.44285325353808 + 30 +0.0 + 0 +ENDBLK + 5 +30D +330 +301 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +645 +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbBlockBegin + 2 +*D3 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D3 + 1 + + 0 +LINE + 5 +646 +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +126.8457039738117 + 30 +0.0 + 11 +-95.15660826393698 + 21 +142.9520920987883 + 31 +0.0 + 0 +LINE + 5 +647 +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-41.15660826313699 + 20 +126.8457039738117 + 30 +0.0 + 11 +-41.15660826313699 + 21 +142.9520920987883 + 31 +0.0 + 0 +LINE + 5 +648 +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-94.96910826393699 + 20 +142.7416196578883 + 30 +0.0 + 11 +-74.64660826353697 + 21 +142.7416196578883 + 31 +0.0 + 0 +LINE + 5 +649 +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-41.34410826313699 + 20 +142.7416196578883 + 30 +0.0 + 11 +-61.66660826353698 + 21 +142.7416196578883 + 31 +0.0 + 0 +SOLID + 5 +64A +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +-94.96910826393699 + 20 +142.7728696578883 + 30 +0.0 + 11 +-94.96910826393699 + 21 +142.7103696578883 + 31 +0.0 + 12 +-95.15660826393698 + 22 +142.7416196578883 + 32 +0.0 + 13 +-95.15660826393698 + 23 +142.7416196578883 + 33 +0.0 + 0 +SOLID + 5 +64B +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +-41.34410826313699 + 20 +142.7728696578883 + 30 +0.0 + 11 +-41.34410826313699 + 21 +142.7103696578883 + 31 +0.0 + 12 +-41.15660826313699 + 22 +142.7416196578883 + 32 +0.0 + 13 +-41.15660826313699 + 23 +142.7416196578883 + 33 +0.0 + 0 +MTEXT + 5 +64C +330 +644 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +-68.15660826353698 + 20 +142.7416196578883 + 30 +0.0 + 40 +3.0 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;54.0000 + 73 + 1 + 44 +1.0 + 90 + 1 + 63 + 1 + 45 +1.25 +441 + 480656 + 0 +POINT + 5 +64D +330 +644 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +-95.15660826393698 + 20 +126.7726232651117 + 30 +0.0 + 0 +POINT + 5 +64E +330 +644 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +-41.15660826313699 + 20 +126.7726232651117 + 30 +0.0 + 0 +POINT + 5 +64F +330 +644 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +-41.15660826313699 + 20 +142.7416196578883 + 30 +0.0 + 0 +ENDBLK + 5 +650 +330 +644 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +655 +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbBlockBegin + 2 +*D4 + 70 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*D4 + 1 + + 0 +LINE + 5 +656 +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-41.08352755443699 + 20 +126.7726232651117 + 30 +0.0 + 11 +-28.53645675271314 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +657 +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-41.08352755443699 + 20 +125.7726232661317 + 30 +0.0 + 11 +-28.53645675271314 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +658 +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-28.74692919361314 + 20 +126.5851232651117 + 30 +0.0 + 11 +-28.74692919361314 + 21 +125.9601232661317 + 31 +0.0 + 0 +LINE + 5 +659 +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-28.74692919361314 + 20 +125.7726232661317 + 30 +0.0 + 11 +-28.74692919361314 + 21 +125.5851232661317 + 31 +0.0 + 0 +LINE + 5 +65A +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +370 + -2 +100 +AcDbLine + 10 +-28.74692919361314 + 20 +125.5851232661317 + 30 +0.0 + 11 +-28.93442919361314 + 21 +125.5851232661317 + 31 +0.0 + 0 +SOLID + 5 +65B +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +-28.77817919361314 + 20 +126.5851232651117 + 30 +0.0 + 11 +-28.71567919361314 + 21 +126.5851232651117 + 31 +0.0 + 12 +-28.74692919361314 + 22 +126.7726232651117 + 32 +0.0 + 13 +-28.74692919361314 + 23 +126.7726232651117 + 33 +0.0 + 0 +SOLID + 5 +65C +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbTrace + 10 +-28.77817919361314 + 20 +125.9601232661317 + 30 +0.0 + 11 +-28.71567919361314 + 21 +125.9601232661317 + 31 +0.0 + 12 +-28.74692919361314 + 22 +125.7726232661317 + 32 +0.0 + 13 +-28.74692919361314 + 23 +125.7726232661317 + 33 +0.0 + 0 +MTEXT + 5 +65D +330 +654 +100 +AcDbEntity + 8 +0 +100 +AcDbMText + 10 +-33.82442919361317 + 20 +125.5851232661317 + 30 +0.0 + 40 +3.0 + 41 +0.0 + 71 + 5 + 72 + 1 + 1 +\A1;1.0000 + 73 + 1 + 44 +1.0 + 90 + 1 + 63 + 1 + 45 +1.25 +441 + 10685392 + 0 +POINT + 5 +65E +330 +654 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +-41.15660826313699 + 20 +126.7726232651117 + 30 +0.0 + 0 +POINT + 5 +65F +330 +654 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +-41.15660826313699 + 20 +125.7726232661317 + 30 +0.0 + 0 +POINT + 5 +660 +330 +654 +100 +AcDbEntity + 8 +Defpoints + 62 + 0 +100 +AcDbPoint + 10 +-28.74692919361314 + 20 +125.7726232661317 + 30 +0.0 + 0 +ENDBLK + 5 +661 +330 +654 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +MTEXT + 5 +49 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbMText + 10 +281.3119931509437 + 20 +22.99029722688465 + 30 +0.0 + 40 +2.0 + 41 +9.227781105470851 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;ͷ} + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +3.805500130401236 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +LINE + 5 +4A +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbLine + 10 +303.4361010892859 + 20 +30.03724977443818 + 30 +0.0 + 11 +288.3327385033039 + 21 +30.01609768997758 + 31 +0.0 + 0 +MTEXT + 5 +4B +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbMText + 10 +279.0341446060257 + 20 +31.93396832955011 + 30 +0.0 + 40 +2.0 + 41 +10.10450233972608 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;} + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +4C +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbLine + 10 +240.6504641137485 + 20 +22.5154862010652 + 30 +0.0 + 11 +228.5604994622136 + 21 +22.67862810099222 + 31 +0.0 + 0 +MTEXT + 5 +4D +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbMText + 10 +224.6265817968483 + 20 +24.38022684927047 + 30 +0.0 + 40 +2.0 + 41 +7.678172480202871 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;\C5;} + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +4E +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbLine + 10 +285.7004175644592 + 20 +22.35523231357683 + 30 +0.0 + 11 +303.7900396087536 + 21 +33.1141504661162 + 31 +0.0 + 0 +LINE + 5 +4F +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbLine + 10 +285.7227765662387 + 20 +20.36805131961728 + 30 +0.0 + 11 +303.6237026450769 + 21 +10.42723748530469 + 31 +0.0 + 0 +LINE + 5 +50 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 4 +100 +AcDbLine + 10 +302.7737026449703 + 20 +14.44983865353134 + 30 +0.0 + 11 +287.6367568357782 + 21 +13.70375192506844 + 31 +0.0 + 0 +MTEXT + 5 +51 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbMText + 10 +277.1722661812537 + 20 +15.41705009093744 + 30 +0.0 + 40 +2.0 + 41 +13.48574029770225 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;βλ} + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +3.761275346347018 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +LINE + 5 +52 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 4 +100 +AcDbLine + 10 +287.6367568357782 + 20 +13.70375192506844 + 30 +0.0 + 11 +302.0171642444103 + 21 +13.30979890923134 + 31 +0.0 + 0 +LINE + 5 +53 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 4 +100 +AcDbLine + 10 +304.4694120190183 + 20 +17.08861677320827 + 30 +0.0 + 11 +287.3820100297057 + 21 +5.33630626151057 + 31 +0.0 + 0 +MTEXT + 5 +54 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 4 +100 +AcDbMText + 10 +281.7216109040209 + 20 +6.613755339371205 + 30 +0.0 + 40 +2.0 + 41 +19.18130661522264 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;ߣݶλãλÿɸģ} + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +55 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +302.0171642444103 + 20 +13.30979890923134 + 30 +0.0 + 11 +302.717164244797 + 21 +13.30980017669134 + 31 +0.0 + 0 +LINE + 5 +56 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbLine + 10 +304.3680963488787 + 20 +27.27647267437965 + 30 +0.0 + 11 +309.8180388410447 + 21 +27.84983938459133 + 31 +0.0 + 0 +MTEXT + 5 +57 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbMText + 10 +309.8180388410447 + 20 +27.84983938459133 + 30 +0.0 + 40 +2.0 + 41 +16.08725205039036 + 71 + 1 + 72 + 5 + 1 +LED{\fSimSun|b0|i0|c134|p2;} + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +58 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +239.7270137371992 + 20 +11.17512732771617 + 30 +0.0 + 11 +239.1270137370492 + 21 +11.17512732771617 + 31 +0.0 + 0 +LINE + 5 +59 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.1270137380492 + 20 +11.17512732771617 + 30 +0.0 + 11 +243.7270137381993 + 21 +11.17512732771617 + 31 +0.0 + 0 +LINE + 5 +5A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +239.8204753371692 + 20 +12.83509306797617 + 30 +0.0 + 11 +240.5204753379792 + 21 +12.83509306797617 + 31 +0.0 + 0 +LINE + 5 +5B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +242.3335521372692 + 20 +12.83509306797617 + 30 +0.0 + 11 +243.0335521380793 + 21 +12.83509306797617 + 31 +0.0 + 0 +LINE + 5 +5C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.0335521380793 + 20 +13.53509252395617 + 30 +0.0 + 11 +242.3335521372692 + 21 +13.53509252395617 + 31 +0.0 + 0 +LINE + 5 +5D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +240.5204753379792 + 20 +13.53509252395617 + 30 +0.0 + 11 +239.8204753371692 + 21 +13.53509252395617 + 31 +0.0 + 0 +LINE + 5 +5E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +239.1270137370492 + 20 +12.87253046706618 + 30 +0.0 + 11 +238.8770137379392 + 21 +13.87253046731617 + 31 +0.0 + 0 +LINE + 5 +5F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +238.8770137379392 + 20 +25.79412559156617 + 30 +0.0 + 11 +238.8770137379392 + 21 +13.87253046731617 + 31 +0.0 + 0 +LINE + 5 +60 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +238.8770137379392 + 20 +28.55093534209617 + 30 +0.0 + 11 +238.8770137379392 + 21 +33.72513236604616 + 31 +0.0 + 0 +LINE + 5 +61 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +239.1270137370492 + 20 +11.17512732771617 + 30 +0.0 + 11 +239.1270137370492 + 21 +9.974043810406179 + 31 +0.0 + 0 +LINE + 5 +62 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +239.4270137377592 + 20 +25.22513236582617 + 30 +0.0 + 11 +239.4270137377592 + 21 +21.22513236609618 + 31 +0.0 + 0 +LINE + 5 +63 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +239.7270137371992 + 20 +11.17512732771617 + 30 +0.0 + 11 +239.7270137371992 + 21 +12.27253046691617 + 31 +0.0 + 0 +LINE + 5 +64 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +239.8204753371692 + 20 +13.53509252395617 + 30 +0.0 + 11 +239.8204753371692 + 21 +12.83509306797617 + 31 +0.0 + 0 +LINE + 5 +65 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +240.5204753379792 + 20 +12.83509306797617 + 30 +0.0 + 11 +240.5204753379792 + 21 +13.53509252395617 + 31 +0.0 + 0 +LINE + 5 +66 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +239.4270137377592 + 20 +21.22513236609618 + 30 +0.0 + 11 +243.4270137374892 + 21 +21.22513236609618 + 31 +0.0 + 0 +LINE + 5 +67 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +242.3335521372692 + 20 +13.53509252395617 + 30 +0.0 + 11 +242.3335521372692 + 21 +12.83509306797617 + 31 +0.0 + 0 +LINE + 5 +68 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.0335521380793 + 20 +12.83509306797617 + 30 +0.0 + 11 +243.0335521380793 + 21 +13.53509252395617 + 31 +0.0 + 0 +LINE + 5 +69 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.1270137380492 + 20 +12.27253046691617 + 30 +0.0 + 11 +243.1270137380492 + 21 +11.17512732771617 + 31 +0.0 + 0 +LINE + 5 +6A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +243.4270137374892 + 20 +21.22513236609618 + 30 +0.0 + 11 +243.4270137374892 + 21 +25.22513236582617 + 31 +0.0 + 0 +LINE + 5 +6B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.7270137381993 + 20 +11.17512732771617 + 30 +0.0 + 11 +243.7270137381993 + 21 +9.974166201576172 + 31 +0.0 + 0 +LINE + 5 +6C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.9770137373092 + 20 +33.72513236604616 + 30 +0.0 + 11 +243.9770137373092 + 21 +19.25093534167617 + 31 +0.0 + 0 +LINE + 5 +6D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.9770137373092 + 20 +13.87253046731617 + 30 +0.0 + 11 +243.9770137373092 + 21 +16.49412559241617 + 31 +0.0 + 0 +LINE + 5 +6E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +243.4270137374892 + 20 +25.22513236582617 + 30 +0.0 + 11 +239.4270137377592 + 21 +25.22513236582617 + 31 +0.0 + 0 +LINE + 5 +6F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +243.9770137373092 + 20 +13.87253046731617 + 30 +0.0 + 11 +243.7270137381993 + 21 +12.87253046706618 + 31 +0.0 + 0 +LINE + 5 +70 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +240.3770137376792 + 20 +35.22513236578616 + 30 +0.0 + 11 +242.4770137375692 + 21 +35.22513236578616 + 31 +0.0 + 0 +LINE + 5 +71 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +8.904452565036171 + 30 +0.0 + 11 +264.9044336807092 + 21 +8.904452565036171 + 31 +0.0 + 0 +LINE + 5 +72 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +8.996713071396172 + 30 +0.0 + 11 +264.1044336805093 + 21 +8.996713071396172 + 31 +0.0 + 0 +LINE + 5 +73 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +9.772530466926175 + 30 +0.0 + 11 +264.9044336807092 + 21 +9.772530466926175 + 31 +0.0 + 0 +LINE + 5 +74 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.7044336809093 + 20 +9.872530467586171 + 30 +0.0 + 11 +265.2044336801492 + 21 +9.872530467586171 + 31 +0.0 + 0 +LINE + 5 +75 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +9.974043810406179 + 30 +0.0 + 11 +264.9044336807092 + 21 +9.974043810406179 + 31 +0.0 + 0 +LINE + 5 +76 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +10.07253046763616 + 30 +0.0 + 11 +265.9044336809592 + 21 +10.07253046763616 + 31 +0.0 + 0 +LINE + 5 +77 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +11.17512732771617 + 30 +0.0 + 11 +264.1044336805093 + 21 +11.17512732771617 + 31 +0.0 + 0 +LINE + 5 +78 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.9044336809592 + 20 +12.22253046658617 + 30 +0.0 + 11 +265.2044336801492 + 21 +12.22253046658617 + 31 +0.0 + 0 +LINE + 5 +79 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +12.27253046691617 + 30 +0.0 + 11 +264.1044336805093 + 21 +12.27253046691617 + 31 +0.0 + 0 +LINE + 5 +7A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +12.42253046663617 + 30 +0.0 + 11 +265.7044336809093 + 21 +12.42253046663617 + 31 +0.0 + 0 +LINE + 5 +7B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +12.52253046729617 + 30 +0.0 + 11 +264.9044336807092 + 21 +12.52253046729617 + 31 +0.0 + 0 +LINE + 5 +7C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +12.87253046706618 + 30 +0.0 + 11 +264.9044336807092 + 21 +12.87253046706618 + 31 +0.0 + 0 +LINE + 5 +7D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +13.87253046731617 + 30 +0.0 + 11 +264.1044336805093 + 21 +13.87253046731617 + 31 +0.0 + 0 +LINE + 5 +7E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.4044336801992 + 20 +16.22513236611618 + 30 +0.0 + 11 +264.9044336807092 + 21 +16.22513236611618 + 31 +0.0 + 0 +LINE + 5 +7F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +16.49412559241617 + 30 +0.0 + 11 +264.1044336805093 + 21 +16.49412559241617 + 31 +0.0 + 0 +LINE + 5 +80 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +16.96943761740618 + 30 +0.0 + 11 +264.9044336807092 + 21 +16.96943761740618 + 31 +0.0 + 0 +LINE + 5 +81 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +266.4044336804492 + 20 +28.82513236672617 + 30 +0.0 + 11 +266.3044336810592 + 21 +28.72513236606617 + 31 +0.0 + 0 +LINE + 5 +82 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +267.2044336806493 + 20 +29.12513236616618 + 30 +0.0 + 11 +267.1044336799893 + 21 +29.02513236677616 + 31 +0.0 + 0 +LINE + 5 +83 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.4044336801992 + 20 +18.72513236610617 + 30 +0.0 + 11 +264.9044336807092 + 21 +18.72513236610617 + 31 +0.0 + 0 +LINE + 5 +84 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +18.77562331668617 + 30 +0.0 + 11 +264.1044336805093 + 21 +18.77562331668617 + 31 +0.0 + 0 +LINE + 5 +85 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +19.25093534167617 + 30 +0.0 + 11 +264.9044336807092 + 21 +19.25093534167617 + 31 +0.0 + 0 +LINE + 5 +86 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +263.1044336802593 + 20 +21.22513236609618 + 30 +0.0 + 11 +263.1044336802593 + 21 +25.22513236582617 + 31 +0.0 + 0 +LINE + 5 +87 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +8.904494289616167 + 30 +0.0 + 11 +264.1044336805093 + 21 +35.22513236578616 + 31 +0.0 + 0 +LINE + 5 +88 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +263.1044336802593 + 20 +21.22513236609618 + 30 +0.0 + 11 +264.1044336805093 + 21 +21.22513236609618 + 31 +0.0 + 0 +LINE + 5 +89 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +8.904494242626173 + 30 +0.0 + 11 +264.9044336807092 + 21 +35.22513236578616 + 31 +0.0 + 0 +LINE + 5 +8A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +9.772530466926175 + 30 +0.0 + 11 +265.2044336801492 + 21 +12.52253046729617 + 31 +0.0 + 0 +LINE + 5 +8B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +32.22513236630617 + 30 +0.0 + 11 +265.2044336801492 + 21 +34.97513236667618 + 31 +0.0 + 0 +LINE + 5 +8C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.4044336801992 + 20 +16.22513236611618 + 30 +0.0 + 11 +265.4044336801992 + 21 +18.72513236610617 + 31 +0.0 + 0 +LINE + 5 +8D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.4044336801992 + 20 +26.77513236589618 + 30 +0.0 + 11 +265.4044336801992 + 21 +27.77513236614618 + 31 +0.0 + 0 +LINE + 5 +8E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.7044336809093 + 20 +9.872530467586171 + 30 +0.0 + 11 +265.7044336809093 + 21 +12.42253046663617 + 31 +0.0 + 0 +LINE + 5 +8F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.7044336809093 + 20 +32.32513236569617 + 30 +0.0 + 11 +265.7044336809093 + 21 +34.87513236601618 + 31 +0.0 + 0 +LINE + 5 +90 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.9044336809592 + 20 +34.67513236596617 + 30 +0.0 + 11 +265.9044336809592 + 21 +32.52513236574618 + 31 +0.0 + 0 +LINE + 5 +91 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.9044336809592 + 20 +12.22253046658617 + 30 +0.0 + 11 +265.9044336809592 + 21 +10.07253046763616 + 31 +0.0 + 0 +LINE + 5 +92 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +266.3044336810592 + 20 +28.72513236606617 + 30 +0.0 + 11 +266.3044336810592 + 21 +30.22513236580617 + 31 +0.0 + 0 +LINE + 5 +93 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +266.4044336804492 + 20 +28.82513236672617 + 30 +0.0 + 11 +266.4044336804492 + 21 +30.12513236641618 + 31 +0.0 + 0 +LINE + 5 +94 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +267.1044336799893 + 20 +29.02513236677616 + 30 +0.0 + 11 +267.1044336799893 + 21 +29.92513236636618 + 31 +0.0 + 0 +LINE + 5 +95 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +267.2044336806493 + 20 +29.12513236616618 + 30 +0.0 + 11 +267.2044336806493 + 21 +29.82513236570618 + 31 +0.0 + 0 +LINE + 5 +96 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +263.1044336802593 + 20 +25.22513236582617 + 30 +0.0 + 11 +264.1044336805093 + 21 +25.22513236582617 + 31 +0.0 + 0 +LINE + 5 +97 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.4044336801992 + 20 +26.77513236589618 + 30 +0.0 + 11 +264.9044336807092 + 21 +26.77513236589618 + 31 +0.0 + 0 +LINE + 5 +98 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.4044336801992 + 20 +27.77513236614618 + 30 +0.0 + 11 +264.9044336807092 + 21 +27.77513236614618 + 31 +0.0 + 0 +LINE + 5 +99 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +266.3044336810592 + 20 +28.72513236606617 + 30 +0.0 + 11 +264.9044336807092 + 21 +28.72513236606617 + 31 +0.0 + 0 +LINE + 5 +9A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +267.1044336799893 + 20 +29.02513236677616 + 30 +0.0 + 11 +266.4044336804492 + 21 +29.02513236677616 + 31 +0.0 + 0 +LINE + 5 +9B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +266.3044336810592 + 20 +30.22513236580617 + 30 +0.0 + 11 +266.4044336804492 + 21 +30.12513236641618 + 31 +0.0 + 0 +LINE + 5 +9C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +267.1044336799893 + 20 +29.92513236636618 + 30 +0.0 + 11 +267.2044336806493 + 21 +29.82513236570618 + 31 +0.0 + 0 +LINE + 5 +9D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +267.1044336799893 + 20 +29.92513236636618 + 30 +0.0 + 11 +266.4044336804492 + 21 +29.92513236636618 + 31 +0.0 + 0 +LINE + 5 +9E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +266.3044336810592 + 20 +30.22513236580617 + 30 +0.0 + 11 +264.9044336807092 + 21 +30.22513236580617 + 31 +0.0 + 0 +LINE + 5 +9F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +32.22513236630617 + 30 +0.0 + 11 +264.9044336807092 + 21 +32.22513236630617 + 31 +0.0 + 0 +LINE + 5 +A0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.7044336809093 + 20 +32.32513236569617 + 30 +0.0 + 11 +265.2044336801492 + 21 +32.32513236569617 + 31 +0.0 + 0 +LINE + 5 +A1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +32.52513236574618 + 30 +0.0 + 11 +265.9044336809592 + 21 +32.52513236574618 + 31 +0.0 + 0 +LINE + 5 +A2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.9044336807092 + 20 +33.72513236604616 + 30 +0.0 + 11 +264.1044336805093 + 21 +33.72513236604616 + 31 +0.0 + 0 +LINE + 5 +A3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.9044336809592 + 20 +34.67513236596617 + 30 +0.0 + 11 +265.2044336801492 + 21 +34.67513236596617 + 31 +0.0 + 0 +LINE + 5 +A4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +34.87513236601618 + 30 +0.0 + 11 +265.7044336809093 + 21 +34.87513236601618 + 31 +0.0 + 0 +LINE + 5 +A5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +265.2044336801492 + 20 +34.97513236667618 + 30 +0.0 + 11 +264.9044336807092 + 21 +34.97513236667618 + 31 +0.0 + 0 +LINE + 5 +A6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +264.1044336805093 + 20 +35.22513236578616 + 30 +0.0 + 11 +264.9044336807092 + 21 +35.22513236578616 + 31 +0.0 + 0 +LINE + 5 +A7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.4444120182183 + 20 +9.637873678220866 + 30 +0.0 + 11 +302.5944120187083 + 21 +9.637873678220866 + 31 +0.0 + 0 +LINE + 5 +A8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.1444120187783 + 20 +9.737873678880866 + 30 +0.0 + 11 +302.8944120181483 + 21 +9.737873678880866 + 31 +0.0 + 0 +LINE + 5 +A9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.6944120180983 + 20 +9.937873678930856 + 30 +0.0 + 11 +304.3444120188283 + 21 +9.937873678930856 + 31 +0.0 + 0 +LINE + 5 +AA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.8194120180384 + 20 +11.04047053901086 + 30 +0.0 + 11 +301.2194120191583 + 21 +11.04047053901086 + 31 +0.0 + 0 +LINE + 5 +AB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.2194120188883 + 20 +11.04047053901086 + 30 +0.0 + 11 +305.8194120190383 + 21 +11.04047053901086 + 31 +0.0 + 0 +LINE + 5 +AC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.3444120188283 + 20 +12.08787367788086 + 30 +0.0 + 11 +302.6944120180983 + 21 +12.08787367788086 + 31 +0.0 + 0 +LINE + 5 +AD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.8944120181483 + 20 +12.28787367793086 + 30 +0.0 + 11 +304.1444120187783 + 21 +12.28787367793086 + 31 +0.0 + 0 +LINE + 5 +AE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.5944120187083 + 20 +12.38787367859086 + 30 +0.0 + 11 +304.4444120182183 + 21 +12.38787367859086 + 31 +0.0 + 0 +LINE + 5 +AF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +305.1259504189183 + 20 +12.70043627927086 + 30 +0.0 + 11 +304.4259504193783 + 21 +12.70043627927086 + 31 +0.0 + 0 +LINE + 5 +B0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +302.6128736188183 + 20 +12.70043627927086 + 30 +0.0 + 11 +301.9128736180083 + 21 +12.70043627927086 + 31 +0.0 + 0 +LINE + 5 +B1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +301.9128736180083 + 20 +13.40043510152085 + 30 +0.0 + 11 +302.6128736188183 + 21 +13.40043636898086 + 31 +0.0 + 0 +LINE + 5 +B2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +304.4259504193783 + 20 +13.40043636898086 + 30 +0.0 + 11 +305.1259504189183 + 21 +13.40043510152085 + 31 +0.0 + 0 +LINE + 5 +B3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8694120180983 + 20 +16.09047557741087 + 30 +0.0 + 11 +304.4694120190183 + 21 +16.09047557741087 + 31 +0.0 + 0 +LINE + 5 +B4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.2194120191583 + 20 +12.73787367836087 + 30 +0.0 + 11 +300.9694120187783 + 21 +13.73787367861087 + 31 +0.0 + 0 +LINE + 5 +B5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.4694120190183 + 20 +18.59047557740086 + 30 +0.0 + 11 +305.8694120180983 + 21 +18.59047557740086 + 31 +0.0 + 0 +LINE + 5 +B6 +102 +{ACAD_REACTORS +330 +1AF +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +300.9694120187783 + 20 +33.59047557734085 + 30 +0.0 + 11 +300.9694120187783 + 21 +19.11627855297087 + 31 +0.0 + 0 +LINE + 5 +B7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +300.9694120187783 + 20 +13.73787367861087 + 30 +0.0 + 11 +300.9694120187783 + 21 +16.35946880371086 + 31 +0.0 + 0 +LINE + 5 +B8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.2194120191583 + 20 +11.04047053901086 + 30 +0.0 + 11 +301.2194120191583 + 21 +9.839387021700872 + 31 +0.0 + 0 +LINE + 5 +B9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.8194120180384 + 20 +12.13787367821086 + 30 +0.0 + 11 +301.8194120180384 + 21 +11.04047053901086 + 31 +0.0 + 0 +LINE + 5 +BA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +301.9128736180083 + 20 +12.70043627927086 + 30 +0.0 + 11 +301.9128736180083 + 21 +13.40043510152085 + 31 +0.0 + 0 +LINE + 5 +BB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +302.5194120188483 + 20 +26.64047557719087 + 30 +0.0 + 11 +302.5194120188483 + 21 +27.64047557744087 + 31 +0.0 + 0 +LINE + 5 +BC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.5944120187083 + 20 +9.637873678220866 + 30 +0.0 + 11 +302.5944120187083 + 21 +12.38787367859086 + 31 +0.0 + 0 +LINE + 5 +BD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.5944120187083 + 20 +32.09047557760086 + 30 +0.0 + 11 +302.5944120187083 + 21 +34.84047557797088 + 31 +0.0 + 0 +LINE + 5 +BE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +302.6128736188183 + 20 +13.40043636898086 + 30 +0.0 + 11 +302.6128736188183 + 21 +12.70043627927086 + 31 +0.0 + 0 +LINE + 5 +BF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.6944120180983 + 20 +9.937873678930856 + 30 +0.0 + 11 +302.6944120180983 + 21 +12.08787367788086 + 31 +0.0 + 0 +LINE + 5 +C0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.6944120180983 + 20 +32.39047557704086 + 30 +0.0 + 11 +302.6944120180983 + 21 +34.54047557726087 + 31 +0.0 + 0 +LINE + 5 +C1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.8944120181483 + 20 +34.74047557731086 + 30 +0.0 + 11 +302.8944120181483 + 21 +32.19047557699087 + 31 +0.0 + 0 +LINE + 5 +C2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.8944120181483 + 20 +12.28787367793086 + 30 +0.0 + 11 +302.8944120181483 + 21 +9.737873678880866 + 31 +0.0 + 0 +LINE + 5 +C3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +303.3194120190483 + 20 +27.64047557744087 + 30 +0.0 + 11 +303.3194120190483 + 21 +26.64047557719087 + 31 +0.0 + 0 +LINE + 5 +C4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +303.7194120191483 + 20 +26.64047557719087 + 30 +0.0 + 11 +303.7194120191483 + 21 +27.64047557744087 + 31 +0.0 + 0 +LINE + 5 +C5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.1444120187783 + 20 +9.737873678880866 + 30 +0.0 + 11 +304.1444120187783 + 21 +12.28787367793086 + 31 +0.0 + 0 +LINE + 5 +C6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.1444120187783 + 20 +32.19047557699087 + 30 +0.0 + 11 +304.1444120187783 + 21 +34.74047557731086 + 31 +0.0 + 0 +LINE + 5 +C7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.3444120188283 + 20 +34.54047557726087 + 30 +0.0 + 11 +304.3444120188283 + 21 +32.39047557704086 + 31 +0.0 + 0 +LINE + 5 +C8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.3444120188283 + 20 +12.08787367788086 + 30 +0.0 + 11 +304.3444120188283 + 21 +9.937873678930856 + 31 +0.0 + 0 +LINE + 5 +C9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +304.4259504193783 + 20 +12.70043627927086 + 30 +0.0 + 11 +304.4259504193783 + 21 +13.40043636898086 + 31 +0.0 + 0 +LINE + 5 +CA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.4444120182183 + 20 +34.84047557797088 + 30 +0.0 + 11 +304.4444120182183 + 21 +32.09047557760086 + 31 +0.0 + 0 +LINE + 5 +CB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.4444120182183 + 20 +12.38787367859086 + 30 +0.0 + 11 +304.4444120182183 + 21 +9.637873678220866 + 31 +0.0 + 0 +LINE + 5 +CC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.4694120190183 + 20 +16.09047557741087 + 30 +0.0 + 11 +304.4694120190183 + 21 +18.59047557740086 + 31 +0.0 + 0 +LINE + 5 +CD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +304.5194120180783 + 20 +27.64047557744087 + 30 +0.0 + 11 +304.5194120180783 + 21 +26.64047557719087 + 31 +0.0 + 0 +LINE + 5 +CE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbLine + 10 +305.1259504189183 + 20 +13.40043510152085 + 30 +0.0 + 11 +305.1259504189183 + 21 +12.70043627927086 + 31 +0.0 + 0 +LINE + 5 +CF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.2194120188883 + 20 +11.04047053901086 + 30 +0.0 + 11 +305.2194120188883 + 21 +12.13787367821086 + 31 +0.0 + 0 +LINE + 5 +D0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8194120190383 + 20 +11.04047053901086 + 30 +0.0 + 11 +305.8194120190383 + 21 +9.839509323970872 + 31 +0.0 + 0 +LINE + 5 +D1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8694120180983 + 20 +18.59047557740086 + 30 +0.0 + 11 +305.8694120180983 + 21 +16.09047557741087 + 31 +0.0 + 0 +LINE + 5 +D2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +25.65946880286086 + 30 +0.0 + 11 +306.0694120181483 + 21 +13.73787367861087 + 31 +0.0 + 0 +LINE + 5 +D3 +102 +{ACAD_REACTORS +330 +1AF +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +28.41627855339087 + 30 +0.0 + 11 +306.0694120181483 + 21 +33.59047557734085 + 31 +0.0 + 0 +LINE + 5 +D4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +13.73787367861087 + 30 +0.0 + 11 +305.8194120190383 + 21 +12.73787367836087 + 31 +0.0 + 0 +LINE + 5 +D5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +304.5194120180783 + 20 +26.64047557719087 + 30 +0.0 + 11 +303.7194120191483 + 21 +26.64047557719087 + 31 +0.0 + 0 +LINE + 5 +D6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +303.3194120190483 + 20 +26.64047557719087 + 30 +0.0 + 11 +302.5194120188483 + 21 +26.64047557719087 + 31 +0.0 + 0 +LINE + 5 +D7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +302.5194120188483 + 20 +27.64047557744087 + 30 +0.0 + 11 +303.3194120190483 + 21 +27.64047557744087 + 31 +0.0 + 0 +LINE + 5 +D8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +303.7194120191483 + 20 +27.64047557744087 + 30 +0.0 + 11 +304.5194120180783 + 21 +27.64047557744087 + 31 +0.0 + 0 +LINE + 5 +D9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.4444120182183 + 20 +32.09047557760086 + 30 +0.0 + 11 +302.5944120187083 + 21 +32.09047557760086 + 31 +0.0 + 0 +LINE + 5 +DA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.1444120187783 + 20 +32.19047557699087 + 30 +0.0 + 11 +302.8944120181483 + 21 +32.19047557699087 + 31 +0.0 + 0 +LINE + 5 +DB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.6944120180983 + 20 +32.39047557704086 + 30 +0.0 + 11 +304.3444120188283 + 21 +32.39047557704086 + 31 +0.0 + 0 +LINE + 5 +DC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +304.3444120188283 + 20 +34.54047557726087 + 30 +0.0 + 11 +302.6944120180983 + 21 +34.54047557726087 + 31 +0.0 + 0 +LINE + 5 +DD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.8944120181483 + 20 +34.74047557731086 + 30 +0.0 + 11 +304.1444120187783 + 21 +34.74047557731086 + 31 +0.0 + 0 +LINE + 5 +DE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +302.5944120187083 + 20 +34.84047557797088 + 30 +0.0 + 11 +304.4444120182183 + 21 +34.84047557797088 + 31 +0.0 + 0 +LINE + 5 +DF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.5694120184084 + 20 +35.09047557708085 + 30 +0.0 + 11 +302.4694120185183 + 21 +35.09047557708085 + 31 +0.0 + 0 +LINE + 5 +E0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +8.769795776330866 + 30 +0.0 + 11 +333.0528305226283 + 21 +8.769795776330866 + 31 +0.0 + 0 +LINE + 5 +E1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +333.0528305226283 + 20 +8.862056268720863 + 30 +0.0 + 11 +332.2528305224283 + 21 +8.862056262370863 + 31 +0.0 + 0 +LINE + 5 +E2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +9.637873678220866 + 30 +0.0 + 11 +332.2528305224283 + 21 +9.637873678220866 + 31 +0.0 + 0 +LINE + 5 +E3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +9.737873678880866 + 30 +0.0 + 11 +331.4528305222284 + 21 +9.737873678880866 + 31 +0.0 + 0 +LINE + 5 +E4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +9.839387021700872 + 30 +0.0 + 11 +333.0528305226283 + 21 +9.839387021700872 + 31 +0.0 + 0 +LINE + 5 +E5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.2528305221783 + 20 +9.937873678930856 + 30 +0.0 + 11 +331.9528305217184 + 21 +9.937873678930856 + 31 +0.0 + 0 +LINE + 5 +E6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +11.04047053901086 + 30 +0.0 + 11 +333.0528305226283 + 21 +11.04047053901086 + 31 +0.0 + 0 +LINE + 5 +E7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +12.08787367788086 + 30 +0.0 + 11 +331.2528305221783 + 21 +12.08787367788086 + 31 +0.0 + 0 +LINE + 5 +E8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +333.0528305226283 + 20 +12.13787367821086 + 30 +0.0 + 11 +332.2528305224283 + 21 +12.13787367821086 + 31 +0.0 + 0 +LINE + 5 +E9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.4528305222284 + 20 +12.28787367793086 + 30 +0.0 + 11 +331.9528305217184 + 21 +12.28787367793086 + 31 +0.0 + 0 +LINE + 5 +EA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +12.38787367859086 + 30 +0.0 + 11 +332.2528305224283 + 21 +12.38787367859086 + 31 +0.0 + 0 +LINE + 5 +EB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +12.73787367836087 + 30 +0.0 + 11 +333.0528305226283 + 21 +12.73787367836087 + 31 +0.0 + 0 +LINE + 5 +EC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +13.73787367861087 + 30 +0.0 + 11 +333.0528305226283 + 21 +13.73787367861087 + 31 +0.0 + 0 +LINE + 5 +ED +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.0528305218783 + 20 +29.79047557766087 + 30 +0.0 + 11 +329.9528305224884 + 21 +29.69047557700087 + 31 +0.0 + 0 +LINE + 5 +EE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.8528305220783 + 20 +30.09047557710086 + 30 +0.0 + 11 +330.7528305226883 + 21 +29.99047557771087 + 31 +0.0 + 0 +LINE + 5 +EF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.7528305216683 + 20 +16.09047557741087 + 30 +0.0 + 11 +332.2528305224283 + 21 +16.09047557741087 + 31 +0.0 + 0 +LINE + 5 +F0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.7528305216683 + 20 +18.59047557740086 + 30 +0.0 + 11 +332.2528305224283 + 21 +18.59047557740086 + 31 +0.0 + 0 +LINE + 5 +F1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +329.9528305224884 + 20 +29.69047557700087 + 30 +0.0 + 11 +329.9528305224884 + 21 +28.99047557746086 + 31 +0.0 + 0 +LINE + 5 +F2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.0528305218783 + 20 +29.79047557766087 + 30 +0.0 + 11 +330.0528305218783 + 21 +28.89047557807085 + 31 +0.0 + 0 +LINE + 5 +F3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.7528305226883 + 20 +29.99047557771087 + 30 +0.0 + 11 +330.7528305226883 + 21 +28.69047557802087 + 31 +0.0 + 0 +LINE + 5 +F4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.8528305220783 + 20 +30.09047557710086 + 30 +0.0 + 11 +330.8528305220783 + 21 +28.59047557736086 + 31 +0.0 + 0 +LINE + 5 +F5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +334.0528305228783 + 20 +21.09047557739088 + 30 +0.0 + 11 +333.0528305226283 + 21 +21.09047557739088 + 31 +0.0 + 0 +LINE + 5 +F6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.2528305221783 + 20 +9.937873678930856 + 30 +0.0 + 11 +331.2528305221783 + 21 +12.08787367788086 + 31 +0.0 + 0 +LINE + 5 +F7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.2528305221783 + 20 +32.39047557704086 + 30 +0.0 + 11 +331.2528305221783 + 21 +34.54047557726087 + 31 +0.0 + 0 +LINE + 5 +F8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.4528305222284 + 20 +34.74047557731086 + 30 +0.0 + 11 +331.4528305222284 + 21 +32.19047557699087 + 31 +0.0 + 0 +LINE + 5 +F9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.4528305222284 + 20 +12.28787367793086 + 30 +0.0 + 11 +331.4528305222284 + 21 +9.737873678880866 + 31 +0.0 + 0 +LINE + 5 +FA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.7528305216683 + 20 +27.64047557744087 + 30 +0.0 + 11 +331.7528305216683 + 21 +26.64047557719087 + 31 +0.0 + 0 +LINE + 5 +FB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.7528305216683 + 20 +18.59047557740086 + 30 +0.0 + 11 +331.7528305216683 + 21 +16.09047557741087 + 31 +0.0 + 0 +LINE + 5 +FC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +34.84047557797088 + 30 +0.0 + 11 +331.9528305217184 + 21 +32.09047557760086 + 31 +0.0 + 0 +LINE + 5 +FD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +12.38787367859086 + 30 +0.0 + 11 +331.9528305217184 + 21 +9.637873678220866 + 31 +0.0 + 0 +LINE + 5 +FE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +8.76983750091086 + 30 +0.0 + 11 +332.2528305224283 + 21 +35.09047557708085 + 31 +0.0 + 0 +LINE + 5 +FF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +333.0528305226283 + 20 +8.769837453920864 + 30 +0.0 + 11 +333.0528305226283 + 21 +35.09047557708085 + 31 +0.0 + 0 +LINE + 5 +100 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +334.0528305228783 + 20 +25.09047557712086 + 30 +0.0 + 11 +334.0528305228783 + 21 +21.09047557739088 + 31 +0.0 + 0 +LINE + 5 +101 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +334.0528305228783 + 20 +25.09047557712086 + 30 +0.0 + 11 +333.0528305226283 + 21 +25.09047557712086 + 31 +0.0 + 0 +LINE + 5 +102 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.0528305218783 + 20 +28.89047557807085 + 30 +0.0 + 11 +329.9528305224884 + 21 +28.99047557746086 + 31 +0.0 + 0 +LINE + 5 +103 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +333.0528305226283 + 20 +25.65946880286086 + 30 +0.0 + 11 +332.2528305224283 + 21 +25.65946880286086 + 31 +0.0 + 0 +LINE + 5 +104 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +26.13478082912086 + 30 +0.0 + 11 +333.0528305226283 + 21 +26.13478082912086 + 31 +0.0 + 0 +LINE + 5 +105 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.8528305220783 + 20 +28.59047557736086 + 30 +0.0 + 11 +330.7528305226883 + 21 +28.69047557802087 + 31 +0.0 + 0 +LINE + 5 +106 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.7528305216683 + 20 +26.64047557719087 + 30 +0.0 + 11 +332.2528305224283 + 21 +26.64047557719087 + 31 +0.0 + 0 +LINE + 5 +107 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.7528305216683 + 20 +27.64047557744087 + 30 +0.0 + 11 +332.2528305224283 + 21 +27.64047557744087 + 31 +0.0 + 0 +LINE + 5 +108 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +333.0528305226283 + 20 +27.94096652713087 + 30 +0.0 + 11 +332.2528305224283 + 21 +27.94096652713087 + 31 +0.0 + 0 +LINE + 5 +109 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +28.41627855339087 + 30 +0.0 + 11 +333.0528305226283 + 21 +28.41627855339087 + 31 +0.0 + 0 +LINE + 5 +10A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +28.59047557736086 + 30 +0.0 + 11 +330.8528305220783 + 21 +28.59047557736086 + 31 +0.0 + 0 +LINE + 5 +10B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.7528305226883 + 20 +28.89047557807085 + 30 +0.0 + 11 +330.0528305218783 + 21 +28.89047557807085 + 31 +0.0 + 0 +LINE + 5 +10C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +330.7528305226883 + 20 +29.79047557766087 + 30 +0.0 + 11 +330.0528305218783 + 21 +29.79047557766087 + 31 +0.0 + 0 +LINE + 5 +10D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +30.09047557710086 + 30 +0.0 + 11 +330.8528305220783 + 21 +30.09047557710086 + 31 +0.0 + 0 +LINE + 5 +10E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +32.09047557760086 + 30 +0.0 + 11 +332.2528305224283 + 21 +32.09047557760086 + 31 +0.0 + 0 +LINE + 5 +10F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +32.19047557699087 + 30 +0.0 + 11 +331.4528305222284 + 21 +32.19047557699087 + 31 +0.0 + 0 +LINE + 5 +110 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.2528305221783 + 20 +32.39047557704086 + 30 +0.0 + 11 +331.9528305217184 + 21 +32.39047557704086 + 31 +0.0 + 0 +LINE + 5 +111 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +333.0528305226283 + 20 +33.59047557734085 + 30 +0.0 + 11 +332.2528305224283 + 21 +33.59047557734085 + 31 +0.0 + 0 +LINE + 5 +112 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +34.54047557726087 + 30 +0.0 + 11 +331.2528305221783 + 21 +34.54047557726087 + 31 +0.0 + 0 +LINE + 5 +113 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.4528305222284 + 20 +34.74047557731086 + 30 +0.0 + 11 +331.9528305217184 + 21 +34.74047557731086 + 31 +0.0 + 0 +LINE + 5 +114 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +331.9528305217184 + 20 +34.84047557797088 + 30 +0.0 + 11 +332.2528305224283 + 21 +34.84047557797088 + 31 +0.0 + 0 +LINE + 5 +115 +102 +{ACAD_REACTORS +330 +19E +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +332.2528305224283 + 20 +35.09047557708085 + 30 +0.0 + 11 +333.0528305226283 + 21 +35.09047557708085 + 31 +0.0 + 0 +LINE + 5 +116 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +300.9694120187783 + 20 +47.76802734918087 + 30 +0.0 + 11 +300.9694120187783 + 21 +48.56802734938085 + 31 +0.0 + 0 +LINE + 5 +117 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.5194120185983 + 20 +49.56802734963088 + 30 +0.0 + 11 +301.5194120185983 + 21 +48.56802734938085 + 31 +0.0 + 0 +LINE + 5 +118 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.1694161976283 + 20 +45.46802734924085 + 30 +0.0 + 11 +303.8694078405683 + 21 +45.46802734924085 + 31 +0.0 + 0 +LINE + 5 +119 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.0694120186684 + 20 +45.56802734990085 + 30 +0.0 + 11 +303.9694120182583 + 21 +45.56802734990085 + 31 +0.0 + 0 +LINE + 5 +11A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.1694120180583 + 20 +45.46802734924085 + 30 +0.0 + 11 +303.0694120186684 + 21 +45.56802734990085 + 31 +0.0 + 0 +LINE + 5 +11B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.8694120186183 + 20 +46.26802734944087 + 30 +0.0 + 11 +302.7694120192283 + 21 +46.36802735010085 + 31 +0.0 + 0 +LINE + 5 +11C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.8694157422583 + 20 +46.26802734944087 + 30 +0.0 + 11 +304.1694082946683 + 21 +46.26802734944087 + 31 +0.0 + 0 +LINE + 5 +11D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.7694120192283 + 20 +46.36802735010085 + 30 +0.0 + 11 +304.2694120189683 + 21 +46.36802735010085 + 31 +0.0 + 0 +LINE + 5 +11E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.4694120185183 + 20 +48.56802734938085 + 30 +0.0 + 11 +302.4694120185183 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +11F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.5194120188483 + 20 +47.26802734969084 + 30 +0.0 + 11 +302.5194120188483 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +120 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.5944120187083 + 20 +47.46802734974084 + 30 +0.0 + 11 +302.5944120187083 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +121 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.6944120180983 + 20 +46.96802734898087 + 30 +0.0 + 11 +302.6944120180983 + 21 +47.46802734974084 + 31 +0.0 + 0 +LINE + 5 +122 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.7694120192283 + 20 +46.81366690078085 + 30 +0.0 + 11 +302.7694120192283 + 21 +46.36802735010085 + 31 +0.0 + 0 +LINE + 5 +123 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.1444120187783 + 20 +46.76802735020086 + 30 +0.0 + 11 +302.8944120181483 + 21 +46.76802735020086 + 31 +0.0 + 0 +LINE + 5 +124 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.8944120181483 + 20 +47.46802734974084 + 30 +0.0 + 11 +302.8944120181483 + 21 +46.76802735020086 + 31 +0.0 + 0 +LINE + 5 +125 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.0694120186684 + 20 +46.26802734944087 + 30 +0.0 + 11 +303.0694120186684 + 21 +45.56802734990085 + 31 +0.0 + 0 +LINE + 5 +126 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.6944120180983 + 20 +46.96802734898087 + 30 +0.0 + 11 +304.3444120188283 + 21 +46.96802734898087 + 31 +0.0 + 0 +LINE + 5 +127 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.5194120188483 + 20 +47.26802734969084 + 30 +0.0 + 11 +302.6944120180983 + 21 +47.26802734969084 + 31 +0.0 + 0 +LINE + 5 +128 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.3444120188283 + 20 +47.26802734969084 + 30 +0.0 + 11 +305.8694120180983 + 21 +47.26802734969084 + 31 +0.0 + 0 +LINE + 5 +129 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.5944120187083 + 20 +47.46802734974084 + 30 +0.0 + 11 +304.4444120182183 + 21 +47.46802734974084 + 31 +0.0 + 0 +LINE + 5 +12A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.9694120182583 + 20 +46.26802734944087 + 30 +0.0 + 11 +303.9694120182583 + 21 +45.56802734990085 + 31 +0.0 + 0 +LINE + 5 +12B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +300.9694120187783 + 20 +47.76802734918087 + 30 +0.0 + 11 +306.0694120181483 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +12C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.1444120187783 + 20 +46.76802735020086 + 30 +0.0 + 11 +304.1444120187783 + 21 +47.46802734974084 + 31 +0.0 + 0 +LINE + 5 +12D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.2694120189683 + 20 +46.81366690078085 + 30 +0.0 + 11 +304.2694120189683 + 21 +46.36802735010085 + 31 +0.0 + 0 +LINE + 5 +12E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.3444120188283 + 20 +47.46802734974084 + 30 +0.0 + 11 +304.3444120188283 + 21 +46.96802734898087 + 31 +0.0 + 0 +LINE + 5 +12F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.4444120182183 + 20 +47.46802734974084 + 30 +0.0 + 11 +304.4444120182183 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +130 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.5194120180783 + 20 +47.26802734969084 + 30 +0.0 + 11 +304.5194120180783 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +131 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.5694120184084 + 20 +47.76802734918087 + 30 +0.0 + 11 +304.5694120184084 + 21 +48.56802734938085 + 31 +0.0 + 0 +LINE + 5 +132 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +48.56802734938085 + 30 +0.0 + 11 +300.9694120187783 + 21 +48.56802734938085 + 31 +0.0 + 0 +LINE + 5 +133 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.1694120183083 + 20 +46.26802734944087 + 30 +0.0 + 11 +304.2694120189683 + 21 +46.36802735010085 + 31 +0.0 + 0 +LINE + 5 +134 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.8694120188683 + 20 +45.46802734924085 + 30 +0.0 + 11 +303.9694120182583 + 21 +45.56802734990085 + 31 +0.0 + 0 +LINE + 5 +135 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.5194120183283 + 20 +49.56802734963088 + 30 +0.0 + 11 +305.5194120183283 + 21 +48.56802734938085 + 31 +0.0 + 0 +LINE + 5 +136 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.5194120185983 + 20 +49.56802734963088 + 30 +0.0 + 11 +305.5194120183283 + 21 +49.56802734963088 + 31 +0.0 + 0 +LINE + 5 +137 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8694120180983 + 20 +47.26802734969084 + 30 +0.0 + 11 +305.8694120180983 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +138 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +48.56802734938085 + 30 +0.0 + 11 +306.0694120181483 + 21 +47.76802734918087 + 31 +0.0 + 0 +LINE + 5 +139 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +300.9694120187783 + 20 +-9.213296842629132 + 30 +0.0 + 11 +300.9694120187783 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +13A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.2194120191583 + 20 +-10.01329684282913 + 30 +0.0 + 11 +301.2194120191583 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +13B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +301.5194120185983 + 20 +-11.01329684180913 + 30 +0.0 + 11 +301.5194120185983 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +13C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.5194120183283 + 20 +-11.01329684180913 + 30 +0.0 + 11 +301.5194120185983 + 21 +-11.01329684180913 + 31 +0.0 + 0 +LINE + 5 +13D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.1694120180583 + 20 +-6.913296842689142 + 30 +0.0 + 11 +303.0694120186684 + 21 +-7.013296842079133 + 31 +0.0 + 0 +LINE + 5 +13E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.0422263907983 + 20 +-9.213296842629132 + 30 +0.0 + 11 +302.0422263907983 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +13F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.8694120186183 + 20 +-7.713296841619132 + 30 +0.0 + 11 +302.7694120192283 + 21 +-7.813296842279129 + 31 +0.0 + 0 +LINE + 5 +140 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.5194120188483 + 20 +-8.713296841869137 + 30 +0.0 + 11 +302.5194120188483 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +141 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.5944120187083 + 20 +-8.913296841919132 + 30 +0.0 + 11 +302.5944120187083 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +142 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +300.9694120187783 + 20 +-10.01329684282913 + 30 +0.0 + 11 +306.0694120181483 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +143 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.6944120180983 + 20 +-8.913296841919132 + 30 +0.0 + 11 +302.6944120180983 + 21 +-8.413296842429131 + 31 +0.0 + 0 +LINE + 5 +144 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.7413259882783 + 20 +-9.213296842629132 + 30 +0.0 + 11 +302.7413259882783 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +145 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.7694120192283 + 20 +-8.258936392959133 + 30 +0.0 + 11 +302.7694120192283 + 21 +-7.813296842279129 + 31 +0.0 + 0 +LINE + 5 +146 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.8944120181483 + 20 +-8.213296842379129 + 30 +0.0 + 11 +302.8944120181483 + 21 +-8.913296841919132 + 31 +0.0 + 0 +LINE + 5 +147 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.0694120186684 + 20 +-7.713296841619132 + 30 +0.0 + 11 +303.0694120186684 + 21 +-7.013296842079133 + 31 +0.0 + 0 +LINE + 5 +148 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +-9.213296842629132 + 30 +0.0 + 11 +300.9694120187783 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +149 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.4444120182183 + 20 +-8.913296841919132 + 30 +0.0 + 11 +302.5944120187083 + 21 +-8.913296841919132 + 31 +0.0 + 0 +LINE + 5 +14A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.9694120182583 + 20 +-7.713296841619132 + 30 +0.0 + 11 +303.9694120182583 + 21 +-7.013296842079133 + 31 +0.0 + 0 +LINE + 5 +14B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8694120180983 + 20 +-8.713296841869137 + 30 +0.0 + 11 +304.3444120188283 + 21 +-8.713296841869137 + 31 +0.0 + 0 +LINE + 5 +14C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.6944120180983 + 20 +-8.713296841869137 + 30 +0.0 + 11 +302.5194120188483 + 21 +-8.713296841869137 + 31 +0.0 + 0 +LINE + 5 +14D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.1444120187783 + 20 +-8.913296841919132 + 30 +0.0 + 11 +304.1444120187783 + 21 +-8.213296842379129 + 31 +0.0 + 0 +LINE + 5 +14E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.3444120188283 + 20 +-8.413296842429131 + 30 +0.0 + 11 +302.6944120180983 + 21 +-8.413296842429131 + 31 +0.0 + 0 +LINE + 5 +14F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.2694120189683 + 20 +-8.258936392959133 + 30 +0.0 + 11 +304.2694120189683 + 21 +-7.813296842279129 + 31 +0.0 + 0 +LINE + 5 +150 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.2974980499183 + 20 +-10.01329684282913 + 30 +0.0 + 11 +304.2974980499183 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +151 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.3444120188283 + 20 +-8.413296842429131 + 30 +0.0 + 11 +304.3444120188283 + 21 +-8.913296841919132 + 31 +0.0 + 0 +LINE + 5 +152 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +302.8944120181483 + 20 +-8.213296842379129 + 30 +0.0 + 11 +304.1444120187783 + 21 +-8.213296842379129 + 31 +0.0 + 0 +LINE + 5 +153 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.4444120182183 + 20 +-8.913296841919132 + 30 +0.0 + 11 +304.4444120182183 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +154 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.4694120190183 + 20 +-8.713296841869137 + 30 +0.0 + 11 +304.4694120190183 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +155 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.2694120189683 + 20 +-7.813296842279129 + 30 +0.0 + 11 +302.7694120192283 + 21 +-7.813296842279129 + 31 +0.0 + 0 +LINE + 5 +156 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.1694082946683 + 20 +-7.713296841619132 + 30 +0.0 + 11 +302.8694157422583 + 21 +-7.713296841619132 + 31 +0.0 + 0 +LINE + 5 +157 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.9965976562883 + 20 +-10.01329684282913 + 30 +0.0 + 11 +304.9965976473983 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +158 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +304.1694120183083 + 20 +-7.713296841619132 + 30 +0.0 + 11 +304.2694120189683 + 21 +-7.813296842279129 + 31 +0.0 + 0 +LINE + 5 +159 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.8694120188683 + 20 +-6.913296842689142 + 30 +0.0 + 11 +303.9694120182583 + 21 +-7.013296842079133 + 31 +0.0 + 0 +LINE + 5 +15A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.9694120182583 + 20 +-7.013296842079133 + 30 +0.0 + 11 +303.0694120186684 + 21 +-7.013296842079133 + 31 +0.0 + 0 +LINE + 5 +15B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.5194120183283 + 20 +-11.01329684180913 + 30 +0.0 + 11 +305.5194120183283 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +15C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +303.8694078405683 + 20 +-6.913296842689142 + 30 +0.0 + 11 +303.1694161976283 + 21 +-6.913296842689142 + 31 +0.0 + 0 +LINE + 5 +15D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8194120190383 + 20 +-9.213296842629132 + 30 +0.0 + 11 +305.8194120190383 + 21 +-10.01329684282913 + 31 +0.0 + 0 +LINE + 5 +15E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +305.8694120180983 + 20 +-8.713296841869137 + 30 +0.0 + 11 +305.8694120180983 + 21 +-9.213296842629132 + 31 +0.0 + 0 +LINE + 5 +15F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +306.0694120181483 + 20 +-9.213296842629132 + 30 +0.0 + 11 +306.0694120181483 + 21 +-10.01329684282913 + 31 +0.0 + 0 +ARC + 5 +160 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +241.4270137242892 + 20 +11.07521993037617 + 30 +0.0 + 40 +2.549954545749999 +100 +AcDbArc + 50 +305.4062767566002 + 51 +334.4186755735996 + 0 +ARC + 5 +161 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +241.4270137242892 + 20 +11.07521993037617 + 30 +0.0 + 40 +2.549954545749999 +100 +AcDbArc + 50 +205.5813264844995 + 51 +234.5937289846997 + 0 +ARC + 5 +162 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +240.3770137376792 + 20 +33.72513236604616 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +163 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +242.4770137375692 + 20 +33.72513236604616 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +164 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +238.9270137369992 + 20 +27.17253046746618 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +288.0800126247994 + 51 +71.91998737559981 + 0 +ARC + 5 +165 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +243.9270137382492 + 20 +17.87253046704616 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +108.0800126242993 + 51 +251.9199873755998 + 0 +ARC + 5 +166 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +241.4270137382592 + 20 +8.572530466626169 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +35.01139778950005 + 51 +144.9886022101998 + 0 +ARC + 5 +167 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +243.7270137381993 + 20 +12.27253046691617 + 30 +0.0 + 40 +0.6000000001500001 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +168 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +239.1270137370492 + 20 +12.27253046691617 + 30 +0.0 + 40 +0.6000000001500001 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +169 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +239.3770137374293 + 20 +25.79412559156617 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +108.0800126236002 + 51 +180.0 + 0 +ARC + 5 +16A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +239.3770137374293 + 20 +28.55093534209617 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +180.0 + 51 +251.9199873753994 + 0 +ARC + 5 +16B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +243.4770137378192 + 20 +19.25093534167617 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +288.0800126247001 + 51 +0.0 + 0 +ARC + 5 +16C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +243.4770137378192 + 20 +16.49412559241617 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +0.0 + 51 +71.91998737550029 + 0 +ARC + 5 +16D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +242.6146187315992 + 20 +9.404452564526179 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +215.0113977772003 + 51 +305.4084294003001 + 0 +ARC + 5 +16E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +240.2394087436491 + 20 +9.404452564526179 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +234.5915973062006 + 51 +324.9886022234004 + 0 +CIRCLE + 5 +16F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +240.5770137377292 + 20 +14.67513163579617 + 30 +0.0 + 40 +0.4500000004300003 + 0 +CIRCLE + 5 +170 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +242.2770137375192 + 20 +14.67513163579617 + 30 +0.0 + 40 +0.4500000004300003 + 0 +ARC + 5 +171 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +265.7044336809093 + 20 +32.52513236574618 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +172 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +265.7044336809093 + 20 +34.67513236596617 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +173 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +265.7044336809093 + 20 +10.07253046763616 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +174 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +265.7044336809093 + 20 +12.22253046658617 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +175 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +301.0194120191083 + 20 +17.73787367834086 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +288.0800126244002 + 51 +71.91998737580012 + 0 +ARC + 5 +176 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +301.2194120191583 + 20 +12.13787367821086 + 30 +0.0 + 40 +0.6000000001500001 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +177 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +302.3318070244883 + 20 +9.269795775820872 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +234.5915717969996 + 51 +324.9886022233005 + 0 +ARC + 5 +178 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +301.4694120182683 + 20 +16.35946880371086 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +108.0800126244002 + 51 +180.0 + 0 +ARC + 5 +179 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +301.4694120182683 + 20 +19.11627855297087 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +180.0 + 51 +251.9199873752006 + 0 +CIRCLE + 5 +17A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbCircle + 10 +302.6694120185683 + 20 +14.54047484709086 + 30 +0.0 + 40 +0.4500000004300003 + 0 +ARC + 5 +17B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +302.8944120181483 + 20 +9.937873678930856 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +17C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +302.8944120181483 + 20 +12.08787367788086 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +17D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +302.4694120185183 + 20 +33.59047557734085 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +17E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +302.8944120181483 + 20 +32.39047557704086 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +17F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +302.8944120181483 + 20 +34.54047557726087 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +180 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +303.5194120317983 + 20 +10.94056314167086 + 30 +0.0 + 40 +2.549954545749999 +100 +AcDbArc + 50 +305.4062712497997 + 51 +334.4186735154998 + 0 +ARC + 5 +181 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +303.5194120317983 + 20 +10.94056314167086 + 30 +0.0 + 40 +2.549954545749999 +100 +AcDbArc + 50 +205.5813244263994 + 51 +234.5937234782003 + 0 +ARC + 5 +182 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +8.437873677920862 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +35.01139778950005 + 51 +144.9886022102998 + 0 +ARC + 5 +183 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +305.8194120190383 + 20 +12.13787367821086 + 30 +0.0 + 40 +0.6000000001500001 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +184 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +304.7070170124383 + 20 +9.269795775820872 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +215.0113977772003 + 51 +305.4084038899995 + 0 +CIRCLE + 5 +185 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 4 +100 +AcDbCircle + 10 +304.3694120183583 + 20 +14.54047484709086 + 30 +0.0 + 40 +0.4500000004300003 + 0 +CIRCLE + 5 +186 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +10.51787367844087 + 30 +0.0 + 40 +0.25000000038 + 0 +ARC + 5 +187 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +304.1444120187783 + 20 +9.937873678930856 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +188 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +304.1444120187783 + 20 +12.08787367788086 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +189 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +304.5694120184084 + 20 +33.59047557734085 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +18A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +306.0194120190883 + 20 +27.03787367876086 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +108.0800126242993 + 51 +251.9199873760999 + 0 +CIRCLE + 5 +18B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +29.34047557723086 + 30 +0.0 + 40 +0.7499999998699999 + 0 +CIRCLE + 5 +18C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +29.34047557723086 + 30 +0.0 + 40 +0.6500000004800001 + 0 +ARC + 5 +18D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +305.5694120186583 + 20 +28.41627855339087 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +288.0800126247001 + 51 +0.0 + 0 +ARC + 5 +18E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +305.5694120186583 + 20 +25.65946880286086 + 30 +0.0 + 40 +0.49999999949 +100 +AcDbArc + 50 +0.0 + 51 +71.91998737449996 + 0 +CIRCLE + 5 +18F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +29.34047557723086 + 30 +0.0 + 40 +0.4500000004300003 + 0 +CIRCLE + 5 +190 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +29.34047557723086 + 30 +0.0 + 40 +0.34999999977 + 0 +CIRCLE + 5 +191 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +303.5194120190983 + 20 +33.96047557775087 + 30 +0.0 + 40 +0.25000000038 + 0 +ARC + 5 +192 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +304.1444120187783 + 20 +32.39047557704086 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +193 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbCircle + 10 +304.1444120187783 + 20 +34.54047557726087 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +194 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +331.4528305222284 + 20 +32.39047557704086 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +195 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +331.4528305222284 + 20 +34.54047557726087 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +196 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +331.4528305222284 + 20 +9.937873678930856 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +197 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +331.4528305222284 + 20 +12.08787367788086 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +198 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +304.1444120187783 + 20 +46.96802734898087 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +199 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +302.8944120181483 + 20 +46.96802734898087 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +19A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +302.8944120181483 + 20 +-8.413296842429131 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +19B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +304.1444120187783 + 20 +-8.413296842429131 + 30 +0.0 + 40 +0.20000000005 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +DIMENSION + 5 +19C +102 +{ACAD_XDICTIONARY +360 +19D +102 +} +102 +{ACAD_REACTORS +330 +19E +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbDimension + 2 +*D0 + 10 +332.2528305224283 + 20 +39.67502531171863 + 30 +0.0 + 11 +326.7753305224283 + 21 +39.67502531171863 + 31 +0.0 + 71 + 5 + 42 +0.8000000001999294 + 3 +STANDARD +100 +AcDbAlignedDimension + 13 +333.0528305226283 + 23 +35.09047557708085 + 33 +0.0 + 14 +332.2528305224283 + 24 +35.09047557708085 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 42 +1040 +0.0730807087 +1070 + 43 +1040 +0.4443307087 +1070 + 44 +1040 +0.2104724409 +1070 + 47 +1040 +0.0 +1070 + 48 +1040 +0.0 +1070 + 69 +1070 + 2 +1070 + 70 +1070 + 1 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +3.0 +1070 + 141 +1040 +0.1052362205 +1070 + 176 +1070 + 1 +1070 + 177 +1070 + 1 +1070 + 178 +1070 + 256 +1070 + 271 +1070 + 4 +1070 + 272 +1070 + 4 +1070 + 284 +1070 + 0 +1002 +} + 0 +DIMENSION + 5 +1AD +102 +{ACAD_XDICTIONARY +360 +1AE +102 +} +102 +{ACAD_REACTORS +330 +1AF +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbDimension + 2 +*D1 + 10 +300.9694120187783 + 20 +39.8294082611344 + 30 +0.0 + 11 +295.6919120187783 + 21 +39.8294082611344 + 31 +0.0 + 71 + 5 + 42 +5.09999999936997 + 3 +STANDARD +100 +AcDbAlignedDimension + 13 +306.0694120181483 + 23 +33.59047557734085 + 33 +0.0 + 14 +300.9694120187783 + 24 +33.59047557734085 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 42 +1040 +0.0730807087 +1070 + 43 +1040 +0.4443307087 +1070 + 44 +1040 +0.2104724409 +1070 + 47 +1040 +0.0 +1070 + 48 +1040 +0.0 +1070 + 69 +1070 + 2 +1070 + 70 +1070 + 1 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +3.0 +1070 + 141 +1040 +0.1052362205 +1070 + 176 +1070 + 1 +1070 + 177 +1070 + 1 +1070 + 178 +1070 + 256 +1070 + 271 +1070 + 4 +1070 + 272 +1070 + 4 +1070 + 284 +1070 + 0 +1002 +} + 0 +LINE + 5 +1BD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.4795326333616 + 20 +9.03940599254458 + 30 +0.0 + 11 +403.4736691043212 + 21 +9.045276699624604 + 31 +0.0 + 0 +LINE + 5 +1BE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +402.5184510223816 + 20 +11.69862233272459 + 30 +0.0 + 11 +402.3736691046813 + 21 +11.69798545820459 + 31 +0.0 + 0 +LINE + 5 +1BF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.0184522880616 + 20 +11.69833736758457 + 30 +0.0 + 11 +403.2184345144615 + 21 +11.69833736758457 + 31 +0.0 + 0 +LINE + 5 +1C0 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.0289036936016 + 20 +11.69833736758457 + 30 +0.0 + 11 +409.2288859200015 + 21 +11.69833736758457 + 31 +0.0 + 0 +LINE + 5 +1C2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +404.4236691042416 + 20 +11.79857150290458 + 30 +0.0 + 11 +403.8236691053616 + 21 +11.79857150290458 + 31 +0.0 + 0 +LINE + 5 +1C3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +407.8236691038216 + 20 +11.79857150290458 + 30 +0.0 + 11 +408.4236691052415 + 21 +11.79857150290458 + 31 +0.0 + 0 +LINE + 5 +1C4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.6736691056416 + 20 +11.89857004306458 + 30 +0.0 + 11 +405.7736668817616 + 21 +11.89857316218459 + 31 +0.0 + 0 +LINE + 5 +1C5 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +406.4736713288414 + 20 +11.89857316218459 + 30 +0.0 + 11 +408.5736691049616 + 21 +11.89857004306458 + 31 +0.0 + 0 +LINE + 5 +1C6 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.8736691059216 + 20 +11.69798545820459 + 30 +0.0 + 11 +409.7288884556816 + 21 +11.69862233272459 + 31 +0.0 + 0 +LINE + 5 +1C7 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.0798486194016 + 20 +12.80857111866458 + 30 +0.0 + 11 +407.0736733927416 + 21 +12.8085729398446 + 31 +0.0 + 0 +LINE + 5 +1C8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +405.1736648178616 + 20 +12.8085729398446 + 30 +0.0 + 11 +404.1674895912016 + 21 +12.80857111866458 + 31 +0.0 + 0 +LINE + 5 +1C9 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.5295106588616 + 20 +13.72997637770458 + 30 +0.0 + 11 +407.9295142693216 + 21 +13.72938553814459 + 31 +0.0 + 0 +LINE + 5 +1CA +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.8736691059216 + 20 +13.39597464032457 + 30 +0.0 + 11 +408.5297615143416 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +1CB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +402.3736691046813 + 20 +13.39597464032457 + 30 +0.0 + 11 +403.7175773719016 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +1CC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.3178239412816 + 20 +13.72938553814459 + 30 +0.0 + 11 +403.7178275492016 + 21 +13.72997637770458 + 31 +0.0 + 0 +LINE + 5 +1CD +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +407.9292234291616 + 20 +14.10853511512458 + 30 +0.0 + 11 +407.2736744964216 + 21 +14.10853630130459 + 31 +0.0 + 0 +LINE + 5 +1CE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.9736637116414 + 20 +14.10853630130459 + 30 +0.0 + 11 +404.3181147814416 + 21 +14.10853511512458 + 31 +0.0 + 0 +LINE + 5 +1CF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +407.7302075051216 + 20 +14.15853669914457 + 30 +0.0 + 11 +407.2736754209816 + 21 +14.15853669914457 + 31 +0.0 + 0 +LINE + 5 +1D0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +404.9736627896215 + 20 +14.15853669914457 + 30 +0.0 + 11 +404.5171307054816 + 21 +14.15853669914457 + 31 +0.0 + 0 +LWPOLYLINE + 5 +1D1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +402.6639056336817 + 20 +10.2520173722446 + 10 +402.7923099590415 + 20 +9.977036001964583 + 10 +402.9637301267416 + 20 +9.679794747324583 + 10 +403.1713437399615 + 20 +9.386665026244607 + 10 +403.4177911160015 + 20 +9.10230058608459 + 10 +403.4795464331816 + 20 +9.039419840624582 + 0 +LINE + 5 +1D2 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +407.2736773920216 + 20 +15.2485726724846 + 30 +0.0 + 11 +406.4736773943616 + 21 +15.24857412028458 + 31 +0.0 + 0 +LINE + 5 +1D3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +405.7736608162415 + 20 +15.24857412028458 + 30 +0.0 + 11 +404.9736608160416 + 21 +15.2485726724846 + 31 +0.0 + 0 +LINE + 5 +1D4 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.5271035846816 + 20 +16.90902470336457 + 30 +0.0 + 11 +407.9271037585215 + 21 +16.90857047262458 + 31 +0.0 + 0 +LINE + 5 +1D5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.3202344520816 + 20 +16.90857047262458 + 30 +0.0 + 11 +403.7202346259213 + 21 +16.90902470336457 + 31 +0.0 + 0 +LWPOLYLINE + 5 +1D6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbPolyline + 90 + 5 + 70 + 0 + 43 +0.0 + 10 +402.3736691351616 + 20 +11.69810842214459 + 10 +402.3834679522413 + 20 +11.42877022828458 + 10 +402.4140867175212 + 20 +11.15088126666458 + 10 +402.4679707550417 + 20 +10.86390167044457 + 10 +402.5034552357616 + 20 +10.72123946910458 + 0 +LINE + 5 +1D7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +402.3736599149613 + 20 +11.69798545566458 + 30 +0.0 + 11 +402.3736691046813 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +1D8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +403.7179708407617 + 20 +13.91876769938456 + 30 +0.0 + 11 +403.5736691049816 + 21 +14.49597464250458 + 31 +0.0 + 0 +LINE + 5 +1D9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +402.5184181090616 + 20 +13.39597464032457 + 30 +0.0 + 11 +402.5184010199414 + 21 +11.69862233272459 + 31 +0.0 + 0 +LINE + 5 +1DA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.0184522880616 + 20 +11.69833714914458 + 30 +0.0 + 11 +403.0184522880616 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +1DB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.2184345144615 + 20 +13.39597464032457 + 30 +0.0 + 11 +403.2184260562615 + 21 +11.69833714914458 + 31 +0.0 + 0 +LINE + 5 +1DC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.3736691036616 + 20 +9.309228150384591 + 30 +0.0 + 11 +403.3736691036616 + 21 +10.15983554746459 + 31 +0.0 + 0 +LINE + 5 +1DD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +403.5736691049816 + 20 +26.41756976548459 + 30 +0.0 + 11 +403.5736691049816 + 21 +14.49597464250458 + 31 +0.0 + 0 +LINE + 5 +1DE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +403.5736691049816 + 20 +29.17437951728459 + 30 +0.0 + 11 +403.5736691049816 + 21 +34.34857653996456 + 31 +0.0 + 0 +LINE + 5 +1DF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.6736691056416 + 20 +8.862056916204586 + 30 +0.0 + 11 +403.6736690929417 + 21 +11.89857008370459 + 31 +0.0 + 0 +LINE + 5 +1E0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +403.8236691053616 + 20 +11.79857150290458 + 30 +0.0 + 11 +403.8236691053616 + 21 +10.59748798432458 + 31 +0.0 + 0 +LINE + 5 +1E1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.0682399903614 + 20 +13.72982996448458 + 30 +0.0 + 11 +404.0682433050613 + 21 +11.89856997956459 + 31 +0.0 + 0 +LINE + 5 +1E2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +404.1236691048017 + 20 +25.8485765397446 + 30 +0.0 + 11 +404.1236691048017 + 21 +21.84857654128459 + 31 +0.0 + 0 +LINE + 5 +1E3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.1675416078616 + 20 +12.80857111866458 + 30 +0.0 + 11 +404.1676688440815 + 21 +13.72961861616458 + 31 +0.0 + 0 +LINE + 5 +1E4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.7202346233816 + 20 +16.90902470336457 + 30 +0.0 + 11 +403.7164410825816 + 21 +11.89856951982458 + 31 +0.0 + 0 +LINE + 5 +1E5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +403.8702342675013 + 20 +16.90891107646458 + 30 +0.0 + 11 +403.8678275082816 + 21 +13.72979457974458 + 31 +0.0 + 0 +LINE + 5 +1E6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.1678274213616 + 20 +13.72956746564458 + 30 +0.0 + 11 +404.1702341805815 + 21 +16.90868395982457 + 31 +0.0 + 0 +LINE + 5 +1E7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.3202344520816 + 20 +16.90857047008457 + 30 +0.0 + 11 +404.3171297008615 + 21 +12.80857145648459 + 31 +0.0 + 0 +LINE + 5 +1E8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.4236691042416 + 20 +11.79857150290458 + 30 +0.0 + 11 +404.4236691042416 + 21 +11.89857062472457 + 31 +0.0 + 0 +LINE + 5 +1E9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +404.5171307054816 + 20 +14.15853669914457 + 30 +0.0 + 11 +404.5171307054816 + 21 +14.10853547326458 + 31 +0.0 + 0 +LINE + 5 +1EA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +404.9736652331016 + 20 +12.80857267314457 + 30 +0.0 + 11 +404.9736608160416 + 21 +15.2485726724846 + 31 +0.0 + 0 +LINE + 5 +1EB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +405.1736603982616 + 20 +15.24857294172458 + 30 +0.0 + 11 +405.1736648178616 + 21 +12.8085729398446 + 31 +0.0 + 0 +LINE + 5 +1EC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +405.5736664664216 + 20 +11.89857270498459 + 30 +0.0 + 11 +405.5736604009017 + 21 +15.24857366562459 + 31 +0.0 + 0 +LINE + 5 +1ED +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +405.7736608162415 + 20 +15.24857412028458 + 30 +0.0 + 11 +405.7736668817616 + 21 +11.89857316218459 + 31 +0.0 + 0 +LINE + 5 +1EE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +404.1236691048017 + 20 +21.84857654128459 + 30 +0.0 + 11 +408.1236691058014 + 21 +21.84857654128459 + 31 +0.0 + 0 +LINE + 5 +1EF +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +406.4736713288414 + 20 +11.89857316218459 + 30 +0.0 + 11 +406.4736773943616 + 21 +15.24857412028458 + 31 +0.0 + 0 +LINE + 5 +1F0 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +406.6736778097014 + 20 +15.24857366562459 + 30 +0.0 + 11 +406.6736717441814 + 21 +11.89857270498459 + 31 +0.0 + 0 +LINE + 5 +1F1 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +407.0736733927416 + 20 +12.8085729398446 + 30 +0.0 + 11 +407.0736778098016 + 21 +15.24857294172458 + 31 +0.0 + 0 +LINE + 5 +1F2 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +407.9302085072016 + 20 +12.80857145648459 + 30 +0.0 + 11 +407.9271037585215 + 21 +16.90857047008457 + 31 +0.0 + 0 +LINE + 5 +1F3 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.0771040274815 + 20 +16.90868395982457 + 30 +0.0 + 11 +408.0797333288015 + 21 +13.45980437296457 + 31 +0.0 + 0 +LINE + 5 +1F4 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +407.2736773945614 + 20 +15.2485726724846 + 30 +0.0 + 11 +407.2736729775015 + 21 +12.80857267314457 + 31 +0.0 + 0 +LINE + 5 +1F5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +407.7302075051216 + 20 +14.10853547326458 + 30 +0.0 + 11 +407.7302075051216 + 21 +14.15853669914457 + 31 +0.0 + 0 +LINE + 5 +1F6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +407.8236691038216 + 20 +11.89857062472457 + 30 +0.0 + 11 +407.8236691038216 + 21 +11.79857150290458 + 31 +0.0 + 0 +LINE + 5 +1F7 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.0797333288015 + 20 +13.45980437296457 + 30 +0.0 + 11 +408.0797966002016 + 21 +12.80857111866458 + 31 +0.0 + 0 +LINE + 5 +1F8 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.3795107023213 + 20 +13.72979457974458 + 30 +0.0 + 11 +408.3771039431013 + 21 +16.90891107646458 + 31 +0.0 + 0 +LINE + 5 +1F9 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.5271035872215 + 20 +16.90902470082458 + 30 +0.0 + 11 +408.5308971280213 + 21 +11.89856951982458 + 31 +0.0 + 0 +LINE + 5 +1FA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +408.1236691058014 + 20 +21.84857654128459 + 30 +0.0 + 11 +408.1236691058014 + 21 +25.8485765397446 + 31 +0.0 + 0 +LINE + 5 +1FB +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.1790982227813 + 20 +13.72961843582458 + 30 +0.0 + 11 +408.1790949080816 + 21 +11.89856997956459 + 31 +0.0 + 0 +LINE + 5 +1FC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +408.4236691052415 + 20 +11.79857150290458 + 30 +0.0 + 11 +408.4236691052415 + 21 +10.59761037676459 + 31 +0.0 + 0 +LINE + 5 +1FD +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.5736691049616 + 20 +8.862056916204586 + 30 +0.0 + 11 +408.5736691049616 + 21 +11.89857013704459 + 31 +0.0 + 0 +LINE + 5 +1FE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +408.6736691056215 + 20 +34.34857653996456 + 30 +0.0 + 11 +408.6736691056215 + 21 +19.87437951686458 + 31 +0.0 + 0 +LINE + 5 +1FF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +408.6736691056215 + 20 +14.49597464250458 + 30 +0.0 + 11 +408.6736691056215 + 21 +17.11756976760458 + 31 +0.0 + 0 +LINE + 5 +200 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.8736691044013 + 20 +10.15983554746459 + 30 +0.0 + 11 +408.8736691044013 + 21 +9.309228150384591 + 31 +0.0 + 0 +LINE + 5 +201 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.0289121543416 + 20 +11.69833714914458 + 30 +0.0 + 11 +409.0289036936016 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +202 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.2288859200015 + 20 +13.39597464032457 + 30 +0.0 + 11 +409.2288859200015 + 21 +11.69833714914458 + 31 +0.0 + 0 +LINE + 5 +203 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.7289371906616 + 20 +11.69862233272459 + 30 +0.0 + 11 +409.7289200990013 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +204 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.8736691059216 + 20 +13.39597464032457 + 30 +0.0 + 11 +409.8736782956416 + 21 +11.69798545566458 + 31 +0.0 + 0 +LINE + 5 +205 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +408.1236691058014 + 20 +25.8485765397446 + 30 +0.0 + 11 +404.1236691048017 + 21 +25.8485765397446 + 31 +0.0 + 0 +LINE + 5 +206 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +408.6736691056215 + 20 +14.49597464250458 + 30 +0.0 + 11 +408.5293673698417 + 21 +13.91876769938456 + 31 +0.0 + 0 +LWPOLYLINE + 5 +207 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbPolyline + 90 + 5 + 70 + 0 + 43 +0.0 + 10 +409.7438819690016 + 20 +10.72123573530458 + 10 +409.7793670161416 + 20 +10.86389974766457 + 10 +409.8332496693615 + 20 +11.15086894258459 + 10 +409.8638698951416 + 20 +11.42876522702459 + 10 +409.8736690754416 + 20 +11.69810842214459 + 0 +LINE + 5 +208 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +409.5833321300816 + 20 +10.25205743058459 + 30 +0.0 + 11 +409.7439746028014 + 21 +10.72121071884459 + 31 +0.0 + 0 +LWPOLYLINE + 5 +209 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +408.7677915793014 + 20 +9.039419642504588 + 10 +408.8295500867216 + 20 +9.102303707744587 + 10 +409.0759967845817 + 20 +9.386667987884573 + 10 +409.2836098136016 + 20 +9.679797457504584 + 10 +409.4550294910816 + 20 +9.97703839718458 + 10 +409.5834318835016 + 20 +10.25201571616457 + 0 +LINE + 5 +20A +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +408.7678053765815 + 20 +9.039405794424586 + 30 +0.0 + 11 +408.7736691037417 + 21 +9.045276699624604 + 31 +0.0 + 0 +LINE + 5 +20B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +405.0736691047216 + 20 +35.84857653970456 + 30 +0.0 + 11 +407.1736691058815 + 21 +35.84857653970456 + 31 +0.0 + 0 +LINE + 5 +20C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.3833546696817 + 20 +10.49597464150459 + 30 +0.0 + 11 +422.8833546689216 + 21 +10.49597464150459 + 31 +0.0 + 0 +LINE + 5 +20D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +10.69597464282458 + 30 +0.0 + 11 +423.5833546684617 + 21 +10.69597464282458 + 31 +0.0 + 0 +LINE + 5 +20E +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +420.6226860508214 + 20 +11.89856997956459 + 30 +0.0 + 11 +421.4833546698415 + 21 +11.89856974588457 + 31 +0.0 + 0 +LINE + 5 +20F +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +422.8833546689216 + 20 +11.69798545820459 + 30 +0.0 + 11 +421.4833655791417 + 21 +11.69862233272459 + 31 +0.0 + 0 +LINE + 5 +210 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.5833546684617 + 20 +12.8459746405046 + 30 +0.0 + 11 +422.8833546689216 + 21 +12.8459746405046 + 31 +0.0 + 0 +LINE + 5 +211 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +13.04597464182459 + 30 +0.0 + 11 +423.3833546696817 + 21 +13.04597464182459 + 31 +0.0 + 0 +LINE + 5 +212 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +422.8833546689216 + 20 +13.39597464032457 + 30 +0.0 + 11 +421.4833546698415 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +213 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +421.7833546692816 + 20 +13.49597464098459 + 30 +0.0 + 11 +422.5833546694812 + 21 +13.49597464098459 + 31 +0.0 + 0 +LINE + 5 +214 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.1726859439616 + 20 +13.72997646152459 + 30 +0.0 + 11 +420.6226852024614 + 21 +13.72963119932458 + 31 +0.0 + 0 +LINE + 5 +215 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.5833546694812 + 20 +14.49597464250458 + 30 +0.0 + 11 +421.7833546692816 + 21 +14.49597464250458 + 31 +0.0 + 0 +LINE + 5 +216 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.0226825939817 + 20 +15.24857276646458 + 30 +0.0 + 11 +420.6226821773216 + 21 +15.24857294172458 + 31 +0.0 + 0 +LINE + 5 +217 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.0833546702416 + 20 +16.84857654130458 + 30 +0.0 + 11 +422.5833546694812 + 21 +16.84857654130458 + 31 +0.0 + 0 +LINE + 5 +218 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.0226841154415 + 20 +16.90891107646458 + 30 +0.0 + 11 +421.6333576947016 + 21 +16.90902492434459 + 31 +0.0 + 0 +LINE + 5 +219 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.7833574048616 + 20 +16.90891143206458 + 30 +0.0 + 11 +421.6333577175613 + 21 +16.90902491926459 + 31 +0.0 + 0 +LINE + 5 +21A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.5833546694812 + 20 +17.11756976760458 + 30 +0.0 + 11 +421.7833546692816 + 21 +17.11756976760458 + 31 +0.0 + 0 +LINE + 5 +21B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +421.7833546692816 + 20 +17.59288179132459 + 30 +0.0 + 11 +422.5833546694812 + 21 +17.59288179132459 + 31 +0.0 + 0 +LINE + 5 +21C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.0833546692213 + 20 +29.44857654064458 + 30 +0.0 + 11 +423.9833546685614 + 21 +29.3485765399846 + 31 +0.0 + 0 +LINE + 5 +21D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.8833546694217 + 20 +29.74857654008459 + 30 +0.0 + 11 +424.7833546687616 + 21 +29.64857654196458 + 31 +0.0 + 0 +LINE + 5 +21E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.0833546702416 + 20 +19.34857654002458 + 30 +0.0 + 11 +422.5833546694812 + 21 +19.34857654002458 + 31 +0.0 + 0 +LINE + 5 +21F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.5833546694812 + 20 +19.3990674906046 + 30 +0.0 + 11 +421.7833546692816 + 21 +19.3990674906046 + 31 +0.0 + 0 +LINE + 5 +220 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +420.9970986116216 + 20 +13.72982950474459 + 30 +0.0 + 11 +420.9985843262016 + 21 +11.89856951982458 + 31 +0.0 + 0 +LINE + 5 +221 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +420.6226821773216 + 20 +15.24857294172458 + 30 +0.0 + 11 +420.6226860508214 + 21 +11.89856997956459 + 31 +0.0 + 0 +LINE + 5 +222 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +420.7833546703017 + 20 +21.84857654128459 + 30 +0.0 + 11 +420.7833546703017 + 21 +25.8485765397446 + 31 +0.0 + 0 +LINE + 5 +223 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +420.8226825952015 + 20 +15.2485726724846 + 30 +0.0 + 11 +420.8226833089416 + 21 +13.72981558300458 + 31 +0.0 + 0 +LINE + 5 +224 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.0226856115016 + 20 +13.72979457974458 + 30 +0.0 + 11 +421.0226841154415 + 21 +16.90891107646458 + 31 +0.0 + 0 +LINE + 5 +225 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +421.7833546692816 + 20 +19.87437951686458 + 30 +0.0 + 11 +422.5833546694812 + 21 +19.87437951686458 + 31 +0.0 + 0 +LINE + 5 +226 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.1726844072616 + 20 +16.90902470082458 + 30 +0.0 + 11 +421.1726859439616 + 21 +13.72997646152459 + 31 +0.0 + 0 +LINE + 5 +227 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.4833546698415 + 20 +9.309228150384591 + 30 +0.0 + 11 +421.4833546698415 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +228 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +421.6333593939616 + 20 +13.39597448538459 + 30 +0.0 + 11 +421.6333576947016 + 21 +16.90902492434459 + 31 +0.0 + 0 +LINE + 5 +229 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +421.7833546692816 + 20 +13.49597464098459 + 30 +0.0 + 11 +421.7833546692816 + 21 +35.84857653970456 + 31 +0.0 + 0 +LINE + 5 +22A +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +421.7833590584016 + 20 +13.39597464540458 + 30 +0.0 + 11 +421.7833590126816 + 21 +13.49597464098459 + 31 +0.0 + 0 +LINE + 5 +22B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.5833546694812 + 20 +13.39597464032457 + 30 +0.0 + 11 +422.5833546694812 + 21 +35.84857653970456 + 31 +0.0 + 0 +LINE + 5 +22C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +420.7833546703017 + 20 +21.84857654128459 + 30 +0.0 + 11 +421.7833546692816 + 21 +21.84857654128459 + 31 +0.0 + 0 +LINE + 5 +22D +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +422.8833546689216 + 20 +9.045358954984584 + 30 +0.0 + 11 +422.8833546689216 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +22E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +32.84857654022459 + 30 +0.0 + 11 +422.8833546689216 + 21 +35.59857654186457 + 31 +0.0 + 0 +LINE + 5 +22F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.0833546702416 + 20 +16.84857654130458 + 30 +0.0 + 11 +423.0833546702416 + 21 +19.34857654002458 + 31 +0.0 + 0 +LINE + 5 +230 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.0833546702416 + 20 +27.39857654108457 + 30 +0.0 + 11 +423.0833546702416 + 21 +28.3985765400646 + 31 +0.0 + 0 +LINE + 5 +231 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.3833546696817 + 20 +10.49597464150459 + 30 +0.0 + 11 +423.3833546696817 + 21 +13.04597464182459 + 31 +0.0 + 0 +LINE + 5 +232 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.3833546696817 + 20 +32.9485765408846 + 30 +0.0 + 11 +423.3833546696817 + 21 +35.49857654120458 + 31 +0.0 + 0 +LINE + 5 +233 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.5833546684617 + 20 +35.2985765398846 + 30 +0.0 + 11 +423.5833546684617 + 21 +33.14857653966458 + 31 +0.0 + 0 +LINE + 5 +234 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.5833546684617 + 20 +12.8459746405046 + 30 +0.0 + 11 +423.5833546684617 + 21 +10.69597464282458 + 31 +0.0 + 0 +LINE + 5 +235 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.9833546685614 + 20 +29.3485765399846 + 30 +0.0 + 11 +423.9833546685614 + 21 +30.84857653972458 + 31 +0.0 + 0 +LINE + 5 +236 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.0833546692213 + 20 +29.44857654064458 + 30 +0.0 + 11 +424.0833546692213 + 21 +30.74857654160459 + 31 +0.0 + 0 +LINE + 5 +237 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.7833546687616 + 20 +29.64857654196458 + 30 +0.0 + 11 +424.7833546687616 + 21 +30.54857654028459 + 31 +0.0 + 0 +LINE + 5 +238 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.8833546694217 + 20 +29.74857654008459 + 30 +0.0 + 11 +424.8833546694217 + 21 +30.44857653962458 + 31 +0.0 + 0 +LINE + 5 +239 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +420.7833546703017 + 20 +25.8485765397446 + 30 +0.0 + 11 +421.7833546692816 + 21 +25.8485765397446 + 31 +0.0 + 0 +LINE + 5 +23A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.0833546702416 + 20 +27.39857654108457 + 30 +0.0 + 11 +422.5833546694812 + 21 +27.39857654108457 + 31 +0.0 + 0 +LINE + 5 +23B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.0833546702416 + 20 +28.3985765400646 + 30 +0.0 + 11 +422.5833546694812 + 21 +28.3985765400646 + 31 +0.0 + 0 +LINE + 5 +23C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.9833546685614 + 20 +29.3485765399846 + 30 +0.0 + 11 +422.5833546694812 + 21 +29.3485765399846 + 31 +0.0 + 0 +LINE + 5 +23D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.7833546687616 + 20 +29.64857654196458 + 30 +0.0 + 11 +424.0833546692213 + 21 +29.64857654196458 + 31 +0.0 + 0 +LINE + 5 +23E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.9833546685614 + 20 +30.84857653972458 + 30 +0.0 + 11 +424.0833546692213 + 21 +30.74857654160459 + 31 +0.0 + 0 +LINE + 5 +23F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.7833546687616 + 20 +30.54857654028459 + 30 +0.0 + 11 +424.8833546694217 + 21 +30.44857653962458 + 31 +0.0 + 0 +LINE + 5 +240 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +424.7833546687616 + 20 +30.54857654028459 + 30 +0.0 + 11 +424.0833546692213 + 21 +30.54857654028459 + 31 +0.0 + 0 +LINE + 5 +241 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.9833546685614 + 20 +30.84857653972458 + 30 +0.0 + 11 +422.5833546694812 + 21 +30.84857653972458 + 31 +0.0 + 0 +LINE + 5 +242 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +32.84857654022459 + 30 +0.0 + 11 +422.5833546694812 + 21 +32.84857654022459 + 31 +0.0 + 0 +LINE + 5 +243 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.3833546696817 + 20 +32.9485765408846 + 30 +0.0 + 11 +422.8833546689216 + 21 +32.9485765408846 + 31 +0.0 + 0 +LINE + 5 +244 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +33.14857653966458 + 30 +0.0 + 11 +423.5833546684617 + 21 +33.14857653966458 + 31 +0.0 + 0 +LINE + 5 +245 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.5833546694812 + 20 +34.34857653996456 + 30 +0.0 + 11 +421.7833546692816 + 21 +34.34857653996456 + 31 +0.0 + 0 +LINE + 5 +246 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +423.5833546684617 + 20 +35.2985765398846 + 30 +0.0 + 11 +422.8833546689216 + 21 +35.2985765398846 + 31 +0.0 + 0 +LINE + 5 +247 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +35.49857654120458 + 30 +0.0 + 11 +423.3833546696817 + 21 +35.49857654120458 + 31 +0.0 + 0 +LINE + 5 +248 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +422.8833546689216 + 20 +35.59857654186457 + 30 +0.0 + 11 +422.5833546694812 + 21 +35.59857654186457 + 31 +0.0 + 0 +LINE + 5 +249 +102 +{ACAD_REACTORS +330 +300 +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +421.7833546692816 + 20 +35.84857653970456 + 30 +0.0 + 11 +422.5833546694812 + 21 +35.84857653970456 + 31 +0.0 + 0 +LINE + 5 +24A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6398075603216 + 20 +10.39597464084459 + 30 +0.0 + 11 +436.7898075620817 + 21 +10.39597464084459 + 31 +0.0 + 0 +LINE + 5 +24B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.3398075608816 + 20 +10.49597464150459 + 30 +0.0 + 11 +437.0898075615214 + 21 +10.49597464150459 + 31 +0.0 + 0 +LINE + 5 +24C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.8898075627416 + 20 +10.69597464282458 + 30 +0.0 + 11 +438.5398075622017 + 21 +10.69597464282458 + 31 +0.0 + 0 +LINE + 5 +24D +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.0706712873813 + 20 +9.039405794424586 + 30 +0.0 + 11 +435.0648075627615 + 21 +9.045276699624604 + 31 +0.0 + 0 +LINE + 5 +24E +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.0089265772417 + 20 +9.102303707744587 + 30 +0.0 + 11 +435.0706850872017 + 21 +9.039419642504588 + 31 +0.0 + 0 +LINE + 5 +24F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.0148075626816 + 20 +11.79857150290458 + 30 +0.0 + 11 +435.4148075612616 + 21 +11.79857150290458 + 31 +0.0 + 0 +LINE + 5 +250 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +439.4148075622617 + 20 +11.79857150290458 + 30 +0.0 + 11 +440.0148075611416 + 21 +11.79857150290458 + 31 +0.0 + 0 +LINE + 5 +251 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +435.0648075627615 + 20 +11.8985699643246 + 30 +0.0 + 11 +436.0148075626816 + 21 +11.89857116828458 + 31 +0.0 + 0 +LINE + 5 +252 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +439.4148075622617 + 20 +11.89857116828458 + 30 +0.0 + 11 +440.3648075621815 + 21 +11.8985699643246 + 31 +0.0 + 0 +LINE + 5 +253 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.5398075622017 + 20 +12.8459746405046 + 30 +0.0 + 11 +436.8898075627416 + 21 +12.8459746405046 + 31 +0.0 + 0 +LINE + 5 +254 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.0898075615214 + 20 +13.04597464182459 + 30 +0.0 + 11 +438.3398075608816 + 21 +13.04597464182459 + 31 +0.0 + 0 +LINE + 5 +255 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.7898075620817 + 20 +13.14597464248459 + 30 +0.0 + 11 +438.6398075603216 + 21 +13.14597464248459 + 31 +0.0 + 0 +LINE + 5 +256 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +441.4648075618216 + 20 +13.39597464032457 + 30 +0.0 + 11 +440.0148075611416 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +257 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +433.9648075605817 + 20 +13.39597464032457 + 30 +0.0 + 11 +435.4148075612616 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +258 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +439.3213459610216 + 20 +13.45853724316459 + 30 +0.0 + 11 +438.6213459614816 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +259 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.8082691609216 + 20 +13.45853724316459 + 30 +0.0 + 11 +436.1082691613815 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +25A +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.1582691604415 + 20 +13.50853719650459 + 30 +0.0 + 11 +436.7582697028816 + 21 +13.50853719650459 + 31 +0.0 + 0 +LINE + 5 +25B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.6713454195215 + 20 +13.50853719650459 + 30 +0.0 + 11 +439.2713459619613 + 21 +13.50853719650459 + 31 +0.0 + 0 +LINE + 5 +25C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +439.3213459610216 + 20 +14.10853573742459 + 30 +0.0 + 11 +438.6713459630816 + 21 +14.10853719538457 + 31 +0.0 + 0 +LINE + 5 +25D +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.7582691593216 + 20 +14.10853719538457 + 30 +0.0 + 11 +436.1082691613815 + 21 +14.10853573742459 + 31 +0.0 + 0 +LINE + 5 +25E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.1082691613815 + 20 +14.15853606414459 + 30 +0.0 + 11 +436.8082691609216 + 21 +14.15853733160458 + 31 +0.0 + 0 +LINE + 5 +25F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6213459614816 + 20 +14.15853733160458 + 30 +0.0 + 11 +439.3213459610216 + 21 +14.15853606414459 + 31 +0.0 + 0 +LWPOLYLINE + 5 +260 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbPolyline + 90 + 5 + 70 + 0 + 43 +0.0 + 10 +434.2550447830014 + 20 +10.25201571362459 + 10 +434.3834471754217 + 20 +9.977038399724586 + 10 +434.5548668529017 + 20 +9.679797457504584 + 10 +434.7624798819217 + 20 +9.386667987884573 + 10 +435.0089265772417 + 20 +9.102303707744587 + 0 +LINE + 5 +261 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.8648154339017 + 20 +15.24857276646458 + 30 +0.0 + 11 +438.1220227234017 + 21 +15.24857417616458 + 31 +0.0 + 0 +LINE + 5 +262 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +437.3075610731816 + 20 +15.24857417616458 + 30 +0.0 + 11 +436.5647996885015 + 21 +15.24857276646458 + 31 +0.0 + 0 +LINE + 5 +263 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +434.2551445364216 + 20 +10.25205742804459 + 30 +0.0 + 11 +434.0945019849614 + 21 +10.72121100840458 + 31 +0.0 + 0 +LINE + 5 +264 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.0648075627416 + 20 +16.84857654130458 + 30 +0.0 + 11 +438.6648075611216 + 21 +16.84857654130458 + 31 +0.0 + 0 +LINE + 5 +265 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +433.9648075605817 + 20 +13.39597464032457 + 30 +0.0 + 11 +433.9647983708617 + 21 +11.69798545566458 + 31 +0.0 + 0 +LINE + 5 +266 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.4148075612616 + 20 +13.49597464098459 + 30 +0.0 + 11 +435.1648075608816 + 21 +14.49597464250458 + 31 +0.0 + 0 +LINE + 5 +267 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6648075611216 + 20 +19.34857654002458 + 30 +0.0 + 11 +440.0648075627416 + 21 +19.34857654002458 + 31 +0.0 + 0 +LINE + 5 +268 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +435.0648075627615 + 20 +9.045358954984584 + 30 +0.0 + 11 +435.0648075627615 + 21 +11.89857073394457 + 31 +0.0 + 0 +LINE + 5 +269 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.1648075608816 + 20 +34.34857653996456 + 30 +0.0 + 11 +435.1648075608816 + 21 +19.87437951686458 + 31 +0.0 + 0 +LINE + 5 +26A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.1648075608816 + 20 +14.49597464250458 + 30 +0.0 + 11 +435.1648075608816 + 21 +17.11756976760458 + 31 +0.0 + 0 +LINE + 5 +26B +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +435.2648075615416 + 20 +11.89857013704459 + 30 +0.0 + 11 +435.2648075615416 + 21 +8.862056916204586 + 31 +0.0 + 0 +LINE + 5 +26C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.4148075612616 + 20 +11.79857150290458 + 30 +0.0 + 11 +435.4148075612616 + 21 +10.59748798432458 + 31 +0.0 + 0 +LINE + 5 +26D +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +435.9148075620216 + 20 +12.89597464210458 + 30 +0.0 + 11 +435.9148075620216 + 21 +11.89857073394457 + 31 +0.0 + 0 +LINE + 5 +26E +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.3087144739816 + 20 +13.39597448538459 + 30 +0.0 + 11 +435.3091102542416 + 21 +13.91876387160459 + 31 +0.0 + 0 +LINE + 5 +26F +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +435.4587133688016 + 20 +13.39404319130458 + 30 +0.0 + 11 +435.4587861398017 + 21 +13.49016811462458 + 31 +0.0 + 0 +LINE + 5 +270 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.0148075626816 + 20 +12.89597464210458 + 30 +0.0 + 11 +436.0148075626816 + 21 +11.79857150290458 + 31 +0.0 + 0 +LINE + 5 +271 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.1082691613815 + 20 +13.45853724316459 + 30 +0.0 + 11 +436.1082691613815 + 21 +14.15853606414459 + 31 +0.0 + 0 +LINE + 5 +272 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.1582691604415 + 20 +13.50853719650459 + 30 +0.0 + 11 +436.1582691604415 + 21 +14.10853629114459 + 31 +0.0 + 0 +LINE + 5 +273 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.2582693693816 + 20 +14.10853670008457 + 30 +0.0 + 11 +436.2582693693816 + 21 +13.50853724222458 + 31 +0.0 + 0 +LINE + 5 +274 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.5582690868814 + 20 +13.45853724316459 + 30 +0.0 + 11 +436.5582689979817 + 21 +13.50853727524458 + 31 +0.0 + 0 +LINE + 5 +275 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.5648017535215 + 20 +14.10853626574458 + 30 +0.0 + 11 +436.5648016620816 + 21 +14.15853689218459 + 31 +0.0 + 0 +LINE + 5 +276 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.5648002015816 + 20 +14.96449830032458 + 30 +0.0 + 11 +436.5647996885015 + 21 +15.24857276646458 + 31 +0.0 + 0 +LINE + 5 +277 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.6582693694816 + 20 +13.50853724222458 + 30 +0.0 + 11 +436.6582693694816 + 21 +14.10853670008457 + 31 +0.0 + 0 +LINE + 5 +278 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.7148075622217 + 20 +27.39857654108457 + 30 +0.0 + 11 +436.7148075622217 + 21 +28.3985765400646 + 31 +0.0 + 0 +LINE + 5 +279 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.7582691618615 + 20 +14.10853719538457 + 30 +0.0 + 11 +436.7582686716416 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +27A +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.7648001063817 + 20 +15.24857322112458 + 30 +0.0 + 11 +436.7648008023417 + 21 +14.86361311474458 + 31 +0.0 + 0 +LINE + 5 +27B +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +436.7648020799616 + 20 +14.15853725286459 + 30 +0.0 + 11 +436.7648033474215 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +27C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.7898075620817 + 20 +10.39597464084459 + 30 +0.0 + 11 +436.7898075620817 + 21 +13.14597464248459 + 31 +0.0 + 0 +LINE + 5 +27D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.7898075620817 + 20 +32.84857654022459 + 30 +0.0 + 11 +436.7898075620817 + 21 +35.59857654186457 + 31 +0.0 + 0 +LINE + 5 +27E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.8082691609216 + 20 +14.15853733160458 + 30 +0.0 + 11 +436.8082691609216 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +27F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.8898075627416 + 20 +10.69597464282458 + 30 +0.0 + 11 +436.8898075627416 + 21 +12.8459746405046 + 31 +0.0 + 0 +LINE + 5 +280 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.8898075627416 + 20 +33.14857653966458 + 30 +0.0 + 11 +436.8898075627416 + 21 +35.2985765398846 + 31 +0.0 + 0 +LINE + 5 +281 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.0898075615214 + 20 +35.49857654120458 + 30 +0.0 + 11 +437.0898075615214 + 21 +32.9485765408846 + 31 +0.0 + 0 +LINE + 5 +282 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.0898075615214 + 20 +13.04597464182459 + 30 +0.0 + 11 +437.0898075615214 + 21 +10.49597464150459 + 31 +0.0 + 0 +LINE + 5 +283 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +437.1648006221017 + 20 +14.9650775778046 + 30 +0.0 + 11 +437.1648001090216 + 21 +15.24857394502459 + 31 +0.0 + 0 +LINE + 5 +284 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.5148075624217 + 20 +28.3985765400646 + 30 +0.0 + 11 +437.5148075624217 + 21 +27.39857654108457 + 31 +0.0 + 0 +LINE + 5 +285 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.9148075625217 + 20 +27.39857654108457 + 30 +0.0 + 11 +437.9148075625217 + 21 +28.3985765400646 + 31 +0.0 + 0 +LINE + 5 +286 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.2648150159216 + 20 +15.24857394502459 + 30 +0.0 + 11 +438.2648145003016 + 21 +14.96448179032459 + 31 +0.0 + 0 +LINE + 5 +287 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.3398075608816 + 20 +10.49597464150459 + 30 +0.0 + 11 +438.3398075608816 + 21 +13.04597464182459 + 31 +0.0 + 0 +LINE + 5 +288 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.3398075608816 + 20 +32.9485765408846 + 30 +0.0 + 11 +438.3398075608816 + 21 +35.49857654120458 + 31 +0.0 + 0 +LINE + 5 +289 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.5398075622017 + 20 +35.2985765398846 + 30 +0.0 + 11 +438.5398075622017 + 21 +33.14857653966458 + 31 +0.0 + 0 +LINE + 5 +28A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.5398075622017 + 20 +12.8459746405046 + 30 +0.0 + 11 +438.5398075622017 + 21 +10.69597464282458 + 31 +0.0 + 0 +LINE + 5 +28B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6213459614816 + 20 +13.45853724316459 + 30 +0.0 + 11 +438.6213459614816 + 21 +14.15853733160458 + 31 +0.0 + 0 +LINE + 5 +28C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6398075603216 + 20 +35.59857654186457 + 30 +0.0 + 11 +438.6398075603216 + 21 +32.84857654022459 + 31 +0.0 + 0 +LINE + 5 +28D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6398075603216 + 20 +13.14597464248459 + 30 +0.0 + 11 +438.6398075603216 + 21 +10.39597464084459 + 31 +0.0 + 0 +LINE + 5 +28E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6648075611216 + 20 +16.84857654130458 + 30 +0.0 + 11 +438.6648075611216 + 21 +19.34857654002458 + 31 +0.0 + 0 +LINE + 5 +28F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.6648117775216 + 20 +13.45853724316459 + 30 +0.0 + 11 +438.6648130449817 + 21 +14.15853725286459 + 31 +0.0 + 0 +LINE + 5 +290 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.6648143200615 + 20 +14.86382994946456 + 30 +0.0 + 11 +438.6648150185616 + 21 +15.24857322112458 + 31 +0.0 + 0 +LINE + 5 +291 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.6713464507616 + 20 +13.45853724316459 + 30 +0.0 + 11 +438.6713459605417 + 21 +14.10853713442457 + 31 +0.0 + 0 +LINE + 5 +292 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.7148075627216 + 20 +28.3985765400646 + 30 +0.0 + 11 +438.7148075627216 + 21 +27.39857654108457 + 31 +0.0 + 0 +LINE + 5 +293 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.7713457529216 + 20 +14.10853670008457 + 30 +0.0 + 11 +438.7713457529216 + 21 +13.50853724222458 + 31 +0.0 + 0 +LINE + 5 +294 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.8648154339017 + 20 +15.24857276646458 + 30 +0.0 + 11 +438.8648149208217 + 21 +14.96509390746457 + 31 +0.0 + 0 +LINE + 5 +295 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.8648134603216 + 20 +14.15853689218459 + 30 +0.0 + 11 +438.8648133714217 + 21 +14.10853626574458 + 31 +0.0 + 0 +LINE + 5 +296 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +438.8713461269616 + 20 +13.50853727524458 + 30 +0.0 + 11 +438.8713460355216 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +297 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +439.1713457530216 + 20 +13.50853724222458 + 30 +0.0 + 11 +439.1713457530216 + 21 +14.10853670008457 + 31 +0.0 + 0 +LINE + 5 +298 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +439.2713459619613 + 20 +14.10853629114459 + 30 +0.0 + 11 +439.2713459619613 + 21 +13.50853719650459 + 31 +0.0 + 0 +LINE + 5 +299 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +439.3213459610216 + 20 +14.15853606414459 + 30 +0.0 + 11 +439.3213459610216 + 21 +13.45853724316459 + 31 +0.0 + 0 +LINE + 5 +29A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +439.4148075622617 + 20 +11.79857150290458 + 30 +0.0 + 11 +439.4148075622617 + 21 +12.89597464210458 + 31 +0.0 + 0 +LINE + 5 +29B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +439.5148075603816 + 20 +12.89597464210458 + 30 +0.0 + 11 +439.5148075603816 + 21 +11.89857124448459 + 31 +0.0 + 0 +LINE + 5 +29C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +439.9708289826016 + 20 +13.49016855404459 + 30 +0.0 + 11 +439.9709017536017 + 21 +13.39404319130458 + 31 +0.0 + 0 +LINE + 5 +29D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.1205048681616 + 20 +13.91876387160459 + 30 +0.0 + 11 +440.1209006484217 + 21 +13.39597448538459 + 31 +0.0 + 0 +LINE + 5 +29E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.0148075611416 + 20 +11.79857150290458 + 30 +0.0 + 11 +440.0148075611416 + 21 +10.59761028786458 + 31 +0.0 + 0 +LINE + 5 +29F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.0648075627416 + 20 +19.34857654002458 + 30 +0.0 + 11 +440.0648075627416 + 21 +16.84857654130458 + 31 +0.0 + 0 +LINE + 5 +2A0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +440.1648075608616 + 20 +8.862056916204586 + 30 +0.0 + 11 +440.1648075608616 + 21 +11.89857013704459 + 31 +0.0 + 0 +LINE + 5 +2A1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.2648075615217 + 20 +26.41756976548459 + 30 +0.0 + 11 +440.2648075615217 + 21 +14.49597464250458 + 31 +0.0 + 0 +LINE + 5 +2A2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.2648075615217 + 20 +29.17437951728459 + 30 +0.0 + 11 +440.2648075615217 + 21 +34.34857653996456 + 31 +0.0 + 0 +LINE + 5 +2A3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +440.3648075621815 + 20 +11.89857073394457 + 30 +0.0 + 11 +440.3648075621815 + 21 +9.045358954984584 + 31 +0.0 + 0 +LINE + 5 +2A4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +441.4648167515416 + 20 +11.69798545566458 + 30 +0.0 + 11 +441.4648075618216 + 21 +13.39597464032457 + 31 +0.0 + 0 +LINE + 5 +2A5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.2648075615217 + 20 +14.49597464250458 + 30 +0.0 + 11 +440.0148075611416 + 21 +13.49597464098459 + 31 +0.0 + 0 +LINE + 5 +2A6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.7148075627216 + 20 +27.39857654108457 + 30 +0.0 + 11 +437.9148075625217 + 21 +27.39857654108457 + 31 +0.0 + 0 +LINE + 5 +2A7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.5148075624217 + 20 +27.39857654108457 + 30 +0.0 + 11 +436.7148075622217 + 21 +27.39857654108457 + 31 +0.0 + 0 +LINE + 5 +2A8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.7148075622217 + 20 +28.3985765400646 + 30 +0.0 + 11 +437.5148075624217 + 21 +28.3985765400646 + 31 +0.0 + 0 +LINE + 5 +2A9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.9148075625217 + 20 +28.3985765400646 + 30 +0.0 + 11 +438.7148075627216 + 21 +28.3985765400646 + 31 +0.0 + 0 +LINE + 5 +2AA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbLine + 10 +441.3351139705617 + 20 +10.72121408688458 + 30 +0.0 + 11 +441.1744712819417 + 21 +10.25205908920457 + 31 +0.0 + 0 +LWPOLYLINE + 5 +2AB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbPolyline + 90 + 6 + 70 + 0 + 43 +0.0 + 10 +440.3589302333217 + 20 +9.039419840624582 + 10 +440.4206855505016 + 20 +9.10230058608459 + 10 +440.6671329265415 + 20 +9.386665026244607 + 10 +440.8747465397616 + 20 +9.679794747324583 + 10 +441.0461667074616 + 20 +9.977036001964583 + 10 +441.1745710328218 + 20 +10.2520173722446 + 0 +LINE + 5 +2AC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +440.3589440331415 + 20 +9.03940599254458 + 30 +0.0 + 11 +440.3648075621815 + 21 +9.045276699624604 + 31 +0.0 + 0 +LINE + 5 +2AD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.6398075603216 + 20 +32.84857654022459 + 30 +0.0 + 11 +436.7898075620817 + 21 +32.84857654022459 + 31 +0.0 + 0 +LINE + 5 +2AE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.3398075608816 + 20 +32.9485765408846 + 30 +0.0 + 11 +437.0898075615214 + 21 +32.9485765408846 + 31 +0.0 + 0 +LINE + 5 +2AF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.8898075627416 + 20 +33.14857653966458 + 30 +0.0 + 11 +438.5398075622017 + 21 +33.14857653966458 + 31 +0.0 + 0 +LINE + 5 +2B0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.5398075622017 + 20 +35.2985765398846 + 30 +0.0 + 11 +436.8898075627416 + 21 +35.2985765398846 + 31 +0.0 + 0 +LINE + 5 +2B1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +437.0898075615214 + 20 +35.49857654120458 + 30 +0.0 + 11 +438.3398075608816 + 21 +35.49857654120458 + 31 +0.0 + 0 +LINE + 5 +2B2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +436.7898075620817 + 20 +35.59857654186457 + 30 +0.0 + 11 +438.6398075603216 + 21 +35.59857654186457 + 31 +0.0 + 0 +LINE + 5 +2B3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +438.7648075617817 + 20 +35.84857653970456 + 30 +0.0 + 11 +436.6648075606216 + 21 +35.84857653970456 + 31 +0.0 + 0 +ARC + 5 +2B4 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +406.3410802554416 + 20 +11.59276791400459 + 30 +0.0 + 40 +2.90986990034 +100 +AcDbArc + 50 +320.106647958201 + 51 +330.4989282617992 + 0 +ARC + 5 +2B5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +405.9062579526217 + 20 +11.59276791654458 + 30 +0.0 + 40 +2.90986990034 +100 +AcDbArc + 50 +209.5010717776993 + 51 +219.8933520823984 + 0 +ARC + 5 +2B6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +406.1236690900616 + 20 +11.69866410556458 + 30 +0.0 + 40 +2.54995454702 +100 +AcDbArc + 50 +305.4062767566005 + 51 +334.4186755736008 + 0 +ARC + 5 +2B7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +406.1236690900616 + 20 +11.69866410556458 + 30 +0.0 + 40 +2.54995454702 +100 +AcDbArc + 50 +205.5813264844996 + 51 +234.5937289846997 + 0 +ARC + 5 +2B8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +405.0736691047216 + 20 +34.34857653996456 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2B9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +407.1736691058815 + 20 +34.34857653996456 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2BA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +403.6236691040415 + 20 +27.79597464138458 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +288.0800126247994 + 51 +71.9199873756014 + 0 +ARC + 5 +2BB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +408.6236691040217 + 20 +18.49597464096456 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +108.0800126242992 + 51 +251.9199873756015 + 0 +ARC + 5 +2BC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +406.1236691053015 + 20 +9.195974640544584 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +35.01139778950157 + 51 +144.9886022102018 + 0 +ARC + 5 +2BD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +404.0736691057416 + 20 +26.41756976548459 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +108.0800126236002 + 51 +180.0 + 0 +ARC + 5 +2BE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +404.0736691057416 + 20 +29.17437951728459 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +180.0 + 51 +251.9199873753994 + 0 +ARC + 5 +2BF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +408.1736691048616 + 20 +19.87437951686458 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +288.0800126247001 + 51 +0.0 + 0 +ARC + 5 +2C0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +408.1736691048616 + 20 +17.11756976760458 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +0.0 + 51 +71.91998737549866 + 0 +ARC + 5 +2C1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +407.3112740986416 + 20 +10.02789673844457 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +215.0113977772007 + 51 +305.4084294002981 + 0 +ARC + 5 +2C2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +404.9360641094216 + 20 +10.02789673844457 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +234.591597306199 + 51 +324.9886022234004 + 0 +ARC + 5 +2C3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +405.2736691060416 + 20 +15.29857581098458 + 30 +0.0 + 40 +0.4499999991600001 +100 +AcDbArc + 50 +353.4612337683 + 51 +228.0754186267985 + 0 +ARC + 5 +2C4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +406.9736691045616 + 20 +15.29857581098458 + 30 +0.0 + 40 +0.4499999991600001 +100 +AcDbArc + 50 +311.9725450962989 + 51 +186.5470204501997 + 0 +ARC + 5 +2C5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +423.3833546696817 + 20 +33.14857653966458 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +423.3833546696817 + 20 +35.2985765398846 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2C7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +423.3833546696817 + 20 +10.69597464282458 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2C8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +423.3833546696817 + 20 +12.8459746405046 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2C9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +437.7038222186816 + 20 +11.70073435288458 + 30 +0.0 + 40 +3.760986298179997 +100 +AcDbArc + 50 +344.9040803249006 + 51 +359.9581226291001 + 0 +ARC + 5 +2CA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +435.2148075624817 + 20 +18.49597464096456 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +288.0800126243985 + 51 +71.91998737580012 + 0 +ARC + 5 +2CB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +435.4148075612616 + 20 +12.89597464210458 + 30 +0.0 + 40 +0.59999999888 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2CC +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +435.4148075612616 + 20 +12.89597464210458 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +0.0000000020000346 + 51 +90.0000000008989 + 0 +ARC + 5 +2CD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +436.5272025678613 + 20 +10.02789673844457 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +234.5915717969993 + 51 +324.9886022232989 + 0 +ARC + 5 +2CE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +435.6648075616416 + 20 +17.11756976760458 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +108.0800126243986 + 51 +180.0 + 0 +ARC + 5 +2CF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +435.6648075616416 + 20 +19.87437951686458 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +180.0 + 51 +251.9199873752006 + 0 +CIRCLE + 5 +2D0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +436.8648075619416 + 20 +15.29857581098458 + 30 +0.0 + 40 +0.4499999991600001 + 0 +ARC + 5 +2D1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.0898075615214 + 20 +10.69597464282458 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2D2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.0898075615214 + 20 +12.8459746405046 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2D3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +436.6648075606216 + 20 +34.34857653996456 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2D4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.0898075615214 + 20 +33.14857653966458 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +2D5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.0898075615214 + 20 +35.2985765398846 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2D6 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +437.7256111616416 + 20 +11.70582461702458 + 30 +0.0 + 40 +3.762763787639998 +100 +AcDbArc + 50 +202.7286504735013 + 51 +224.9963619135986 + 0 +ARC + 5 +2D7 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +437.7257929723014 + 20 +11.70073436050459 + 30 +0.0 + 40 +3.760986369299998 +100 +AcDbArc + 50 +180.0418774755001 + 51 +195.0959680557004 + 0 +ARC + 5 +2D8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075764417 + 20 +11.69866410556458 + 30 +0.0 + 40 +2.54995454702 +100 +AcDbArc + 50 +305.4062712498017 + 51 +334.4186735155004 + 0 +ARC + 5 +2D9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075764417 + 20 +11.69866410556458 + 30 +0.0 + 40 +2.54995454702 +100 +AcDbArc + 50 +205.581324426399 + 51 +234.5937234782005 + 0 +ARC + 5 +2DA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +9.195974640544584 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +35.01139778950157 + 51 +144.9886022102993 + 0 +ARC + 5 +2DB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +440.0148075611416 + 20 +12.89597464210458 + 30 +0.0 + 40 +0.59999999888 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +2DC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +440.0148075611416 + 20 +12.89597464210458 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +89.99999999910109 + 51 +179.9999999981 + 0 +ARC + 5 +2DD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.9024125570816 + 20 +10.02789673844457 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +215.0113977772007 + 51 +305.4084038899992 + 0 +CIRCLE + 5 +2DE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.5648075604616 + 20 +15.29857581098458 + 30 +0.0 + 40 +0.4499999991600001 + 0 +CIRCLE + 5 +2DF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +11.27597464106457 + 30 +0.0 + 40 +0.25000000038 + 0 +ARC + 5 +2E0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.3398075608816 + 20 +10.69597464282458 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2E1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.3398075608816 + 20 +12.8459746405046 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2E2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.7648075617817 + 20 +34.34857653996456 + 30 +0.0 + 40 +1.499999999739998 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +2E3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +440.2148075624616 + 20 +27.79597464138458 + 30 +0.0 + 40 +0.9499999999199998 +100 +AcDbArc + 50 +108.0800126242992 + 51 +251.9199873761016 + 0 +CIRCLE + 5 +2E4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +30.09857654112459 + 30 +0.0 + 40 +0.75000000114 + 0 +CIRCLE + 5 +2E5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +30.09857654112459 + 30 +0.0 + 40 +0.6500000004800001 + 0 +ARC + 5 +2E6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +439.7648075607617 + 20 +29.17437951728459 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +288.0800126247001 + 51 +0.0 + 0 +ARC + 5 +2E7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +439.7648075607617 + 20 +26.41756976548459 + 30 +0.0 + 40 +0.5000000007600001 +100 +AcDbArc + 50 +0.0 + 51 +71.91998737450167 + 0 +CIRCLE + 5 +2E8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +30.09857654112459 + 30 +0.0 + 40 +0.4499999991600001 + 0 +CIRCLE + 5 +2E9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +30.09857654112459 + 30 +0.0 + 40 +0.35000000104 + 0 +CIRCLE + 5 +2EA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +437.7148075612016 + 20 +34.71857654164458 + 30 +0.0 + 40 +0.25000000038 + 0 +ARC + 5 +2EB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.3398075608816 + 20 +33.14857653966458 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +ARC + 5 +2EC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +438.3398075608816 + 20 +35.2985765398846 + 30 +0.0 + 40 +0.19999999878 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +SPLINE + 5 +2ED +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 24 + 73 + 20 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0012422796 + 40 +0.0030070213 + 40 +0.0055797305 + 40 +0.0131435406 + 40 +0.0238613088 + 40 +0.0376215971 + 40 +0.0542722769 + 40 +0.0955630561 + 40 +0.1462613378 + 40 +0.2048747328 + 40 +0.2700195851 + 40 +0.340479329 + 40 +0.4152117263 + 40 +0.4933441458 + 40 +0.6570280180000001 + 40 +0.8270000879999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +408.5736691049616 + 20 +8.862056916204586 + 30 +0.0 + 10 +408.5736691049616 + 20 +8.861947945124576 + 30 +0.0 + 10 +408.5741246768217 + 20 +8.862104670744594 + 30 +0.0 + 10 +408.5744289383415 + 20 +8.862315191024601 + 30 +0.0 + 10 +408.5753765437615 + 20 +8.862909109064583 + 30 +0.0 + 10 +408.5767944200216 + 20 +8.863976536444575 + 30 +0.0 + 10 +408.5790458531617 + 20 +8.865703441804591 + 30 +0.0 + 10 +408.5818519715017 + 20 +8.86795483430459 + 30 +0.0 + 10 +408.5867254339416 + 20 +8.871938407744599 + 30 +0.0 + 10 +408.5940231511215 + 20 +8.87806279478459 + 30 +0.0 + 10 +408.6040600881217 + 20 +8.886654454004592 + 30 +0.0 + 10 +408.6156029301616 + 20 +8.896701324944562 + 30 +0.0 + 10 +408.6283738774416 + 20 +8.907977627004591 + 30 +0.0 + 10 +408.6421231920816 + 20 +8.920281262544596 + 30 +0.0 + 10 +408.6566380220816 + 20 +8.933437344944586 + 30 +0.0 + 10 +408.6770950576216 + 20 +8.952213273864581 + 30 +0.0 + 10 +408.7034777709216 + 20 +8.976886910064585 + 30 +0.0 + 10 +408.7355656569616 + 20 +9.007638357324598 + 30 +0.0 + 10 +408.7570302597016 + 20 +9.028719961084583 + 30 +0.0 + 10 +408.7677915793014 + 20 +9.039419683144592 + 30 +0.0 + 0 +SPLINE + 5 +2EE +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 15 + 73 + 11 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1237792291 + 40 +0.2602561054 + 40 +0.3896745740999999 + 40 +0.5138835727000001 + 40 +0.6359296942000002 + 40 +0.7574165403000001 + 40 +0.8782059661999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +408.8736691044013 + 20 +10.15983554746459 + 30 +0.0 + 10 +408.9055824518017 + 20 +10.21638182756458 + 30 +0.0 + 10 +408.9683317929016 + 20 +10.33724837018457 + 30 +0.0 + 10 +409.0477429904415 + 20 +10.52359436528458 + 30 +0.0 + 10 +409.1118082141017 + 20 +10.7150771674846 + 30 +0.0 + 10 +409.1593268439813 + 20 +10.90418180578459 + 30 +0.0 + 10 +409.1929728879414 + 20 +11.09460754888459 + 30 +0.0 + 10 +409.2148226004016 + 20 +11.28980313258458 + 30 +0.0 + 10 +409.2267263815217 + 20 +11.49087093212458 + 30 +0.0 + 10 +409.2289553051816 + 20 +11.62835622992458 + 30 +0.0 + 10 +409.2289553051816 + 20 +11.69833714914458 + 30 +0.0 + 0 +SPLINE + 5 +2EF +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 15 + 73 + 11 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2498050276 + 40 +0.3748334646 + 40 +0.4998529221 + 40 +0.6248690763 + 40 +0.7498928476000001 + 40 +0.8749331635999999 + 40 +0.9374665434 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +408.8736691044013 + 20 +9.309228150384591 + 30 +0.0 + 10 +409.0183992924615 + 20 +9.470326596284587 + 30 +0.0 + 10 +409.2138818631416 + 20 +9.733107185784596 + 30 +0.0 + 10 +409.4196354953215 + 20 +10.11506247470458 + 30 +0.0 + 10 +409.5440413196617 + 20 +10.41616543104458 + 30 +0.0 + 10 +409.6357452561417 + 20 +10.72875247922457 + 30 +0.0 + 10 +409.6943580345214 + 20 +11.04913673304458 + 30 +0.0 + 10 +409.7189219884413 + 20 +11.31931106950458 + 30 +0.0 + 10 +409.7277869491215 + 20 +11.53597552060458 + 30 +0.0 + 10 +409.7289404494815 + 20 +11.64441031770456 + 30 +0.0 + 10 +409.7289371906616 + 20 +11.69862233272459 + 30 +0.0 + 0 +SPLINE + 5 +2F0 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 19 + 73 + 15 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0624801241 + 40 +0.1249802813 + 40 +0.1874950912 + 40 +0.2499979896 + 40 +0.3124857114 + 40 +0.3749870023 + 40 +0.4999833067 + 40 +0.6249695201 + 40 +0.7499699911 + 40 +0.8124847146999998 + 40 +0.8749976155 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +409.0289121543416 + 20 +11.69833714914458 + 30 +0.0 + 10 +409.0294998036617 + 20 +11.66225996704458 + 30 +0.0 + 10 +409.0292665097416 + 20 +11.59006608806458 + 30 +0.0 + 10 +409.0254580947017 + 20 +11.4818439245246 + 30 +0.0 + 10 +409.0191721331817 + 20 +11.37372765358458 + 30 +0.0 + 10 +409.0104511117615 + 20 +11.26578441252458 + 30 +0.0 + 10 +408.9984243108217 + 20 +11.15815494020457 + 30 +0.0 + 10 +408.9770117069615 + 20 +11.01535857352457 + 30 +0.0 + 10 +408.9392904692217 + 20 +10.83863293510459 + 30 +0.0 + 10 +408.8749707705813 + 20 +10.63155200306458 + 30 +0.0 + 10 +408.8060740935416 + 20 +10.46446726992457 + 30 +0.0 + 10 +408.7421112318816 + 20 +10.33496886496457 + 30 +0.0 + 10 +408.6723147827016 + 20 +10.20852118796457 + 30 +0.0 + 10 +408.6142196487016 + 20 +10.11698822650458 + 30 +0.0 + 10 +408.5736691176617 + 20 +10.05726552654459 + 30 +0.0 + 0 +SPLINE + 5 +2F1 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 19 + 73 + 15 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1598493531 + 40 +0.3175821838 + 40 +0.4707530815000001 + 40 +0.6161826554 + 40 +0.7494476447000002 + 40 +0.8096148591 + 40 +0.8641325873999999 + 40 +0.9117638075 + 40 +0.9511161854 + 40 +0.9807928695999999 + 40 +0.9916985879 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +408.8736691044013 + 20 +9.309228150384591 + 30 +0.0 + 10 +408.8568713274817 + 20 +9.290530628724591 + 30 +0.0 + 10 +408.8234894333615 + 20 +9.253391005264598 + 30 +0.0 + 10 +408.7740370811615 + 20 +9.19831216190459 + 30 +0.0 + 10 +408.7262552971216 + 20 +9.144780470644583 + 30 +0.0 + 10 +408.6813978379415 + 20 +9.093797671924567 + 30 +0.0 + 10 +408.6467547246015 + 20 +9.053308408224577 + 30 +0.0 + 10 +408.6220543930016 + 20 +9.023139504884575 + 30 +0.0 + 10 +408.6063018743416 + 20 +9.003057289524582 + 30 +0.0 + 10 +408.5931010854015 + 20 +8.98513246634457 + 30 +0.0 + 10 +408.5829773337415 + 20 +8.969841417424582 + 30 +0.0 + 10 +408.5768662232814 + 20 +8.958792138024595 + 30 +0.0 + 10 +408.5742241203616 + 20 +8.951565388444572 + 30 +0.0 + 10 +408.5736691049616 + 20 +8.948556984504586 + 30 +0.0 + 10 +408.5736691049616 + 20 +8.947251660724568 + 30 +0.0 + 0 +SPLINE + 5 +2F2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 24 + 73 + 20 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0012422771 + 40 +0.0030070173 + 40 +0.0055797269 + 40 +0.0131435278 + 40 +0.0238612951 + 40 +0.0376215886 + 40 +0.0542722698 + 40 +0.0955630436 + 40 +0.1462613486 + 40 +0.2048747612 + 40 +0.2700196197 + 40 +0.3404793678 + 40 +0.4152117712 + 40 +0.4933441875 + 40 +0.6570280543 + 40 +0.8270001088999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +403.6736691056416 + 20 +8.862056916204586 + 30 +0.0 + 10 +403.6736691056416 + 20 +8.861947945124576 + 30 +0.0 + 10 +403.6732135337817 + 20 +8.862104670744594 + 30 +0.0 + 10 +403.6729092722616 + 20 +8.862315188484592 + 30 +0.0 + 10 +403.6719616668416 + 20 +8.862909109064583 + 30 +0.0 + 10 +403.6705437880415 + 20 +8.863976536444575 + 30 +0.0 + 10 +403.6682923523616 + 20 +8.865703444344584 + 30 +0.0 + 10 +403.6654862314817 + 20 +8.867954839384569 + 30 +0.0 + 10 +403.6606127639616 + 20 +8.87193841790458 + 30 +0.0 + 10 +403.6533150391615 + 20 +8.878062810024594 + 30 +0.0 + 10 +403.6432780894616 + 20 +8.886654484484601 + 30 +0.0 + 10 +403.6317352321813 + 20 +8.896701368124578 + 30 +0.0 + 10 +403.6189642696617 + 20 +8.907977682884585 + 30 +0.0 + 10 +403.6052149397817 + 20 +8.920281333664584 + 30 +0.0 + 10 +403.5907000945416 + 20 +8.933437431304588 + 30 +0.0 + 10 +403.5702430361416 + 20 +8.952213380544586 + 30 +0.0 + 10 +403.5438602974414 + 20 +8.97688704214457 + 30 +0.0 + 10 +403.5117723834614 + 20 +9.007638522424594 + 30 +0.0 + 10 +403.4903077604016 + 20 +9.028720146504587 + 30 +0.0 + 10 +403.4795464306416 + 20 +9.039419881264583 + 30 +0.0 + 0 +SPLINE + 5 +2F3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 15 + 73 + 11 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1217940338 + 40 +0.2425834597 + 40 +0.3640703058 + 40 +0.4861164273 + 40 +0.6103254259000001 + 40 +0.7397438946 + 40 +0.8762207709 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +403.0183829054216 + 20 +11.69833714914458 + 30 +0.0 + 10 +403.0183829054216 + 20 +11.62835622992458 + 30 +0.0 + 10 +403.0206118290816 + 20 +11.49087093212458 + 30 +0.0 + 10 +403.0325156102013 + 20 +11.28980313258458 + 30 +0.0 + 10 +403.0543653226614 + 20 +11.09460754888459 + 30 +0.0 + 10 +403.0880113666216 + 20 +10.90418180578459 + 30 +0.0 + 10 +403.1355299965015 + 20 +10.7150771674846 + 30 +0.0 + 10 +403.1995952176216 + 20 +10.52359436528458 + 30 +0.0 + 10 +403.2790064151615 + 20 +10.33724837018457 + 30 +0.0 + 10 +403.3417557588016 + 20 +10.21638182756458 + 30 +0.0 + 10 +403.3736691036616 + 20 +10.15983554746459 + 30 +0.0 + 0 +SPLINE + 5 +2F4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 15 + 73 + 11 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0625335519 + 40 +0.1250670347 + 40 +0.250107659 + 40 +0.3751317119 + 40 +0.5001480742000001 + 40 +0.6251676135000001 + 40 +0.7501959113 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +402.5184010199414 + 20 +11.69862233272459 + 30 +0.0 + 10 +402.5183977611217 + 20 +11.64441023642458 + 30 +0.0 + 10 +402.5195514138816 + 20 +11.53597526660458 + 30 +0.0 + 10 +402.5284162399416 + 20 +11.31931037354458 + 30 +0.0 + 10 +402.5529803335616 + 20 +11.04913543764459 + 30 +0.0 + 10 +402.6115933608616 + 20 +10.72875052342459 + 30 +0.0 + 10 +402.7032976783416 + 20 +10.41616306122457 + 30 +0.0 + 10 +402.8277038735216 + 20 +10.11506011758458 + 30 +0.0 + 10 +403.0334573304413 + 20 +9.733105715124587 + 30 +0.0 + 10 +403.2289394591615 + 20 +9.470325991764577 + 30 +0.0 + 10 +403.3736691036616 + 20 +9.309228150384591 + 30 +0.0 + 0 +SPLINE + 5 +2F5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 19 + 73 + 15 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0083013177 + 40 +0.0192069188 + 40 +0.0488834437 + 40 +0.0882357613 + 40 +0.1358669897 + 40 +0.1903847057 + 40 +0.2505519473 + 40 +0.3838170614 + 40 +0.5292467433 + 40 +0.6824177461 + 40 +0.84015062 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +403.6736691056416 + 20 +8.947251660724568 + 30 +0.0 + 10 +403.6736691056416 + 20 +8.948556969264583 + 30 +0.0 + 10 +403.6731141258016 + 20 +8.951565345264587 + 30 +0.0 + 10 +403.6704720025615 + 20 +8.958792031344597 + 30 +0.0 + 10 +403.6643609759216 + 20 +8.969841285344593 + 30 +0.0 + 10 +403.6542372293416 + 20 +8.985132303784586 + 30 +0.0 + 10 +403.6410364607215 + 20 +9.00305712950459 + 30 +0.0 + 10 +403.6252839395216 + 20 +9.023139347404589 + 30 +0.0 + 10 +403.6005836028417 + 20 +9.053308273604592 + 30 +0.0 + 10 +403.5659404615616 + 20 +9.093797567784584 + 30 +0.0 + 10 +403.5210829693617 + 20 +9.14478040968458 + 30 +0.0 + 10 +403.4733011573813 + 20 +9.198312131424595 + 30 +0.0 + 10 +403.4238487874016 + 20 +9.253390995104588 + 30 +0.0 + 10 +403.3904668856616 + 20 +9.290530626184583 + 30 +0.0 + 10 +403.3736691036616 + 20 +9.309228150384591 + 30 +0.0 + 0 +SPLINE + 5 +2F6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 19 + 73 + 15 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1250016989 + 40 +0.1875147507 + 40 +0.2500295303 + 40 +0.3750293484 + 40 +0.5000156461000002 + 40 +0.6250122082000003 + 40 +0.6875130062000001 + 40 +0.7500009390000001 + 40 +0.8125044880999999 + 40 +0.8750196575 + 40 +0.9375198297 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +403.6736690929417 + 20 +10.05726552654459 + 30 +0.0 + 10 +403.6331033219016 + 20 +10.11697742134459 + 30 +0.0 + 10 +403.5750089422815 + 20 +10.20851190172457 + 30 +0.0 + 10 +403.5052280963216 + 20 +10.33496774482459 + 30 +0.0 + 10 +403.4412710588815 + 20 +10.46446855770457 + 30 +0.0 + 10 +403.3723661319217 + 20 +10.63154943512459 + 30 +0.0 + 10 +403.3080463189816 + 20 +10.83863053734458 + 30 +0.0 + 10 +403.2703267855815 + 20 +11.01535661010457 + 30 +0.0 + 10 +403.2489198967216 + 20 +11.1581538505446 + 30 +0.0 + 10 +403.2368923464816 + 20 +11.26578341176459 + 30 +0.0 + 10 +403.2281656405417 + 20 +11.37372688396458 + 30 +0.0 + 10 +403.2218709134816 + 20 +11.48184332000459 + 30 +0.0 + 10 +403.2180680331016 + 20 +11.59006604742457 + 30 +0.0 + 10 +403.2178382926415 + 20 +11.6622599314846 + 30 +0.0 + 10 +403.2184260562615 + 20 +11.69833714914458 + 30 +0.0 + 0 +SPLINE + 5 +2F7 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 11 + 73 + 7 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.2223539657 + 40 +0.4555342793000002 + 40 +0.7127877553000001 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +421.4833546698415 + 20 +9.309228150384591 + 30 +0.0 + 10 +421.4833546698415 + 20 +9.271631014504599 + 30 +0.0 + 10 +421.4951853523016 + 20 +9.194081423604579 + 30 +0.0 + 10 +421.5507190715617 + 20 +9.084751492404571 + 30 +0.0 + 10 +421.6476467314016 + 20 +8.992189787764592 + 30 +0.0 + 10 +421.7355649782215 + 20 +8.95588820936458 + 30 +0.0 + 10 +421.7833546692816 + 20 +8.947251660724568 + 30 +0.0 + 0 +SPLINE + 5 +2F8 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 14 + 73 + 10 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1525447838 + 40 +0.297839089 + 40 +0.4323502931000001 + 40 +0.5564887836 + 40 +0.67268122 + 40 +0.7838125266000004 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +422.6833546701416 + 20 +8.862056916204586 + 30 +0.0 + 10 +422.6987665646417 + 20 +8.861683239024591 + 30 +0.0 + 10 +422.7290319219417 + 20 +8.864045487284592 + 30 +0.0 + 10 +422.7712471918416 + 20 +8.876459704264583 + 30 +0.0 + 10 +422.8074049427416 + 20 +8.89607246920459 + 30 +0.0 + 10 +422.8363665815416 + 20 +8.920921632104587 + 30 +0.0 + 10 +422.8580789587415 + 20 +8.949363487844586 + 30 +0.0 + 10 +422.8777286705216 + 20 +8.989899411344588 + 30 +0.0 + 10 +422.8833546689216 + 20 +9.023428442584595 + 30 +0.0 + 10 +422.8833546689216 + 20 +9.045276699624604 + 30 +0.0 + 0 +SPLINE + 5 +2F9 +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 9 + 73 + 5 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.4999797444 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +421.7833546692816 + 20 +8.947251660724568 + 30 +0.0 + 10 +421.9317265848816 + 20 +8.920437906884581 + 30 +0.0 + 10 +422.2312589068216 + 20 +8.881698362824584 + 30 +0.0 + 10 +422.5326114181616 + 20 +8.865711856824582 + 30 +0.0 + 10 +422.6833546701416 + 20 +8.862056916204586 + 30 +0.0 + 0 +SPLINE + 5 +2FA +330 +2 +100 +AcDbEntity + 8 +8_4_1_1 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 24 + 73 + 20 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0012422796 + 40 +0.0030070213 + 40 +0.0055797305 + 40 +0.0131435406 + 40 +0.0238613088 + 40 +0.0376215971 + 40 +0.0542722769 + 40 +0.0955630561 + 40 +0.1462613378 + 40 +0.2048747328 + 40 +0.2700195851 + 40 +0.340479329 + 40 +0.4152117263 + 40 +0.4933441458 + 40 +0.6570280180000001 + 40 +0.8270000879999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +435.2648075615416 + 20 +8.862056916204586 + 30 +0.0 + 10 +435.2648075615416 + 20 +8.861947945124576 + 30 +0.0 + 10 +435.2643519896814 + 20 +8.862104670744594 + 30 +0.0 + 10 +435.2640477281616 + 20 +8.862315191024601 + 30 +0.0 + 10 +435.2631001227416 + 20 +8.862909109064583 + 30 +0.0 + 10 +435.2616822464816 + 20 +8.863976536444575 + 30 +0.0 + 10 +435.2594308133417 + 20 +8.865703441804591 + 30 +0.0 + 10 +435.2566246950017 + 20 +8.86795483430459 + 30 +0.0 + 10 +435.2517512325615 + 20 +8.871938407744599 + 30 +0.0 + 10 +435.2444535153816 + 20 +8.87806279478459 + 30 +0.0 + 10 +435.2344165783816 + 20 +8.886654454004592 + 30 +0.0 + 10 +435.2228737363416 + 20 +8.896701324944562 + 30 +0.0 + 10 +435.2101027890616 + 20 +8.907977627004591 + 30 +0.0 + 10 +435.1963534744217 + 20 +8.920281262544596 + 30 +0.0 + 10 +435.1818386444215 + 20 +8.933437344944586 + 30 +0.0 + 10 +435.1613816088817 + 20 +8.952213273864581 + 30 +0.0 + 10 +435.1349988955815 + 20 +8.976886910064585 + 30 +0.0 + 10 +435.1029110095416 + 20 +9.007638357324598 + 30 +0.0 + 10 +435.0814464068015 + 20 +9.028719961084583 + 30 +0.0 + 10 +435.0706850872017 + 20 +9.039419683144592 + 30 +0.0 + 0 +SPLINE + 5 +2FB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 24 + 73 + 20 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0012422771 + 40 +0.0030070173 + 40 +0.0055797269 + 40 +0.0131435278 + 40 +0.0238612951 + 40 +0.0376215886 + 40 +0.0542722698 + 40 +0.0955630436 + 40 +0.1462613486 + 40 +0.2048747612 + 40 +0.2700196197 + 40 +0.3404793678 + 40 +0.4152117712 + 40 +0.4933441875 + 40 +0.6570280543 + 40 +0.8270001088999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +440.1648075608616 + 20 +8.862056916204586 + 30 +0.0 + 10 +440.1648075608616 + 20 +8.861947945124576 + 30 +0.0 + 10 +440.1652631327216 + 20 +8.862104670744594 + 30 +0.0 + 10 +440.1655673942417 + 20 +8.862315188484592 + 30 +0.0 + 10 +440.1665149996616 + 20 +8.862909109064583 + 30 +0.0 + 10 +440.1679328784616 + 20 +8.863976536444575 + 30 +0.0 + 10 +440.1701843141417 + 20 +8.865703444344584 + 30 +0.0 + 10 +440.1729904350218 + 20 +8.867954839384569 + 30 +0.0 + 10 +440.1778639025416 + 20 +8.87193841790458 + 30 +0.0 + 10 +440.1851616273416 + 20 +8.878062810024594 + 30 +0.0 + 10 +440.1951985770415 + 20 +8.886654484484601 + 30 +0.0 + 10 +440.2067414343215 + 20 +8.896701368124578 + 30 +0.0 + 10 +440.2195123968416 + 20 +8.907977682884585 + 30 +0.0 + 10 +440.2332617267213 + 20 +8.920281333664584 + 30 +0.0 + 10 +440.2477765719615 + 20 +8.933437431304588 + 30 +0.0 + 10 +440.2682336303617 + 20 +8.952213380544586 + 30 +0.0 + 10 +440.2946163690616 + 20 +8.97688704214457 + 30 +0.0 + 10 +440.3267042830415 + 20 +9.007638522424594 + 30 +0.0 + 10 +440.3481689061017 + 20 +9.028720146504587 + 30 +0.0 + 10 +440.3589302358617 + 20 +9.039419881264583 + 30 +0.0 + 0 +ARC + 5 +2FC +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbCircle + 10 +405.394203372377 + 20 +11.44768615160381 + 30 +0.0 + 40 +2.980629056400623 +100 +AcDbArc + 50 +194.1063563090765 + 51 +203.6498684938349 + 0 +LINE + 5 +2FD +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbLine + 10 +421.7833590584016 + 20 +13.39597464032457 + 30 +0.0 + 11 +421.7833574048616 + 21 +16.90891143206458 + 31 +0.0 + 0 +DIMENSION + 5 +2FE +102 +{ACAD_XDICTIONARY +360 +2FF +102 +} +102 +{ACAD_REACTORS +330 +300 +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbDimension + 2 +*D2 + 10 +421.7833546692816 + 20 +38.44285325353808 + 30 +0.0 + 11 +416.3058546692816 + 21 +38.44285325353808 + 31 +0.0 + 71 + 5 + 42 +0.8000000001998158 + 3 +STANDARD +100 +AcDbAlignedDimension + 13 +422.5833546694812 + 23 +35.84857653970456 + 33 +0.0 + 14 +421.7833546692816 + 24 +35.84857653970456 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 42 +1040 +0.0730807087 +1070 + 43 +1040 +0.4443307087 +1070 + 44 +1040 +0.2104724409 +1070 + 47 +1040 +0.0 +1070 + 48 +1040 +0.0 +1070 + 69 +1070 + 2 +1070 + 70 +1070 + 1 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +3.0 +1070 + 141 +1040 +0.1052362205 +1070 + 176 +1070 + 1 +1070 + 177 +1070 + 1 +1070 + 178 +1070 + 256 +1070 + 271 +1070 + 4 +1070 + 272 +1070 + 4 +1070 + 284 +1070 + 0 +1002 +} + 0 +MTEXT + 5 +30E +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbMText + 10 +-132.9591844419608 + 20 +22.50237551204691 + 30 +0.0 + 40 +2.0 + 41 +16.09449047682926 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;Ҷ} + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +30F +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbMText + 10 +-132.6284446016809 + 20 +28.56063218206396 + 30 +0.0 + 40 +2.0 + 41 +29.75175126993871 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;\C3;} + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +310 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbMText + 10 +-132.6518190116842 + 20 +15.38273895889415 + 30 +0.0 + 40 +2.0 + 41 +73.26365370854922 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;\C2;ʾ} + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +311 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbMText + 10 +-133.0718450919716 + 20 +9.254198706499552 + 30 +0.0 + 40 +2.0 + 41 +84.93525472954386 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;\C5;} + 73 + 1 + 44 +1.0 + 0 +MTEXT + 5 +312 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbMText + 10 +-132.8356402705919 + 20 +-3.689137166257635 + 30 +0.0 + 40 +2.0 + 41 +88.38232797542195 + 71 + 1 + 72 + 5 + 1 +{\C6;T-C\fSimSun|b0|i0|c134|p2;} + 73 + 1 + 44 +1.0 + 0 +LINE + 5 +313 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-91.70302867239724 + 20 +10.56527447052941 + 30 +0.0 + 11 +-91.75074799529724 + 21 +10.41527446826941 + 31 +0.0 + 0 +LINE + 5 +314 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbLine + 10 +-121.729415474781 + 20 +8.189117331938405 + 30 +0.0 + 11 +-91.75074799529724 + 21 +10.41527446826941 + 31 +0.0 + 0 +MTEXT + 5 +315 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbMText + 10 +-131.6636805508124 + 20 +-38.06221230592405 + 30 +0.0 + 40 +2.0 + 41 +15.49369854117685 + 71 + 1 + 72 + 5 + 1 +{\fSimSun|b0|i0|c134|p2;˿׶λ} + 73 + 1 + 44 +1.0 +1001 +ACAD +1000 +ACAD_MTEXT_DEFINED_HEIGHT_BEGIN +1070 + 46 +1040 +2.248015880133857 +1000 +ACAD_MTEXT_DEFINED_HEIGHT_END + 0 +LINE + 5 +316 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +3.137109670491781 + 30 +0.0 + 11 +-95.15660826393698 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +317 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-94.58972442183698 + 20 +12.48711791227178 + 30 +0.0 + 11 +-94.58972442183698 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +318 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-94.542005098937 + 20 +12.63711791199178 + 30 +0.0 + 11 +-94.542005098937 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +319 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-94.542005098937 + 20 +12.63711791199178 + 30 +0.0 + 11 +-94.58972442183698 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +31A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.67629928755699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-92.67629928755699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +31B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.46960418151699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-92.46960418151699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +31C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.09993709509699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-92.09993709509699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +31D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.156608262937 + 20 +17.93710967165178 + 30 +0.0 + 11 +-91.156608262937 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +31E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-91.71719207191699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-91.21504516917699 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +31F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.11584353521699 + 20 +12.53711791387177 + 30 +0.0 + 11 +-92.09993709509699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +320 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-90.48057984359699 + 20 +4.137109672011789 + 30 +0.0 + 11 +-90.48057984359699 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +321 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-89.906608263577 + 20 +22.13710967143179 + 30 +0.0 + 11 +-89.906608263577 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +322 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.289255383477 + 20 +6.131304304391775 + 30 +0.0 + 11 +-89.289255383477 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +323 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.25744250069699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-89.25744250069699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +324 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-88.90660826205699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-88.90660826205699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +325 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.822677970177 + 20 +7.941603142511766 + 30 +0.0 + 11 +-88.822677970177 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +326 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.78849239465699 + 20 +4.137109672011789 + 30 +0.0 + 11 +-88.78849239465699 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +327 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.35625151669701 + 20 +7.941603142511766 + 30 +0.0 + 11 +-88.35625151669701 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +328 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.27676362893699 + 20 +8.53561734183178 + 30 +0.0 + 11 +-88.27676362893699 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +329 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.04897396259699 + 20 +11.15008055587178 + 30 +0.0 + 11 +-88.04897396259699 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +32A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-87.506608262977 + 20 +22.13710967143179 + 30 +0.0 + 11 +-87.506608262977 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +32B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.306931880517 + 20 +6.131304304391775 + 30 +0.0 + 11 +-87.306931880517 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +32C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.16913514315699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-87.16913514315699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +32D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-86.79946805419699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-86.79946805419699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +32E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-86.50660826399699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-86.50660826399699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +32F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.27334894335698 + 20 +12.53711791387177 + 30 +0.0 + 11 +-89.289255383477 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +330 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.25744250069699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-89.27334894335698 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +331 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-85.106608262377 + 20 +22.13710967143179 + 30 +0.0 + 11 +-85.106608262377 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +332 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.515400416077 + 20 +11.15008055587178 + 30 +0.0 + 11 +-89.114951500437 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +333 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.64852504695699 + 20 +9.836785818991771 + 30 +0.0 + 11 +-88.04897396259699 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +334 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.04897396259699 + 20 +10.92026292559178 + 30 +0.0 + 11 +-88.58830312777699 + 21 +9.738882103191784 + 31 +0.0 + 0 +LINE + 5 +335 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.26984639461699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-87.23803351183699 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +336 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-86.84718737963699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-86.79946805419699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +337 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-84.10660826339698 + 20 +23.63710967117176 + 30 +0.0 + 11 +-84.10660826339698 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +338 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-82.70660826431699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-82.70660826431699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +339 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +-72.631608264497 + 20 +-3.362890329228221 + 30 +0.0 + 11 +-63.681608262577 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +33A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-81.706608262797 + 20 +23.63710967117176 + 30 +0.0 + 11 +-81.706608262797 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +33B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.672000406657 + 20 +6.131304304391775 + 30 +0.0 + 11 +-90.174147309397 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +33C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.05402706907699 + 20 +5.438278149171779 + 30 +0.0 + 11 +-87.55188016633699 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +33D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.13555220599699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-89.27334894335698 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +33E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.67629928755699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-92.46960418151699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +33F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.253640272577 + 20 +12.63711791199178 + 30 +0.0 + 11 +-92.11584353521699 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +340 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.306931880517 + 20 +12.48711791227178 + 30 +0.0 + 11 +-87.23803351183699 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +341 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.23803351183699 + 20 +12.53711791387177 + 30 +0.0 + 11 +-87.16913514315699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +342 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-78.15660826349699 + 20 +17.93710967165178 + 30 +0.0 + 11 +-78.15662082887699 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +343 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +3.137109670491781 + 30 +0.0 + 11 +-41.15660826313699 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +344 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +4.137109672011789 + 30 +0.0 + 11 +-41.15660826313699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +345 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-91.21504516917699 + 20 +5.438278149171779 + 30 +0.0 + 11 +-88.05402706907699 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +346 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.25918945545699 + 20 +5.438278149171779 + 30 +0.0 + 11 +-45.09817135789698 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +347 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +-72.631608264497 + 20 +-3.362890329228221 + 30 +0.0 + 11 +-72.631608264497 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +348 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-91.71719207191699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-92.09993709509699 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +349 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.672000406657 + 20 +6.131304304391775 + 30 +0.0 + 11 +-87.16913514315699 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +34A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.14408138391699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-46.64121612041698 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +34B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-44.59602445515701 + 20 +6.131304304391775 + 30 +0.0 + 11 +-44.213279431977 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +34C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.27676362893699 + 20 +7.941603142511766 + 30 +0.0 + 11 +-88.822677970177 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +34D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.036452898137 + 20 +7.941603142511766 + 30 +0.0 + 11 +-47.49053855689699 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +34E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +23.93710967061178 + 30 +0.0 + 11 +-71.906608264157 + 21 +27.23710967207178 + 31 +0.0 + 0 +LINE + 5 +34F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +-71.43160826419699 + 20 +3.137109670491781 + 30 +0.0 + 11 +-71.43160826419699 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +350 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.49053855689699 + 20 +8.53561734183178 + 30 +0.0 + 11 +-47.95696500783699 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +351 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.35625151669701 + 20 +8.53561734183178 + 30 +0.0 + 11 +-88.822677970177 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +352 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.114951500437 + 20 +9.836785818991771 + 30 +0.0 + 11 +-88.64852504695699 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +353 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.664691480117 + 20 +9.836785818991771 + 30 +0.0 + 11 +-47.198265026637 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +354 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 +100 +AcDbLine + 10 +-69.65660826327699 + 20 +25.43710967035178 + 30 +0.0 + 11 +-69.65660826327699 + 21 +26.93710967263176 + 31 +0.0 + 0 +LINE + 5 +355 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-88.04897396259699 + 20 +11.15008055587178 + 30 +0.0 + 11 +-88.515400416077 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +356 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.264242561937 + 20 +11.15008055587178 + 30 +0.0 + 11 +-47.79781611099699 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +357 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 +100 +AcDbLine + 10 +-66.65660826379699 + 20 +26.93710967263176 + 30 +0.0 + 11 +-66.65660826379699 + 21 +25.43710967035178 + 31 +0.0 + 0 +LINE + 5 +358 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.14408138391699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-49.51374847033699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +359 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.306931880517 + 20 +12.48711791227178 + 30 +0.0 + 11 +-89.25744250069699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +35A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.09993709509699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-92.46960418151699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +35B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-87.16913514315699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-86.79946805419699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +35C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.00628464655699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-47.055774026377 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +35D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-44.213279431977 + 20 +12.48711791227178 + 30 +0.0 + 11 +-43.84361234301699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +35E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-92.253640272577 + 20 +12.63711791199178 + 30 +0.0 + 11 +-94.542005098937 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +35F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-89.13555220599699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-86.84718737963699 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +360 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-47.17766432107699 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +361 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-44.059576254497 + 20 +12.63711791199178 + 30 +0.0 + 11 +-41.77121142813699 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +362 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +-64.881608262877 + 20 +-3.362890329228221 + 30 +0.0 + 11 +-64.881608262877 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +363 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-64.40660826291699 + 20 +27.23710967207178 + 30 +0.0 + 11 +-64.40660826291699 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +364 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 6 +100 +AcDbLine + 10 +-63.681608262577 + 20 +3.137109670491781 + 30 +0.0 + 11 +-63.681608262577 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +365 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +17.93710967165178 + 30 +0.0 + 11 +-58.15660826357699 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +366 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-78.15660826349699 + 20 +17.93710967165178 + 30 +0.0 + 11 +-91.156608262937 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +367 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-58.156581580877 + 20 +3.137109670491781 + 30 +0.0 + 11 +-58.15660826357699 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +368 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-81.706608262797 + 20 +22.13710967143179 + 30 +0.0 + 11 +-82.70660826431699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +369 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-84.10660826339698 + 20 +22.13710967143179 + 30 +0.0 + 11 +-85.106608262377 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +36A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-86.50660826399699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-87.506608262977 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +36B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-88.90660826205699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-89.906608263577 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +36C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-54.60660826427699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-53.606608262757 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +36D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-52.206608263677 + 20 +22.13710967143179 + 30 +0.0 + 11 +-51.20660826215699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +36E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-49.80660826307699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-48.806608264097 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +36F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-47.406608262477 + 20 +22.13710967143179 + 30 +0.0 + 11 +-46.40660826349699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +370 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.07518301523699 + 20 +12.53711791387177 + 30 +0.0 + 11 +-49.14408138391699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +371 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-46.40660826349699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-47.406608262477 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +372 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-48.806608264097 + 20 +23.63710967117176 + 30 +0.0 + 11 +-49.80660826307699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +373 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-51.20660826215699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-52.206608263677 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +374 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-53.606608262757 + 20 +23.63710967117176 + 30 +0.0 + 11 +-54.60660826427699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +375 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-89.906608263577 + 20 +23.63710967117176 + 30 +0.0 + 11 +-88.90660826205699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +376 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-87.506608262977 + 20 +23.63710967117176 + 30 +0.0 + 11 +-86.50660826399699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +377 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-85.106608262377 + 20 +23.63710967117176 + 30 +0.0 + 11 +-84.10660826339698 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +378 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-82.70660826431699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-81.706608262797 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +379 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +23.93710967061178 + 30 +0.0 + 11 +-64.40660826291699 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +37A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +23.93710967061178 + 30 +0.0 + 11 +-91.156608262937 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +37B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.00628464655699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-49.07518301523699 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +37C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.761336360737 + 20 +6.131304304391775 + 30 +0.0 + 11 +-48.25918945545699 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +37D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-54.60660826427699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-54.60660826427699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +37E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-53.606608262757 + 20 +22.13710967143179 + 30 +0.0 + 11 +-53.606608262757 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +37F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-44.059576254497 + 20 +12.63711791199178 + 30 +0.0 + 11 +-44.19737298931699 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +380 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-43.63691723951698 + 20 +12.63711791199178 + 30 +0.0 + 11 +-43.84361234301699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +381 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 +100 +AcDbLine + 10 +-66.65660826379699 + 20 +25.43710967035178 + 30 +0.0 + 11 +-69.65660826327699 + 21 +25.43710967035178 + 31 +0.0 + 0 +LINE + 5 +382 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.17766432107699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-47.03986758371698 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +383 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-46.139069215137 + 20 +5.438278149171779 + 30 +0.0 + 11 +-46.64121612041698 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +384 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-52.206608263677 + 20 +23.63710967117176 + 30 +0.0 + 11 +-52.206608263677 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +385 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 3 +100 +AcDbLine + 10 +-69.65660826327699 + 20 +26.93710967263176 + 30 +0.0 + 11 +-66.65660826379699 + 21 +26.93710967263176 + 31 +0.0 + 0 +LINE + 5 +386 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +27.23710967207178 + 30 +0.0 + 11 +-64.40660826291699 + 21 +27.23710967207178 + 31 +0.0 + 0 +LINE + 5 +387 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-51.20660826215699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-51.20660826215699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +388 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-49.80660826307699 + 20 +23.63710967117176 + 30 +0.0 + 11 +-49.80660826307699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +389 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.51374847033699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-49.51374847033699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +38A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-49.51374847033699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +38B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.043370132457 + 20 +12.63711791199178 + 30 +0.0 + 11 +-49.07518301523699 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +38C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.72491339929699 + 20 +9.738882103191784 + 30 +0.0 + 11 +-48.264242561937 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +38D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.264242561937 + 20 +11.15008055587178 + 30 +0.0 + 11 +-47.664691480117 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +38E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.198265026637 + 20 +9.836785818991771 + 30 +0.0 + 11 +-47.79781611099699 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +38F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.14408138391699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-49.14408138391699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +390 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-49.00628464655699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-49.00628464655699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +391 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-48.806608264097 + 20 +22.13710967143179 + 30 +0.0 + 11 +-48.806608264097 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +392 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.264242561937 + 20 +11.15008055587178 + 30 +0.0 + 11 +-48.264242561937 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +393 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-48.036452898137 + 20 +8.53561734183178 + 30 +0.0 + 11 +-48.036452898137 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +394 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.95696500783699 + 20 +7.941603142511766 + 30 +0.0 + 11 +-47.95696500783699 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +395 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.52472413241699 + 20 +4.137109672011789 + 30 +0.0 + 11 +-47.52472413241699 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +396 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.49053855689699 + 20 +7.941603142511766 + 30 +0.0 + 11 +-47.49053855689699 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +397 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-47.406608262477 + 20 +23.63710967117176 + 30 +0.0 + 11 +-47.406608262477 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +398 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.055774026377 + 20 +12.48711791227178 + 30 +0.0 + 11 +-47.03986758371698 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +399 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.03986758371698 + 20 +12.53711791387177 + 30 +0.0 + 11 +-47.02396114359699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +39A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.055774026377 + 20 +6.131304304391775 + 30 +0.0 + 11 +-47.055774026377 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +39B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-47.02396114359699 + 20 +6.131304304391775 + 30 +0.0 + 11 +-47.02396114359699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +39C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 1 +100 +AcDbLine + 10 +-46.40660826349699 + 20 +22.13710967143179 + 30 +0.0 + 11 +-46.40660826349699 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +39D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-45.832636683477 + 20 +4.137109672011789 + 30 +0.0 + 11 +-45.832636683477 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +39E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +23.93710967061178 + 30 +0.0 + 11 +-45.15660826413699 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +39F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-44.19737298931699 + 20 +12.53711791387177 + 30 +0.0 + 11 +-44.213279431977 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +3A0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-45.09817135789698 + 20 +5.438278149171779 + 30 +0.0 + 11 +-44.59602445515701 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +3A1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-44.213279431977 + 20 +6.131304304391775 + 30 +0.0 + 11 +-44.213279431977 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +3A2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-43.84361234301699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-43.84361234301699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +3A3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-43.63691723951698 + 20 +12.63711791199178 + 30 +0.0 + 11 +-43.63691723951698 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +3A4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-41.77121142813699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-41.77121142813699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +3A5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-41.72349210269699 + 20 +12.48711791227178 + 30 +0.0 + 11 +-41.72349210269699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +3A6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.15660826313699 + 20 +4.137109672011789 + 30 +0.0 + 11 +-41.15660826313699 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +3A7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbLine + 10 +-41.77121142813699 + 20 +12.63711791199178 + 30 +0.0 + 11 +-41.72349210269699 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +3A8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +70.01797621329178 + 30 +0.0 + 11 +-95.15660826393698 + 21 +74.98954017667177 + 31 +0.0 + 0 +LINE + 5 +3A9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.542005098937 + 20 +71.88992555803179 + 30 +0.0 + 11 +-94.58972442183698 + 21 +72.09662066153175 + 31 +0.0 + 0 +LINE + 5 +3AA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.119346083957 + 20 +72.56632137313175 + 30 +0.0 + 11 +-94.151158966737 + 21 +72.70411811049178 + 31 +0.0 + 0 +LINE + 5 +3AB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.156608262937 + 20 +66.80375871235177 + 30 +0.0 + 11 +-91.156608262937 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3AC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.13174997787699 + 20 +71.50121024453176 + 30 +0.0 + 11 +-92.09993709509699 + 21 +71.36341350717174 + 31 +0.0 + 0 +LINE + 5 +3AD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.906608263577 + 20 +65.50375871393178 + 30 +0.0 + 11 +-89.906608263577 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3AE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.90660826205699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-88.90660826205699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3AF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.957704836517 + 20 +79.60375554309178 + 30 +0.0 + 11 +-90.377959919297 + 21 +78.93120681961176 + 31 +0.0 + 0 +LINE + 5 +3B0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.216157608397 + 20 +74.38914105997179 + 30 +0.0 + 11 +-93.63641269371699 + 21 +73.71659233649177 + 31 +0.0 + 0 +LINE + 5 +3B1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.60070008391698 + 20 +75.27972499127173 + 30 +0.0 + 11 +-94.58972442183698 + 21 +72.09662066153175 + 31 +0.0 + 0 +LINE + 5 +3B2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-90.90861263497698 + 20 +77.98763096229174 + 30 +0.0 + 11 +-88.919588294517 + 21 +81.1707352920318 + 31 +0.0 + 0 +LINE + 5 +3B3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.119346083957 + 20 +72.56632137313175 + 30 +0.0 + 11 +-94.542005098937 + 21 +71.88992555803179 + 31 +0.0 + 0 +LINE + 5 +3B4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.13555220599699 + 20 +80.54205879983175 + 30 +0.0 + 11 +-88.712893191017 + 21 +81.21845461493178 + 31 +0.0 + 0 +LINE + 5 +3B5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.515400416077 + 20 +79.97766819379177 + 30 +0.0 + 11 +-89.23417065747699 + 21 +78.82739535845178 + 31 +0.0 + 0 +LINE + 5 +3B6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.621447700537 + 20 +73.40661894831175 + 30 +0.0 + 11 +-93.340218515977 + 21 +72.25634519603175 + 31 +0.0 + 0 +LINE + 5 +3B7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.87379206249699 + 20 +71.96488959911175 + 30 +0.0 + 11 +-92.155021821097 + 21 +73.11516243445175 + 31 +0.0 + 0 +LINE + 5 +3B8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.76774477803699 + 20 +78.53593884713177 + 30 +0.0 + 11 +-88.04897396259699 + 21 +79.68621259941176 + 31 +0.0 + 0 +LINE + 5 +3B9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.506608262977 + 20 +65.50375871393178 + 30 +0.0 + 11 +-87.506608262977 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3BA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.253640272577 + 20 +71.40049899307178 + 30 +0.0 + 11 +-92.67629928755699 + 21 +70.72410317797181 + 31 +0.0 + 0 +LINE + 5 +3BB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.26984639461699 + 20 +79.37623641977177 + 30 +0.0 + 11 +-86.84718737963699 + 21 +80.0526322348718 + 31 +0.0 + 0 +LINE + 5 +3BC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.46960418151699 + 20 +70.77182250087179 + 30 +0.0 + 11 +-90.48057984359699 + 21 +73.95492683315177 + 31 +0.0 + 0 +LINE + 5 +3BD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.78849239465699 + 20 +76.66283280163179 + 30 +0.0 + 11 +-86.79946805419699 + 21 +79.84593713137178 + 31 +0.0 + 0 +LINE + 5 +3BE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.43148764205699 + 20 +72.33880224981175 + 30 +0.0 + 11 +-91.01123255927699 + 21 +73.01135097329177 + 31 +0.0 + 0 +LINE + 5 +3BF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.17303487017699 + 20 +77.55341673293179 + 30 +0.0 + 11 +-87.752779784857 + 21 +78.22596545641175 + 31 +0.0 + 0 +LINE + 5 +3C0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-86.50660826399699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-86.50660826399699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3C1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-85.106608262377 + 20 +65.50375871393178 + 30 +0.0 + 11 +-85.106608262377 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3C2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.25744250069699 + 20 +80.44134755091176 + 30 +0.0 + 11 +-89.289255383477 + 21 +80.57914428573178 + 31 +0.0 + 0 +LINE + 5 +3C3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.26984639461699 + 20 +79.37623641977177 + 30 +0.0 + 11 +-87.23803351183699 + 21 +79.23843968495174 + 31 +0.0 + 0 +LINE + 5 +3C4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-84.10660826339698 + 20 +65.50375871393178 + 30 +0.0 + 11 +-84.10660826339698 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3C5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-86.84718737963699 + 20 +80.0526322348718 + 30 +0.0 + 11 +-86.79946805419699 + 21 +79.84593713137178 + 31 +0.0 + 0 +LINE + 5 +3C6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-82.70660826431699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-82.70660826431699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3C7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-81.706608262797 + 20 +65.50375871393178 + 30 +0.0 + 11 +-81.706608262797 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3C8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.67629928755699 + 20 +70.72410317797181 + 30 +0.0 + 11 +-94.542005098937 + 21 +71.88992555803179 + 31 +0.0 + 0 +LINE + 5 +3C9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.253640272577 + 20 +71.40049899307178 + 30 +0.0 + 11 +-94.119346083957 + 21 +72.56632137313175 + 31 +0.0 + 0 +LINE + 5 +3CA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.13174997787699 + 20 +71.50121024453176 + 30 +0.0 + 11 +-94.08226059805699 + 21 +72.72002455061175 + 31 +0.0 + 0 +LINE + 5 +3CB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.71719207191699 + 20 +71.97593358261179 + 30 +0.0 + 11 +-92.544038965337 + 21 +72.49260486575178 + 31 +0.0 + 0 +LINE + 5 +3CC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.01046541881699 + 20 +72.7840604601318 + 30 +0.0 + 11 +-93.83731231223698 + 21 +73.30073174327174 + 31 +0.0 + 0 +LINE + 5 +3CD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.63641269371699 + 20 +73.71659233649177 + 30 +0.0 + 11 +-93.59401028931699 + 21 +73.69009637221177 + 31 +0.0 + 0 +LINE + 5 +3CE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.47389004899698 + 20 +72.36529821155176 + 30 +0.0 + 11 +-91.43148764205699 + 21 +72.33880224981175 + 31 +0.0 + 0 +LINE + 5 +3CF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.27424097813701 + 20 +72.92437189909179 + 30 +0.0 + 11 +-92.740667431617 + 21 +73.21582749601174 + 31 +0.0 + 0 +LINE + 5 +3D0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.15502800345699 + 20 +73.11515254115175 + 30 +0.0 + 11 +-92.62145445693699 + 21 +73.40660813553177 + 31 +0.0 + 0 +LINE + 5 +3D1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.21504516917699 + 20 +72.77953661091181 + 30 +0.0 + 11 +-93.335165409497 + 21 +74.10433477157176 + 31 +0.0 + 0 +LINE + 5 +3D2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.01123255927699 + 20 +73.01135097329177 + 30 +0.0 + 11 +-91.05363496367699 + 21 +73.03784693503178 + 31 +0.0 + 0 +LINE + 5 +3D3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.17375520399698 + 20 +74.36264509569179 + 30 +0.0 + 11 +-93.216157608397 + 21 +74.38914105997179 + 31 +0.0 + 0 +LINE + 5 +3D4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-77.15660826451699 + 20 +62.60375871257178 + 30 +0.0 + 11 +-59.15660826255699 + 21 +62.60375871257178 + 31 +0.0 + 0 +LINE + 5 +3D5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-90.48057984359699 + 20 +73.95492683315177 + 30 +0.0 + 11 +-92.60070008391698 + 21 +75.27972499127173 + 31 +0.0 + 0 +LINE + 5 +3D6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-77.15660826451699 + 20 +66.00375871215176 + 30 +0.0 + 11 +-77.15660826451699 + 21 +62.60375871257178 + 31 +0.0 + 0 +LINE + 5 +3D7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-78.15662082887699 + 20 +63.73362890393178 + 30 +0.0 + 11 +-77.15660826451699 + 21 +63.73369654413178 + 31 +0.0 + 0 +LINE + 5 +3D8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-59.15660826255699 + 20 +63.73491403217177 + 30 +0.0 + 11 +-58.156581580877 + 21 +63.73498167237177 + 31 +0.0 + 0 +LINE + 5 +3D9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-69.65660826327699 + 20 +65.00375871317176 + 30 +0.0 + 11 +-66.65660826379699 + 21 +65.00375871317176 + 31 +0.0 + 0 +LINE + 5 +3DA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.40660826349699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-47.406608262477 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3DB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.806608264097 + 20 +65.50375871393178 + 30 +0.0 + 11 +-49.80660826307699 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3DC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-51.20660826215699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-52.206608263677 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3DD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-53.606608262757 + 20 +65.50375871393178 + 30 +0.0 + 11 +-54.60660826427699 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3DE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.906608263577 + 20 +65.50375871393178 + 30 +0.0 + 11 +-88.90660826205699 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3DF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.506608262977 + 20 +65.50375871393178 + 30 +0.0 + 11 +-86.50660826399699 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3E0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-85.106608262377 + 20 +65.50375871393178 + 30 +0.0 + 11 +-84.10660826339698 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3E1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-82.70660826431699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-81.706608262797 + 21 +65.50375871393178 + 31 +0.0 + 0 +LINE + 5 +3E2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.156608262937 + 20 +66.00375871215176 + 30 +0.0 + 11 +-45.15660826413699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3E3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.78849239465699 + 20 +76.66283280163179 + 30 +0.0 + 11 +-90.90861263497698 + 21 +77.98763096229174 + 31 +0.0 + 0 +LINE + 5 +3E4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-90.377959919297 + 20 +78.93120681961176 + 30 +0.0 + 11 +-90.33555751489698 + 21 +78.9047108578718 + 31 +0.0 + 0 +LINE + 5 +3E5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.21543727457699 + 20 +77.57991269721173 + 30 +0.0 + 11 +-88.17303487017699 + 21 +77.55341673293179 + 31 +0.0 + 0 +LINE + 5 +3E6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.05402706907699 + 20 +77.83822302133177 + 30 +0.0 + 11 +-90.174147309397 + 21 +79.16302118199178 + 31 +0.0 + 0 +LINE + 5 +3E7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +66.80375871235177 + 30 +0.0 + 11 +-71.906608264157 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3E8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.156608262937 + 20 +66.80375871235177 + 30 +0.0 + 11 +-45.15660826413699 + 21 +66.80375871235177 + 31 +0.0 + 0 +LINE + 5 +3E9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.234164475117 + 20 +78.82740525175177 + 30 +0.0 + 11 +-88.767738021637 + 21 +78.53594965737176 + 31 +0.0 + 0 +LINE + 5 +3EA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.114951500437 + 20 +79.01818589381173 + 30 +0.0 + 11 +-88.64852504695699 + 21 +78.72673029689178 + 31 +0.0 + 0 +LINE + 5 +3EB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.752779784857 + 20 +78.22596545641175 + 30 +0.0 + 11 +-87.795182189257 + 21 +78.25246142069175 + 31 +0.0 + 0 +LINE + 5 +3EC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.91530242957699 + 20 +79.57725958135177 + 30 +0.0 + 11 +-89.957704836517 + 21 +79.60375554309178 + 31 +0.0 + 0 +LINE + 5 +3ED +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.55188016633699 + 20 +78.64182604963179 + 30 +0.0 + 11 +-88.378727059757 + 21 +79.15849733277173 + 31 +0.0 + 0 +LINE + 5 +3EE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.84515351323699 + 20 +79.44995292715174 + 30 +0.0 + 11 +-89.672000406657 + 21 +79.96662421029174 + 31 +0.0 + 0 +LINE + 5 +3EF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.306931880517 + 20 +79.22253324229178 + 30 +0.0 + 11 +-89.25744250069699 + 21 +80.44134755091176 + 31 +0.0 + 0 +LINE + 5 +3F0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.26984639461699 + 20 +79.37623641977177 + 30 +0.0 + 11 +-89.13555220599699 + 21 +80.54205879983175 + 31 +0.0 + 0 +LINE + 5 +3F1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-86.84718737963699 + 20 +80.0526322348718 + 30 +0.0 + 11 +-88.712893191017 + 21 +81.21845461493178 + 31 +0.0 + 0 +LINE + 5 +3F2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-69.65660826327699 + 20 +65.00375871317176 + 30 +0.0 + 11 +-69.65660826327699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3F3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-66.65660826379699 + 20 +65.00375871317176 + 30 +0.0 + 11 +-66.65660826379699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3F4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-64.40660826291699 + 20 +66.80375871235177 + 30 +0.0 + 11 +-64.40660826291699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +3F5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +80.0526322348718 + 30 +0.0 + 11 +-47.60032333605699 + 21 +81.21845461493178 + 31 +0.0 + 0 +LINE + 5 +3F6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.043370132457 + 20 +79.37623641977177 + 30 +0.0 + 11 +-47.17766432107699 + 21 +80.54205879983175 + 31 +0.0 + 0 +LINE + 5 +3F7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.00628464655699 + 20 +79.22253324229178 + 30 +0.0 + 11 +-47.055774026377 + 21 +80.44134755091176 + 31 +0.0 + 0 +LINE + 5 +3F8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.761336360737 + 20 +78.64182604963179 + 30 +0.0 + 11 +-47.93448946731698 + 21 +79.15849733277173 + 31 +0.0 + 0 +LINE + 5 +3F9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.46806301383699 + 20 +79.44995292715174 + 30 +0.0 + 11 +-46.64121612041698 + 21 +79.96662421029174 + 31 +0.0 + 0 +LINE + 5 +3FA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.35551169055699 + 20 +79.60375554309178 + 30 +0.0 + 11 +-46.397914094957 + 21 +79.57725958135177 + 31 +0.0 + 0 +LINE + 5 +3FB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.518034335277 + 20 +78.25246142069175 + 30 +0.0 + 11 +-48.56043674221698 + 21 +78.22596545641175 + 31 +0.0 + 0 +LINE + 5 +3FC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.664691480117 + 20 +78.72673029689178 + 30 +0.0 + 11 +-47.198265026637 + 21 +79.01818589381173 + 31 +0.0 + 0 +LINE + 5 +3FD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.54547850543699 + 20 +78.53594965737176 + 30 +0.0 + 11 +-47.07905205195699 + 21 +78.82740525175177 + 31 +0.0 + 0 +LINE + 5 +3FE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.25918945545699 + 20 +77.83822302133177 + 30 +0.0 + 11 +-46.139069215137 + 21 +79.16302118199178 + 31 +0.0 + 0 +LINE + 5 +3FF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.140181656897 + 20 +77.55341673293179 + 30 +0.0 + 11 +-48.097779252497 + 21 +77.57991269721173 + 31 +0.0 + 0 +LINE + 5 +400 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.977659012177 + 20 +78.9047108578718 + 30 +0.0 + 11 +-45.935256605237 + 21 +78.93120681961176 + 31 +0.0 + 0 +LINE + 5 +401 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.67629928755699 + 20 +70.72410317797181 + 30 +0.0 + 11 +-92.46960418151699 + 21 +70.77182250087179 + 31 +0.0 + 0 +LINE + 5 +402 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.253640272577 + 20 +71.40049899307178 + 30 +0.0 + 11 +-92.11584353521699 + 21 +71.43231187585178 + 31 +0.0 + 0 +LINE + 5 +403 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.63691723951698 + 20 +70.72410317797181 + 30 +0.0 + 11 +-43.84361234301699 + 21 +70.77182250087179 + 31 +0.0 + 0 +LINE + 5 +404 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.059576254497 + 20 +71.40049899307178 + 30 +0.0 + 11 +-44.19737298931699 + 21 +71.43231187585178 + 31 +0.0 + 0 +LINE + 5 +405 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.52472413241699 + 20 +76.66283280163179 + 30 +0.0 + 11 +-45.404603892097 + 21 +77.98763096229174 + 31 +0.0 + 0 +LINE + 5 +406 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.08226059805699 + 20 +72.72002455061175 + 30 +0.0 + 11 +-94.220057335417 + 21 +72.68821166783175 + 31 +0.0 + 0 +LINE + 5 +407 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.23095592647699 + 20 +72.72002455061175 + 30 +0.0 + 11 +-42.09315919165699 + 21 +72.68821166783175 + 31 +0.0 + 0 +LINE + 5 +408 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-59.15660826255699 + 20 +66.00375871215176 + 30 +0.0 + 11 +-59.15660826255699 + 21 +62.60375871257178 + 31 +0.0 + 0 +LINE + 5 +409 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-58.156581580877 + 20 +81.27253575391177 + 30 +0.0 + 11 +-78.15662082887699 + 21 +81.27388851981175 + 31 +0.0 + 0 +LINE + 5 +40A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.832636683477 + 20 +73.95492683315177 + 30 +0.0 + 11 +-43.712516443157 + 21 +75.27972499127173 + 31 +0.0 + 0 +LINE + 5 +40B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.09705891867699 + 20 +74.38914105997179 + 30 +0.0 + 11 +-43.139461323077 + 21 +74.36264509569179 + 31 +0.0 + 0 +LINE + 5 +40C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.25958156339699 + 20 +73.03784693503178 + 30 +0.0 + 11 +-45.301983967797 + 21 +73.01135097329177 + 31 +0.0 + 0 +LINE + 5 +40D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.09817135789698 + 20 +72.77953661091181 + 30 +0.0 + 11 +-42.97805111757701 + 21 +74.10433477157176 + 31 +0.0 + 0 +LINE + 5 +40E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.306931880517 + 20 +79.22253324229178 + 30 +0.0 + 11 +-87.16913514315699 + 21 +79.25434612507178 + 31 +0.0 + 0 +LINE + 5 +40F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.00628464655699 + 20 +79.22253324229178 + 30 +0.0 + 11 +-49.14408138391699 + 21 +79.25434612507178 + 31 +0.0 + 0 +LINE + 5 +410 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-54.60660826427699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-54.60660826427699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +411 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.691762070137 + 20 +73.40660813553177 + 30 +0.0 + 11 +-44.158188523617 + 21 +73.11515254115175 + 31 +0.0 + 0 +LINE + 5 +412 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.57254909545699 + 20 +73.21582749601174 + 30 +0.0 + 11 +-44.03897554893698 + 21 +72.92437189909179 + 31 +0.0 + 0 +LINE + 5 +413 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.88172888247698 + 20 +72.33880224981175 + 30 +0.0 + 11 +-44.839326478077 + 21 +72.36529821155176 + 31 +0.0 + 0 +LINE + 5 +414 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.71920623775699 + 20 +73.69009637221177 + 30 +0.0 + 11 +-42.676803833357 + 21 +73.71659233649177 + 31 +0.0 + 0 +LINE + 5 +415 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.59602445515701 + 20 +71.97593358261179 + 30 +0.0 + 11 +-43.76917756173699 + 21 +72.49260486575178 + 31 +0.0 + 0 +LINE + 5 +416 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.302751108257 + 20 +72.7840604601318 + 30 +0.0 + 11 +-42.475904214837 + 21 +73.30073174327174 + 31 +0.0 + 0 +LINE + 5 +417 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.18146654919698 + 20 +71.50121024453176 + 30 +0.0 + 11 +-42.23095592647699 + 21 +72.72002455061175 + 31 +0.0 + 0 +LINE + 5 +418 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.059576254497 + 20 +71.40049899307178 + 30 +0.0 + 11 +-42.19387044311699 + 21 +72.56632137313175 + 31 +0.0 + 0 +LINE + 5 +419 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.13555220599699 + 20 +80.54205879983175 + 30 +0.0 + 11 +-89.27334894335698 + 21 +80.51024591705175 + 31 +0.0 + 0 +LINE + 5 +41A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.17766432107699 + 20 +80.54205879983175 + 30 +0.0 + 11 +-47.03986758371698 + 21 +80.51024591705175 + 31 +0.0 + 0 +LINE + 5 +41B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-53.606608262757 + 20 +65.50375871393178 + 30 +0.0 + 11 +-53.606608262757 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +41C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.63691723951698 + 20 +70.72410317797181 + 30 +0.0 + 11 +-41.77121142813699 + 21 +71.88992555803179 + 31 +0.0 + 0 +LINE + 5 +41D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.712893191017 + 20 +81.21845461493178 + 30 +0.0 + 11 +-88.919588294517 + 21 +81.1707352920318 + 31 +0.0 + 0 +LINE + 5 +41E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.60032333605699 + 20 +81.21845461493178 + 30 +0.0 + 11 +-47.39362823001699 + 21 +81.1707352920318 + 31 +0.0 + 0 +LINE + 5 +41F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-52.206608263677 + 20 +65.50375871393178 + 30 +0.0 + 11 +-52.206608263677 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +420 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-51.20660826215699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-51.20660826215699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +421 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +80.0526322348718 + 30 +0.0 + 11 +-49.51374847033699 + 21 +79.84593713137178 + 31 +0.0 + 0 +LINE + 5 +422 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.043370132457 + 20 +79.37623641977177 + 30 +0.0 + 11 +-49.07518301523699 + 21 +79.23843968495174 + 31 +0.0 + 0 +LINE + 5 +423 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.80660826307699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-49.80660826307699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +424 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.055774026377 + 20 +80.44134755091176 + 30 +0.0 + 11 +-47.02396114359699 + 21 +80.57914428573178 + 31 +0.0 + 0 +LINE + 5 +425 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.806608264097 + 20 +65.50375871393178 + 30 +0.0 + 11 +-48.806608264097 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +426 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.406608262477 + 20 +65.50375871393178 + 30 +0.0 + 11 +-47.406608262477 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +427 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.56043674221698 + 20 +78.22596545641175 + 30 +0.0 + 11 +-48.140181656897 + 21 +77.55341673293179 + 31 +0.0 + 0 +LINE + 5 +428 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.301983967797 + 20 +73.01135097329177 + 30 +0.0 + 11 +-44.88172888247698 + 21 +72.33880224981175 + 31 +0.0 + 0 +LINE + 5 +429 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.832636683477 + 20 +73.95492683315177 + 30 +0.0 + 11 +-43.84361234301699 + 21 +70.77182250087179 + 31 +0.0 + 0 +LINE + 5 +42A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.52472413241699 + 20 +76.66283280163179 + 30 +0.0 + 11 +-49.51374847033699 + 21 +79.84593713137178 + 31 +0.0 + 0 +LINE + 5 +42B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.059576254497 + 20 +71.40049899307178 + 30 +0.0 + 11 +-43.63691723951698 + 21 +70.72410317797181 + 31 +0.0 + 0 +LINE + 5 +42C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.043370132457 + 20 +79.37623641977177 + 30 +0.0 + 11 +-49.46602914743699 + 21 +80.0526322348718 + 31 +0.0 + 0 +LINE + 5 +42D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.264242561937 + 20 +79.68621259941176 + 30 +0.0 + 11 +-47.545472320537 + 21 +78.53593976153177 + 31 +0.0 + 0 +LINE + 5 +42E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.158195277477 + 20 +73.1151633513918 + 30 +0.0 + 11 +-43.43942446457698 + 21 +71.96488959911175 + 31 +0.0 + 0 +LINE + 5 +42F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.40660826349699 + 20 +65.50375871393178 + 30 +0.0 + 11 +-46.40660826349699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +430 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +66.80375871235177 + 30 +0.0 + 11 +-45.15660826413699 + 21 +66.00375871215176 + 31 +0.0 + 0 +LINE + 5 +431 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.97299801109699 + 20 +72.25634519603175 + 30 +0.0 + 11 +-43.691768252497 + 21 +73.4066180313718 + 31 +0.0 + 0 +LINE + 5 +432 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.07904529555699 + 20 +78.82739444151178 + 30 +0.0 + 11 +-47.79781611099699 + 21 +79.97766819379177 + 31 +0.0 + 0 +LINE + 5 +433 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.19387044311699 + 20 +72.56632137313175 + 30 +0.0 + 11 +-41.77121142813699 + 21 +71.88992555803179 + 31 +0.0 + 0 +LINE + 5 +434 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.17766432107699 + 20 +80.54205879983175 + 30 +0.0 + 11 +-47.60032333605699 + 21 +81.21845461493178 + 31 +0.0 + 0 +LINE + 5 +435 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.72349210269699 + 20 +72.09662066153175 + 30 +0.0 + 11 +-43.712516443157 + 21 +75.27972499127173 + 31 +0.0 + 0 +LINE + 5 +436 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.404603892097 + 20 +77.98763096229174 + 30 +0.0 + 11 +-47.39362823001699 + 21 +81.1707352920318 + 31 +0.0 + 0 +LINE + 5 +437 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.676803833357 + 20 +73.71659233649177 + 30 +0.0 + 11 +-43.09705891867699 + 21 +74.38914105997179 + 31 +0.0 + 0 +LINE + 5 +438 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.935256605237 + 20 +78.93120681961176 + 30 +0.0 + 11 +-46.35551169055699 + 21 +79.60375554309178 + 31 +0.0 + 0 +LINE + 5 +439 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.18146654919698 + 20 +71.50121024453176 + 30 +0.0 + 11 +-44.213279431977 + 21 +71.36341350717174 + 31 +0.0 + 0 +LINE + 5 +43A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.15660826313699 + 20 +70.01797621329178 + 30 +0.0 + 11 +-41.15660826313699 + 21 +74.98954017667177 + 31 +0.0 + 0 +LINE + 5 +43B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.19387044311699 + 20 +72.56632137313175 + 30 +0.0 + 11 +-42.162057560337 + 21 +72.70411811049178 + 31 +0.0 + 0 +LINE + 5 +43C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.77121142813699 + 20 +71.88992555803179 + 30 +0.0 + 11 +-41.72349210269699 + 21 +72.09662066153175 + 31 +0.0 + 0 +LINE + 5 +43D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +125.7726232661317 + 30 +0.0 + 11 +-95.15660826393698 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +43E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.58972442183698 + 20 +117.4226150258718 + 30 +0.0 + 11 +-94.58972442183698 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +43F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.220057335417 + 20 +123.7784286337518 + 30 +0.0 + 11 +-94.220057335417 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +440 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.08226059805699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-94.08226059805699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +441 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.340218515977 + 20 +118.7596523797318 + 30 +0.0 + 11 +-93.340218515977 + 21 +118.9894700125518 + 31 +0.0 + 0 +LINE + 5 +442 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.112428849637 + 20 +121.3741155963117 + 30 +0.0 + 11 +-93.112428849637 + 21 +121.9681297930918 + 31 +0.0 + 0 +LINE + 5 +443 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.03294095933699 + 20 +121.9681297930918 + 30 +0.0 + 11 +-93.03294095933699 + 21 +121.3741155963117 + 31 +0.0 + 0 +LINE + 5 +444 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.542005098937 + 20 +117.2726150236117 + 30 +0.0 + 11 +-94.58972442183698 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +445 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.119346083957 + 20 +117.2726150236117 + 30 +0.0 + 11 +-94.151158966737 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +446 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.60070008391698 + 20 +125.7726232661317 + 30 +0.0 + 11 +-92.60070008391698 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +447 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.56651450839699 + 20 +121.9681297930918 + 30 +0.0 + 11 +-92.56651450839699 + 21 +121.3741155963117 + 31 +0.0 + 0 +LINE + 5 +448 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.13174997787699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-92.13174997787699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +449 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.09993709509699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-92.09993709509699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +44A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.156608262937 + 20 +111.9726232664917 + 30 +0.0 + 11 +-91.156608262937 + 21 +105.9726232649918 + 31 +0.0 + 0 +LINE + 5 +44B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-90.90861263497698 + 20 +125.7726232661317 + 30 +0.0 + 11 +-90.90861263497698 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +44C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.11584353521699 + 20 +117.3726150242717 + 30 +0.0 + 11 +-92.09993709509699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +44D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.340218515977 + 20 +118.9894700125518 + 30 +0.0 + 11 +-92.800889350797 + 21 +120.1708508349517 + 31 +0.0 + 0 +LINE + 5 +44E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.740667431617 + 20 +120.0729471191517 + 30 +0.0 + 11 +-93.340218515977 + 21 +118.7596523797318 + 31 +0.0 + 0 +LINE + 5 +44F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.87379206249699 + 20 +118.7596523797318 + 30 +0.0 + 11 +-92.27424097813701 + 21 +120.0729471191517 + 31 +0.0 + 0 +LINE + 5 +450 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.335165409497 + 20 +124.4714547889717 + 30 +0.0 + 11 +-93.83731231223698 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +451 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.71719207191699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-91.21504516917699 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +452 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.13174997787699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-92.11584353521699 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +453 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.289255383477 + 20 +123.7784286337518 + 30 +0.0 + 11 +-89.289255383477 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +454 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.919588294517 + 20 +117.4226150258718 + 30 +0.0 + 11 +-88.919588294517 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +455 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.712893191017 + 20 +117.2726150236117 + 30 +0.0 + 11 +-88.712893191017 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +456 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-86.84718737963699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-86.84718737963699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +457 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-86.79946805419699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-86.79946805419699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +458 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.27334894335698 + 20 +117.3726150242717 + 30 +0.0 + 11 +-89.289255383477 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +459 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-86.84718737963699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-86.79946805419699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +45A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.08226059805699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-94.151158966737 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +45B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +102.6726232660717 + 30 +0.0 + 11 +-64.40660826291699 + 21 +102.6726232660717 + 31 +0.0 + 0 +LINE + 5 +45C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.151158966737 + 20 +117.3726150242717 + 30 +0.0 + 11 +-94.220057335417 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +45D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.253640272577 + 20 +117.2726150236117 + 30 +0.0 + 11 +-92.11584353521699 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +45E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.13555220599699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-89.27334894335698 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +45F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.712893191017 + 20 +117.2726150236117 + 30 +0.0 + 11 +-88.919588294517 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +460 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.672000406657 + 20 +123.7784286337518 + 30 +0.0 + 11 +-90.174147309397 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +461 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +105.9726232649918 + 30 +0.0 + 11 +-64.40660826291699 + 21 +105.9726232649918 + 31 +0.0 + 0 +LINE + 5 +462 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +105.9726232649918 + 30 +0.0 + 11 +-91.156608262937 + 21 +105.9726232649918 + 31 +0.0 + 0 +LINE + 5 +463 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-78.15660826349699 + 20 +111.9726232664917 + 30 +0.0 + 11 +-78.15662082887699 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +464 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +111.9726232664917 + 30 +0.0 + 11 +-58.15660826357699 + 21 +111.9726232664917 + 31 +0.0 + 0 +LINE + 5 +465 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-78.15660826349699 + 20 +111.9726232664917 + 30 +0.0 + 11 +-91.156608262937 + 21 +111.9726232664917 + 31 +0.0 + 0 +LINE + 5 +466 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-72.631608264497 + 20 +126.7726232651117 + 30 +0.0 + 11 +-72.631608264497 + 21 +133.2726232648317 + 31 +0.0 + 0 +LINE + 5 +467 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.906608264157 + 20 +105.9726232649918 + 30 +0.0 + 11 +-71.906608264157 + 21 +102.6726232660717 + 31 +0.0 + 0 +LINE + 5 +468 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.43160826419699 + 20 +133.2726232648317 + 30 +0.0 + 11 +-71.43160826419699 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +469 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.253640272577 + 20 +117.2726150236117 + 30 +0.0 + 11 +-94.542005098937 + 21 +117.2726150236117 + 31 +0.0 + 0 +LINE + 5 +46A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.13555220599699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-86.84718737963699 + 21 +117.2726150236117 + 31 +0.0 + 0 +LINE + 5 +46B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-47.17766432107699 + 21 +117.2726150236117 + 31 +0.0 + 0 +LINE + 5 +46C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.059576254497 + 20 +117.2726150236117 + 30 +0.0 + 11 +-41.77121142813699 + 21 +117.2726150236117 + 31 +0.0 + 0 +LINE + 5 +46D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.02396114359699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-47.39362823001699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +46E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.13174997787699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-94.08226059805699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +46F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-94.220057335417 + 20 +117.4226150258718 + 30 +0.0 + 11 +-94.58972442183698 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +470 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.289255383477 + 20 +117.4226150258718 + 30 +0.0 + 11 +-88.919588294517 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +471 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.18146654919698 + 20 +117.4226150258718 + 30 +0.0 + 11 +-42.23095592647699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +472 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.09315919165699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-41.72349210269699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +473 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.87379206249699 + 20 +118.7596523797318 + 30 +0.0 + 11 +-93.34021851343699 + 21 +118.7596523797318 + 31 +0.0 + 0 +LINE + 5 +474 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.43942446457698 + 20 +118.7596523797318 + 30 +0.0 + 11 +-42.97299801109699 + 21 +118.7596523797318 + 31 +0.0 + 0 +LINE + 5 +475 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.57254909545699 + 20 +120.0729471191517 + 30 +0.0 + 11 +-44.03897554893698 + 21 +120.0729471191517 + 31 +0.0 + 0 +LINE + 5 +476 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.27424097813701 + 20 +120.0729471191517 + 30 +0.0 + 11 +-92.740667431617 + 21 +120.0729471191517 + 31 +0.0 + 0 +LINE + 5 +477 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-64.881608262877 + 20 +126.7726232651117 + 30 +0.0 + 11 +-64.881608262877 + 21 +133.2726232648317 + 31 +0.0 + 0 +LINE + 5 +478 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-64.40660826291699 + 20 +102.6726232660717 + 30 +0.0 + 11 +-64.40660826291699 + 21 +105.9726232649918 + 31 +0.0 + 0 +LINE + 5 +479 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.03294095933699 + 20 +121.3741155963117 + 30 +0.0 + 11 +-92.56651450839699 + 21 +121.3741155963117 + 31 +0.0 + 0 +LINE + 5 +47A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.746702018677 + 20 +121.3741155963117 + 30 +0.0 + 11 +-43.28027556519699 + 21 +121.3741155963117 + 31 +0.0 + 0 +LINE + 5 +47B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.112428849637 + 20 +121.9681297930918 + 30 +0.0 + 11 +-92.56651450839699 + 21 +121.9681297930918 + 31 +0.0 + 0 +LINE + 5 +47C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.746702018677 + 20 +121.9681297930918 + 30 +0.0 + 11 +-43.20078767743699 + 21 +121.9681297930918 + 31 +0.0 + 0 +LINE + 5 +47D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-63.681608262577 + 20 +133.2726232648317 + 30 +0.0 + 11 +-63.681608262577 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +47E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.64121612041698 + 20 +123.7784286337518 + 30 +0.0 + 11 +-47.02396114359699 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +47F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.71719207191699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-94.220057335417 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +480 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.672000406657 + 20 +123.7784286337518 + 30 +0.0 + 11 +-89.289255383477 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +481 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.59602445515701 + 20 +123.7784286337518 + 30 +0.0 + 11 +-42.09315919165699 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +482 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.335165409497 + 20 +124.4714547889717 + 30 +0.0 + 11 +-90.174147309397 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +483 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.139069215137 + 20 +124.4714547889717 + 30 +0.0 + 11 +-42.97805111757701 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +484 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +125.7726232661317 + 30 +0.0 + 11 +-41.15660826313699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +485 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-58.15660826357699 + 20 +111.9726232664917 + 30 +0.0 + 11 +-58.156581580877 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +486 +102 +{ACAD_REACTORS +330 +643 +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +126.7726232651117 + 30 +0.0 + 11 +-41.15660826313699 + 21 +126.7726232651117 + 31 +0.0 + 0 +LINE + 5 +487 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.60032333605699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-47.39362823001699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +488 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.139069215137 + 20 +124.4714547889717 + 30 +0.0 + 11 +-46.64121612041698 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +489 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.17766432107699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-47.03986758371698 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +48A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.059576254497 + 20 +117.2726150236117 + 30 +0.0 + 11 +-44.19737298931699 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +48B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.162057560337 + 20 +117.3726150242717 + 30 +0.0 + 11 +-42.09315919165699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +48C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-63.681608262577 + 20 +133.2726232648317 + 30 +0.0 + 11 +-72.631608264497 + 21 +133.2726232648317 + 31 +0.0 + 0 +LINE + 5 +48D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.23095592647699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-42.162057560337 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +48E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.51374847033699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-49.51374847033699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +48F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-49.46602914743699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +490 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-49.46602914743699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-49.51374847033699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +491 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.60032333605699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-47.60032333605699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +492 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.39362823001699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-47.39362823001699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +493 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.03986758371698 + 20 +117.3726150242717 + 30 +0.0 + 11 +-47.02396114359699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +494 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.02396114359699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-47.02396114359699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +495 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.404603892097 + 20 +125.7726232661317 + 30 +0.0 + 11 +-45.404603892097 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +496 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.15660826413699 + 20 +105.9726232649918 + 30 +0.0 + 11 +-45.15660826413699 + 21 +111.9726232664917 + 31 +0.0 + 0 +LINE + 5 +497 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.18146654919698 + 20 +117.4226150258718 + 30 +0.0 + 11 +-44.19737298931699 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +498 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.09817135789698 + 20 +124.4714547889717 + 30 +0.0 + 11 +-44.59602445515701 + 21 +123.7784286337518 + 31 +0.0 + 0 +LINE + 5 +499 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.03897554893698 + 20 +120.0729471191517 + 30 +0.0 + 11 +-43.43942446457698 + 21 +118.7596523797318 + 31 +0.0 + 0 +LINE + 5 +49A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.19737298931699 + 20 +117.3726150242717 + 30 +0.0 + 11 +-44.213279431977 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +49B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.213279431977 + 20 +123.7784286337518 + 30 +0.0 + 11 +-44.213279431977 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +49C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.18146654919698 + 20 +123.7784286337518 + 30 +0.0 + 11 +-44.18146654919698 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +49D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.746702018677 + 20 +121.9681297930918 + 30 +0.0 + 11 +-43.746702018677 + 21 +121.3741155963117 + 31 +0.0 + 0 +LINE + 5 +49E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.712516443157 + 20 +125.7726232661317 + 30 +0.0 + 11 +-43.712516443157 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +49F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.28027556519699 + 20 +121.9681297930918 + 30 +0.0 + 11 +-43.28027556519699 + 21 +121.3741155963117 + 31 +0.0 + 0 +LINE + 5 +4A0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.20078767743699 + 20 +121.3741155963117 + 30 +0.0 + 11 +-43.20078767743699 + 21 +121.9681297930918 + 31 +0.0 + 0 +LINE + 5 +4A1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.19387044311699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-42.162057560337 + 21 +117.3726150242717 + 31 +0.0 + 0 +LINE + 5 +4A2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.475904214837 + 20 +123.7784286337518 + 30 +0.0 + 11 +-42.97805111757701 + 21 +124.4714547889717 + 31 +0.0 + 0 +LINE + 5 +4A3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.97299801109699 + 20 +118.7596523797318 + 30 +0.0 + 11 +-43.57254909545699 + 21 +120.0729471191517 + 31 +0.0 + 0 +LINE + 5 +4A4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.512327173737 + 20 +120.1708508349517 + 30 +0.0 + 11 +-42.97299801109699 + 21 +118.9894700125518 + 31 +0.0 + 0 +LINE + 5 +4A5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.97299801109699 + 20 +118.7596523797318 + 30 +0.0 + 11 +-42.97299801109699 + 21 +118.9894700125518 + 31 +0.0 + 0 +LINE + 5 +4A6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.23095592647699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-42.23095592647699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +4A7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.09315919165699 + 20 +123.7784286337518 + 30 +0.0 + 11 +-42.09315919165699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +4A8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.72349210269699 + 20 +117.4226150258718 + 30 +0.0 + 11 +-41.72349210269699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +4A9 +102 +{ACAD_REACTORS +330 +643 +330 +653 +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.15660826313699 + 20 +126.7726232651117 + 30 +0.0 + 11 +-41.15660826313699 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +4AA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.77121142813699 + 20 +117.2726150236117 + 30 +0.0 + 11 +-41.72349210269699 + 21 +117.4226150258718 + 31 +0.0 + 0 +LINE + 5 +4AB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-95.15660826393698 + 20 +-48.23349475090822 + 30 +0.0 + 11 +-95.15660826393698 + 21 +-53.20505871428821 + 31 +0.0 + 0 +LINE + 5 +4AC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.63641269371699 + 20 +-51.93211087410822 + 30 +0.0 + 11 +-93.216157608397 + 21 +-52.60465959758822 + 31 +0.0 + 0 +LINE + 5 +4AD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-90.377959919297 + 20 +-57.14672535722822 + 30 +0.0 + 11 +-89.957704836517 + 21 +-57.81927408070822 + 31 +0.0 + 0 +LINE + 5 +4AE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.59401028931699 + 20 +-51.90561490982823 + 30 +0.0 + 11 +-93.17375520399698 + 21 +-52.57816363330822 + 31 +0.0 + 0 +LINE + 5 +4AF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.91958829705698 + 20 +-59.38625382710823 + 30 +0.0 + 11 +-89.14932606973698 + 21 +-59.01859653600823 + 31 +0.0 + 0 +LINE + 5 +4B0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.91530242957699 + 20 +-57.79277811642821 + 30 +0.0 + 11 +-90.33555751489698 + 21 +-57.12022939294822 + 31 +0.0 + 0 +LINE + 5 +4B1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.80023269527698 + 20 +-56.84468024122821 + 30 +0.0 + 11 +-89.432969535977 + 21 +-57.43242415336823 + 31 +0.0 + 0 +LINE + 5 +4B2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.691422307857 + 20 +-52.21780967024821 + 30 +0.0 + 11 +-93.05868546715698 + 21 +-51.63006575556822 + 31 +0.0 + 0 +LINE + 5 +4B3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.364071167297 + 20 +-57.44833059602822 + 30 +0.0 + 11 +-89.78432625261699 + 21 +-56.77578187254822 + 31 +0.0 + 0 +LINE + 5 +4B4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.62252394171699 + 20 +-52.23371611290822 + 30 +0.0 + 11 +-93.04277902703701 + 21 +-51.56116738942822 + 31 +0.0 + 0 +LINE + 5 +4B5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.300357178377 + 20 +-50.77154019550821 + 30 +0.0 + 11 +-93.172406118557 + 21 +-50.97630469326822 + 31 +0.0 + 0 +LINE + 5 +4B6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.25858380345698 + 20 +-52.43872609912823 + 30 +0.0 + 11 +-92.07070812891698 + 21 +-52.73939002408822 + 31 +0.0 + 0 +LINE + 5 +4B7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.99692282513699 + 20 +-56.05814025474822 + 30 +0.0 + 11 +-89.809047153137 + 21 +-56.35880417970821 + 31 +0.0 + 0 +LINE + 5 +4B8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.895224838037 + 20 +-57.82122558302822 + 30 +0.0 + 11 +-88.76727377821699 + 21 +-58.02599008332823 + 31 +0.0 + 0 +LINE + 5 +4B9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.23145880969699 + 20 +-50.78744663816822 + 30 +0.0 + 11 +-93.15649967589699 + 21 +-50.90740632712822 + 31 +0.0 + 0 +LINE + 5 +4BA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.189685434777 + 20 +-52.45463254178822 + 30 +0.0 + 11 +-92.054801688797 + 21 +-52.67049165540822 + 31 +0.0 + 0 +LINE + 5 +4BB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.75136733555699 + 20 +-57.95709171464822 + 30 +0.0 + 11 +-88.826326469357 + 21 +-57.83713202568821 + 31 +0.0 + 0 +LINE + 5 +4BC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.79314071047699 + 20 +-56.28990581102822 + 30 +0.0 + 11 +-89.92802445645699 + 21 +-56.07404669486823 + 31 +0.0 + 0 +LINE + 5 +4BD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.33439078977698 + 20 +-55.70310321018822 + 30 +0.0 + 11 +-89.19950704379699 + 21 +-55.91896232634822 + 31 +0.0 + 0 +LINE + 5 +4BE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.232692802677 + 20 +-57.46618854100822 + 30 +0.0 + 11 +-88.157733668877 + 21 +-57.58614822996822 + 31 +0.0 + 0 +LINE + 5 +4BF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.46116802211698 + 20 +-52.29954817072822 + 30 +0.0 + 11 +-91.596051768097 + 21 +-52.08368905456822 + 31 +0.0 + 0 +LINE + 5 +4C0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.56286600921699 + 20 +-50.53646284244821 + 30 +0.0 + 11 +-92.637825143017 + 21 +-50.41650315094823 + 31 +0.0 + 0 +LINE + 5 +4C1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.08883530019699 + 20 +-57.60205467008822 + 30 +0.0 + 11 +-88.21678636001699 + 21 +-57.39729017232821 + 31 +0.0 + 0 +LINE + 5 +4C2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.13060867511699 + 20 +-55.93486876646821 + 30 +0.0 + 11 +-89.31848434711699 + 21 +-55.63420484150822 + 31 +0.0 + 0 +LINE + 5 +4C3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.39226965343699 + 20 +-52.31545461338822 + 30 +0.0 + 11 +-91.58014532543701 + 21 +-52.01479068842822 + 31 +0.0 + 0 +LINE + 5 +4C4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.49396764053699 + 20 +-50.55236928256822 + 30 +0.0 + 11 +-92.62191870035698 + 21 +-50.34760478480823 + 31 +0.0 + 0 +LINE + 5 +4C5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.02512131127699 + 20 +-50.92526427210822 + 30 +0.0 + 11 +-91.604866225957 + 21 +-51.59781299558822 + 31 +0.0 + 0 +LINE + 5 +4C6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.766668536857 + 20 +-56.13987875522822 + 30 +0.0 + 11 +-88.34641345153698 + 21 +-56.81242747870822 + 31 +0.0 + 0 +LINE + 5 +4C7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.95622294259699 + 20 +-50.94117071222822 + 30 +0.0 + 11 +-91.58895978329699 + 21 +-51.52891462690823 + 31 +0.0 + 0 +LINE + 5 +4C8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.33050701141699 + 20 +-56.74352911002822 + 30 +0.0 + 11 +-88.69777017071699 + 21 +-56.15578519534823 + 31 +0.0 + 0 +LINE + 5 +4C9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.795182189257 + 20 +-56.46797995576823 + 30 +0.0 + 11 +-88.21543727457699 + 21 +-55.79543123228822 + 31 +0.0 + 0 +LINE + 5 +4CA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.05363496367699 + 20 +-51.25336547264822 + 30 +0.0 + 11 +-91.47389004899698 + 21 +-50.58081674916822 + 31 +0.0 + 0 +LINE + 5 +4CB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.752779784857 + 20 +-56.44148399402822 + 30 +0.0 + 11 +-88.17303487017699 + 21 +-55.76893527054822 + 31 +0.0 + 0 +LINE + 5 +4CC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.01123255927699 + 20 +-51.22686951090821 + 30 +0.0 + 11 +-91.43148764205699 + 21 +-50.55432078742822 + 31 +0.0 + 0 +LINE + 5 +4CD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.39362823001699 + 20 +-59.38625382710823 + 30 +0.0 + 11 +-47.60032333605699 + 21 +-59.43397315254822 + 31 +0.0 + 0 +LINE + 5 +4CE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.712893191017 + 20 +-59.43397315254822 + 30 +0.0 + 11 +-88.91958829705698 + 21 +-59.38625382710823 + 31 +0.0 + 0 +LINE + 5 +4CF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.62191870035698 + 20 +-50.34760478480823 + 30 +0.0 + 11 +-93.300357178377 + 21 +-50.77154019550821 + 31 +0.0 + 0 +LINE + 5 +4D0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.637825143017 + 20 +-50.41650315094823 + 30 +0.0 + 11 +-93.23145880969699 + 21 +-50.78744663816822 + 31 +0.0 + 0 +LINE + 5 +4D1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.15649967589699 + 20 +-50.90740632712822 + 30 +0.0 + 11 +-92.56286600921699 + 21 +-50.53646284244821 + 31 +0.0 + 0 +LINE + 5 +4D2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.172406118557 + 20 +-50.97630469326822 + 30 +0.0 + 11 +-92.49396764053699 + 21 +-50.55236928256822 + 31 +0.0 + 0 +LINE + 5 +4D3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.43148764205699 + 20 +-50.55432078742822 + 30 +0.0 + 11 +-92.02512131127699 + 21 +-50.92526427210822 + 31 +0.0 + 0 +LINE + 5 +4D4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.04277902703701 + 20 +-51.56116738942822 + 30 +0.0 + 11 +-93.63641269371699 + 21 +-51.93211087410822 + 31 +0.0 + 0 +LINE + 5 +4D5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.44739408471698 + 20 +-50.62321915356823 + 30 +0.0 + 11 +-91.95622294259699 + 21 +-50.94117071222822 + 31 +0.0 + 0 +LINE + 5 +4D6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.05868546715698 + 20 +-51.63006575556822 + 30 +0.0 + 11 +-93.56751432503699 + 21 +-51.9480173142282 + 31 +0.0 + 0 +LINE + 5 +4D7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.20025116573701 + 20 +-52.53576122890823 + 30 +0.0 + 11 +-92.691422307857 + 21 +-52.21780967024821 + 31 +0.0 + 0 +LINE + 5 +4D8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.58895978329699 + 20 +-51.52891462690823 + 30 +0.0 + 11 +-91.080130925417 + 21 +-51.21096306824822 + 31 +0.0 + 0 +LINE + 5 +4D9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-93.216157608397 + 20 +-52.60465959758822 + 30 +0.0 + 11 +-92.62252394171699 + 21 +-52.23371611290822 + 31 +0.0 + 0 +LINE + 5 +4DA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.604866225957 + 20 +-51.59781299558822 + 30 +0.0 + 11 +-91.01123255927699 + 21 +-51.22686951090821 + 31 +0.0 + 0 +LINE + 5 +4DB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.58014532543701 + 20 +-52.01479068842822 + 30 +0.0 + 11 +-92.25858380345698 + 21 +-52.43872609912823 + 31 +0.0 + 0 +LINE + 5 +4DC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-91.596051768097 + 20 +-52.08368905456822 + 30 +0.0 + 11 +-92.189685434777 + 21 +-52.45463254178822 + 31 +0.0 + 0 +LINE + 5 +4DD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.054801688797 + 20 +-52.67049165540822 + 30 +0.0 + 11 +-91.46116802211698 + 21 +-52.29954817072822 + 31 +0.0 + 0 +LINE + 5 +4DE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-92.07070812891698 + 20 +-52.73939002408822 + 30 +0.0 + 11 +-91.39226965343699 + 21 +-52.31545461338822 + 31 +0.0 + 0 +LINE + 5 +4DF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-78.15662082887699 + 20 +-59.48940705742822 + 30 +0.0 + 11 +-58.156581580877 + 21 +-59.48805429152822 + 31 +0.0 + 0 +LINE + 5 +4E0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-77.15660826451699 + 20 +-41.94921508174822 + 30 +0.0 + 11 +-77.15660826451699 + 21 +-40.81927725018822 + 31 +0.0 + 0 +LINE + 5 +4E1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.31848434711699 + 20 +-55.63420484150822 + 30 +0.0 + 11 +-89.99692282513699 + 21 +-56.05814025474822 + 31 +0.0 + 0 +LINE + 5 +4E2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.92802445645699 + 20 +-56.07404669486823 + 30 +0.0 + 11 +-89.33439078977698 + 21 +-55.70310321018822 + 31 +0.0 + 0 +LINE + 5 +4E3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.19950704379699 + 20 +-55.91896232634822 + 30 +0.0 + 11 +-89.79314071047699 + 21 +-56.28990581102822 + 31 +0.0 + 0 +LINE + 5 +4E4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.809047153137 + 20 +-56.35880417970821 + 30 +0.0 + 11 +-89.13060867511699 + 21 +-55.93486876646821 + 31 +0.0 + 0 +LINE + 5 +4E5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.17303487017699 + 20 +-55.76893527054822 + 30 +0.0 + 11 +-88.766668536857 + 21 +-56.13987875522822 + 31 +0.0 + 0 +LINE + 5 +4E6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.78432625261699 + 20 +-56.77578187254822 + 30 +0.0 + 11 +-90.377959919297 + 21 +-57.14672535722822 + 31 +0.0 + 0 +LINE + 5 +4E7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-90.30906155315699 + 20 +-57.16263179988823 + 30 +0.0 + 11 +-89.80023269527698 + 21 +-56.84468024122821 + 31 +0.0 + 0 +LINE + 5 +4E8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.69777017071699 + 20 +-56.15578519534823 + 30 +0.0 + 11 +-88.18894131283698 + 21 +-55.83783363922822 + 31 +0.0 + 0 +LINE + 5 +4E9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-72.631608264497 + 20 +-51.09927724894823 + 30 +0.0 + 11 +-72.631608264497 + 21 +-50.33927725002822 + 31 +0.0 + 0 +LINE + 5 +4EA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-72.33160826251699 + 20 +-51.09927724894823 + 30 +0.0 + 11 +-72.33160826251699 + 21 +-50.33927725002822 + 31 +0.0 + 0 +LINE + 5 +4EB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-87.821678153537 + 20 +-56.42557755136824 + 30 +0.0 + 11 +-88.33050701141699 + 21 +-56.74352911002822 + 31 +0.0 + 0 +LINE + 5 +4EC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.432969535977 + 20 +-57.43242415336823 + 30 +0.0 + 11 +-89.94179839385699 + 21 +-57.75037571202823 + 31 +0.0 + 0 +LINE + 5 +4ED +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-89.957704836517 + 20 +-57.81927408070822 + 30 +0.0 + 11 +-89.364071167297 + 21 +-57.44833059602822 + 31 +0.0 + 0 +LINE + 5 +4EE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.34641345153698 + 20 +-56.81242747870822 + 30 +0.0 + 11 +-87.752779784857 + 21 +-56.44148399402822 + 31 +0.0 + 0 +LINE + 5 +4EF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.21678636001699 + 20 +-57.39729017232821 + 30 +0.0 + 11 +-88.895224838037 + 21 +-57.82122558302822 + 31 +0.0 + 0 +LINE + 5 +4F0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.826326469357 + 20 +-57.83713202568821 + 30 +0.0 + 11 +-88.232692802677 + 21 +-57.46618854100822 + 31 +0.0 + 0 +LINE + 5 +4F1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.157733668877 + 20 +-57.58614822996822 + 30 +0.0 + 11 +-88.75136733555699 + 21 +-57.95709171464822 + 31 +0.0 + 0 +LINE + 5 +4F2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.76727377821699 + 20 +-58.02599008332823 + 30 +0.0 + 11 +-88.08883530019699 + 21 +-57.60205467008822 + 31 +0.0 + 0 +LINE + 5 +4F3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-88.35080796395699 + 20 +-59.20771719154822 + 30 +0.0 + 11 +-88.712893191017 + 21 +-59.43397315254822 + 31 +0.0 + 0 +LINE + 5 +4F4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-64.881608262877 + 20 +-52.29927724924822 + 30 +0.0 + 11 +-71.43160826419699 + 21 +-52.29927724924822 + 31 +0.0 + 0 +LINE + 5 +4F5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-64.881608262877 + 20 +-51.99927724980823 + 30 +0.0 + 11 +-71.43160826419699 + 21 +-51.99927724980823 + 31 +0.0 + 0 +LINE + 5 +4F6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.43160826419699 + 20 +-49.43927724916822 + 30 +0.0 + 11 +-64.881608262877 + 21 +-49.43927724916822 + 31 +0.0 + 0 +LINE + 5 +4F7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-71.43160826419699 + 20 +-49.13927724972822 + 30 +0.0 + 11 +-64.881608262877 + 21 +-49.13927724972822 + 31 +0.0 + 0 +LINE + 5 +4F8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.96240742519699 + 20 +-59.20771790274822 + 30 +0.0 + 11 +-47.60032333605699 + 21 +-59.43397315254822 + 31 +0.0 + 0 +LINE + 5 +4F9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-63.98160826201699 + 20 +-50.33927725002822 + 30 +0.0 + 11 +-63.98160826201699 + 21 +-51.09927724894823 + 31 +0.0 + 0 +LINE + 5 +4FA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-63.681608262577 + 20 +-50.33927725002822 + 30 +0.0 + 11 +-63.681608262577 + 21 +-51.09927724894823 + 31 +0.0 + 0 +LINE + 5 +4FB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.22438122433699 + 20 +-57.60205467008822 + 30 +0.0 + 11 +-47.54594274885699 + 21 +-58.02599008332823 + 31 +0.0 + 0 +LINE + 5 +4FC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.155482858197 + 20 +-57.58614822996822 + 30 +0.0 + 11 +-47.561849188977 + 21 +-57.95709171464822 + 31 +0.0 + 0 +LINE + 5 +4FD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.48689005771699 + 20 +-57.83713202568821 + 30 +0.0 + 11 +-48.08052372439699 + 21 +-57.46618854100822 + 31 +0.0 + 0 +LINE + 5 +4FE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.41799168903699 + 20 +-57.82122558302822 + 30 +0.0 + 11 +-48.09643016451699 + 21 +-57.39729017232821 + 31 +0.0 + 0 +LINE + 5 +4FF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.56043674221698 + 20 +-56.44148399402822 + 30 +0.0 + 11 +-47.96680307299699 + 21 +-56.81242747870822 + 31 +0.0 + 0 +LINE + 5 +500 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.94914535977699 + 20 +-57.44833059602822 + 30 +0.0 + 11 +-46.35551169055699 + 21 +-57.81927408070822 + 31 +0.0 + 0 +LINE + 5 +501 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.491538373537 + 20 +-56.42557755136824 + 30 +0.0 + 11 +-47.982709515657 + 21 +-56.74352911002822 + 31 +0.0 + 0 +LINE + 5 +502 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.88024699109699 + 20 +-57.43242415336823 + 30 +0.0 + 11 +-46.37141813321699 + 21 +-57.75037571202823 + 31 +0.0 + 0 +LINE + 5 +503 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.004154973917 + 20 +-57.16263179988823 + 30 +0.0 + 11 +-46.51298383179699 + 21 +-56.84468024122821 + 31 +0.0 + 0 +LINE + 5 +504 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.615446356357 + 20 +-56.15578519534823 + 30 +0.0 + 11 +-48.124275214237 + 21 +-55.83783363922822 + 31 +0.0 + 0 +LINE + 5 +505 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.935256605237 + 20 +-57.14672535722822 + 30 +0.0 + 11 +-46.52889027445699 + 21 +-56.77578187254822 + 31 +0.0 + 0 +LINE + 5 +506 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.54654799021699 + 20 +-56.13987875522822 + 30 +0.0 + 11 +-48.140181656897 + 21 +-55.76893527054822 + 31 +0.0 + 0 +LINE + 5 +507 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.182607849417 + 20 +-55.93486876646821 + 30 +0.0 + 11 +-46.50416937393699 + 21 +-56.35880417970821 + 31 +0.0 + 0 +LINE + 5 +508 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.113709483277 + 20 +-55.91896232634822 + 30 +0.0 + 11 +-46.52007581405699 + 21 +-56.28990581102822 + 31 +0.0 + 0 +LINE + 5 +509 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.385192068077 + 20 +-56.07404669486823 + 30 +0.0 + 11 +-46.97882573729699 + 21 +-55.70310321018822 + 31 +0.0 + 0 +LINE + 5 +50A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.31629370193699 + 20 +-56.05814025474822 + 30 +0.0 + 11 +-46.99473217741699 + 21 +-55.63420484150822 + 31 +0.0 + 0 +LINE + 5 +50B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-59.15660826255699 + 20 +-41.95043256724821 + 30 +0.0 + 11 +-59.15660826255699 + 21 +-40.81927725018822 + 31 +0.0 + 0 +LINE + 5 +50C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-59.15660826255699 + 20 +-40.81927725018822 + 30 +0.0 + 11 +-77.15660826451699 + 21 +-40.81927725018822 + 31 +0.0 + 0 +LINE + 5 +50D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-58.156581580877 + 20 +-41.95050020744822 + 30 +0.0 + 11 +-78.15662082887699 + 21 +-41.94914744154823 + 31 +0.0 + 0 +LINE + 5 +50E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.92094687363699 + 20 +-52.31545461338822 + 30 +0.0 + 11 +-44.24250839561699 + 21 +-52.73939002408822 + 31 +0.0 + 0 +LINE + 5 +50F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.258414838277 + 20 +-52.67049165540822 + 30 +0.0 + 11 +-44.852048504957 + 21 +-52.29954817072822 + 31 +0.0 + 0 +LINE + 5 +510 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.71716475897699 + 20 +-52.08368905456822 + 30 +0.0 + 11 +-44.12353109229698 + 21 +-52.45463254178822 + 31 +0.0 + 0 +LINE + 5 +511 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.054632723617 + 20 +-52.43872609912823 + 30 +0.0 + 11 +-44.733071201637 + 21 +-52.01479068842822 + 31 +0.0 + 0 +LINE + 5 +512 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.301983967797 + 20 +-51.22686951090821 + 30 +0.0 + 11 +-44.70835030111699 + 21 +-51.59781299558822 + 31 +0.0 + 0 +LINE + 5 +513 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.690692585357 + 20 +-52.23371611290822 + 30 +0.0 + 11 +-43.09705891867699 + 21 +-52.60465959758822 + 31 +0.0 + 0 +LINE + 5 +514 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.112965358797 + 20 +-52.53576122890823 + 30 +0.0 + 11 +-43.621794216677 + 21 +-52.21780967024821 + 31 +0.0 + 0 +LINE + 5 +515 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.724256743777 + 20 +-51.52891462690823 + 30 +0.0 + 11 +-45.233085599117 + 21 +-51.21096306824822 + 31 +0.0 + 0 +LINE + 5 +516 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.865822442357 + 20 +-50.62321915356823 + 30 +0.0 + 11 +-44.35699358447699 + 21 +-50.94117071222822 + 31 +0.0 + 0 +LINE + 5 +517 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.254531059917 + 20 +-51.63006575556822 + 30 +0.0 + 11 +-42.74570220203701 + 21 +-51.9480173142282 + 31 +0.0 + 0 +LINE + 5 +518 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.676803833357 + 20 +-51.93211087410822 + 30 +0.0 + 11 +-43.27043750003698 + 21 +-51.56116738942822 + 31 +0.0 + 0 +LINE + 5 +519 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.288095215797 + 20 +-50.92526427210822 + 30 +0.0 + 11 +-44.88172888247698 + 21 +-50.55432078742822 + 31 +0.0 + 0 +LINE + 5 +51A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.81924888653699 + 20 +-50.55236928256822 + 30 +0.0 + 11 +-43.14081040851699 + 21 +-50.97630469326822 + 31 +0.0 + 0 +LINE + 5 +51B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.15671685117699 + 20 +-50.90740632712822 + 30 +0.0 + 11 +-43.750350517857 + 21 +-50.53646284244821 + 31 +0.0 + 0 +LINE + 5 +51C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.67539138405699 + 20 +-50.41650315094823 + 30 +0.0 + 11 +-43.081757717377 + 21 +-50.78744663816822 + 31 +0.0 + 0 +LINE + 5 +51D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.01285934869699 + 20 +-50.77154019550821 + 30 +0.0 + 11 +-43.69129782671699 + 21 +-50.34760478480823 + 31 +0.0 + 0 +LINE + 5 +51E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.88172888247698 + 20 +-50.55432078742822 + 30 +0.0 + 11 +-45.301983967797 + 21 +-51.22686951090821 + 31 +0.0 + 0 +LINE + 5 +51F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.140181656897 + 20 +-55.76893527054822 + 30 +0.0 + 11 +-48.56043674221698 + 21 +-56.44148399402822 + 31 +0.0 + 0 +LINE + 5 +520 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.518034335277 + 20 +-56.46797995576823 + 30 +0.0 + 11 +-48.097779252497 + 21 +-55.79543123228822 + 31 +0.0 + 0 +LINE + 5 +521 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-45.25958156339699 + 20 +-51.25336547264822 + 30 +0.0 + 11 +-44.839326478077 + 21 +-50.58081674916822 + 31 +0.0 + 0 +LINE + 5 +522 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.35699358447699 + 20 +-50.94117071222822 + 30 +0.0 + 11 +-44.724256743777 + 21 +-51.52891462690823 + 31 +0.0 + 0 +LINE + 5 +523 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.982709515657 + 20 +-56.74352911002822 + 30 +0.0 + 11 +-47.615446356357 + 21 +-56.15578519534823 + 31 +0.0 + 0 +LINE + 5 +524 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.96680307299699 + 20 +-56.81242747870822 + 30 +0.0 + 11 +-47.54654799021699 + 21 +-56.13987875522822 + 31 +0.0 + 0 +LINE + 5 +525 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.70835030111699 + 20 +-51.59781299558822 + 30 +0.0 + 11 +-44.288095215797 + 21 +-50.92526427210822 + 31 +0.0 + 0 +LINE + 5 +526 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.69129782671699 + 20 +-50.34760478480823 + 30 +0.0 + 11 +-43.81924888653699 + 21 +-50.55236928256822 + 31 +0.0 + 0 +LINE + 5 +527 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.733071201637 + 20 +-52.01479068842822 + 30 +0.0 + 11 +-44.92094687363699 + 21 +-52.31545461338822 + 31 +0.0 + 0 +LINE + 5 +528 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.99473217741699 + 20 +-55.63420484150822 + 30 +0.0 + 11 +-47.182607849417 + 21 +-55.93486876646821 + 31 +0.0 + 0 +LINE + 5 +529 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.09643016451699 + 20 +-57.39729017232821 + 30 +0.0 + 11 +-48.22438122433699 + 21 +-57.60205467008822 + 31 +0.0 + 0 +LINE + 5 +52A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.97882573729699 + 20 +-55.70310321018822 + 30 +0.0 + 11 +-47.113709483277 + 21 +-55.91896232634822 + 31 +0.0 + 0 +LINE + 5 +52B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-48.08052372439699 + 20 +-57.46618854100822 + 30 +0.0 + 11 +-48.155482858197 + 21 +-57.58614822996822 + 31 +0.0 + 0 +LINE + 5 +52C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.852048504957 + 20 +-52.29954817072822 + 30 +0.0 + 11 +-44.71716475897699 + 21 +-52.08368905456822 + 31 +0.0 + 0 +LINE + 5 +52D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.750350517857 + 20 +-50.53646284244821 + 30 +0.0 + 11 +-43.67539138405699 + 21 +-50.41650315094823 + 31 +0.0 + 0 +LINE + 5 +52E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.081757717377 + 20 +-50.78744663816822 + 30 +0.0 + 11 +-43.15671685117699 + 21 +-50.90740632712822 + 31 +0.0 + 0 +LINE + 5 +52F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.12353109229698 + 20 +-52.45463254178822 + 30 +0.0 + 11 +-44.258414838277 + 21 +-52.67049165540822 + 31 +0.0 + 0 +LINE + 5 +530 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.561849188977 + 20 +-57.95709171464822 + 30 +0.0 + 11 +-47.48689005771699 + 21 +-57.83713202568821 + 31 +0.0 + 0 +LINE + 5 +531 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.52007581405699 + 20 +-56.28990581102822 + 30 +0.0 + 11 +-46.385192068077 + 21 +-56.07404669486823 + 31 +0.0 + 0 +LINE + 5 +532 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.54594274885699 + 20 +-58.02599008332823 + 30 +0.0 + 11 +-47.41799168903699 + 21 +-57.82122558302822 + 31 +0.0 + 0 +LINE + 5 +533 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.50416937393699 + 20 +-56.35880417970821 + 30 +0.0 + 11 +-46.31629370193699 + 21 +-56.05814025474822 + 31 +0.0 + 0 +LINE + 5 +534 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-44.24250839561699 + 20 +-52.73939002408822 + 30 +0.0 + 11 +-44.054632723617 + 21 +-52.43872609912823 + 31 +0.0 + 0 +LINE + 5 +535 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.14081040851699 + 20 +-50.97630469326822 + 30 +0.0 + 11 +-43.01285934869699 + 21 +-50.77154019550821 + 31 +0.0 + 0 +LINE + 5 +536 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.27043750003698 + 20 +-51.56116738942822 + 30 +0.0 + 11 +-43.690692585357 + 21 +-52.23371611290822 + 31 +0.0 + 0 +LINE + 5 +537 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.52889027445699 + 20 +-56.77578187254822 + 30 +0.0 + 11 +-46.94914535977699 + 21 +-57.44833059602822 + 31 +0.0 + 0 +LINE + 5 +538 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.51298383179699 + 20 +-56.84468024122821 + 30 +0.0 + 11 +-46.88024699109699 + 21 +-57.43242415336823 + 31 +0.0 + 0 +LINE + 5 +539 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.621794216677 + 20 +-52.21780967024821 + 30 +0.0 + 11 +-43.254531059917 + 21 +-51.63006575556822 + 31 +0.0 + 0 +LINE + 5 +53A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-42.71920623775699 + 20 +-51.90561490982823 + 30 +0.0 + 11 +-43.139461323077 + 21 +-52.57816363330822 + 31 +0.0 + 0 +LINE + 5 +53B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-47.39362823001699 + 20 +-59.38625382710823 + 30 +0.0 + 11 +-47.16387491761699 + 21 +-59.01857166940821 + 31 +0.0 + 0 +LINE + 5 +53C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.397914094957 + 20 +-57.79277811642821 + 30 +0.0 + 11 +-45.977659012177 + 21 +-57.12022939294822 + 31 +0.0 + 0 +LINE + 5 +53D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-46.35551169055699 + 20 +-57.81927408070822 + 30 +0.0 + 11 +-45.935256605237 + 21 +-57.14672535722822 + 31 +0.0 + 0 +LINE + 5 +53E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-43.09705891867699 + 20 +-52.60465959758822 + 30 +0.0 + 11 +-42.676803833357 + 21 +-51.93211087410822 + 31 +0.0 + 0 +LINE + 5 +53F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-41.15660826313699 + 20 +-48.23349475090822 + 30 +0.0 + 11 +-41.15660826313699 + 21 +-53.20505871428821 + 31 +0.0 + 0 +LINE + 5 +540 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +19.827155613643 + 20 +-3.362890329228221 + 30 +0.0 + 11 +22.98715561316301 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +541 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +11.507155614103 + 20 +23.93696502015176 + 30 +0.0 + 11 +11.507155614103 + 21 +5.937254321651764 + 31 +0.0 + 0 +LINE + 5 +542 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +12.63685126174299 + 20 +3.137109670491781 + 30 +0.0 + 11 +12.63685126174299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +543 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +12.63721783454301 + 20 +3.137109670491781 + 30 +0.0 + 11 +30.17712260480299 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +544 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +12.63721783454301 + 20 +4.137109672011789 + 30 +0.0 + 11 +30.17712271402299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +545 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +13.90715561216299 + 20 +26.93710967263176 + 30 +0.0 + 11 +13.90715561216299 + 21 +25.43710967035178 + 31 +0.0 + 0 +LINE + 5 +546 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +14.40715561292299 + 20 +22.13710967143179 + 30 +0.0 + 11 +14.40715561292299 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +547 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +14.907155613683 + 20 +27.23710967207178 + 30 +0.0 + 11 +14.907155613683 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +548 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +24.18312189280299 + 20 +5.438278149171779 + 30 +0.0 + 11 +23.00773167310301 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +549 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +25.566229700623 + 20 +5.438278149171779 + 30 +0.0 + 11 +28.06641808098298 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +54A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +14.907155613683 + 20 +5.937109671191763 + 30 +0.0 + 11 +11.507155614103 + 21 +5.937109671191763 + 31 +0.0 + 0 +LINE + 5 +54B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +15.70715561388299 + 20 +27.23710967207178 + 30 +0.0 + 11 +15.70715561388299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +54C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +22.20412864480299 + 20 +6.131304304391775 + 30 +0.0 + 11 +21.591608569363 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +54D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +27.54522295116301 + 20 +6.131304304391775 + 30 +0.0 + 11 +29.48254118726301 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +54E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.62342145214298 + 20 +7.941603142511766 + 30 +0.0 + 11 +21.651488975383 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +54F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.09786261804298 + 20 +7.941603142511766 + 30 +0.0 + 11 +28.51652542816301 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +550 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +22.20412864480299 + 20 +6.131304304391775 + 30 +0.0 + 11 +23.00773167310301 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +551 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.38931821496301 + 20 +8.53561734183178 + 30 +0.0 + 11 +28.09786261804298 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +552 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +18.921373114823 + 20 +4.137109672011789 + 30 +0.0 + 11 +18.921373114823 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +553 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +19.62750007696299 + 20 +12.63711791199178 + 30 +0.0 + 11 +19.62750007696299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +554 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.73139358316298 + 20 +9.738882103191784 + 30 +0.0 + 11 +22.02284917754299 + 21 +9.738882103191784 + 31 +0.0 + 0 +LINE + 5 +555 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +27.63012719842301 + 20 +9.836785818991771 + 30 +0.0 + 11 +27.92158279280303 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +556 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +19.827155613643 + 20 +-3.362890329228221 + 30 +0.0 + 11 +19.827155613643 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +557 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +20.79332245956301 + 20 +12.63711791199178 + 30 +0.0 + 11 +20.79332245956301 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +558 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.000017563063 + 20 +12.48711791227178 + 30 +0.0 + 11 +21.000017563063 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +559 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.589609498403 + 20 +11.15008055587178 + 30 +0.0 + 11 +28.88106509532299 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +55A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.62342145214298 + 20 +9.886669331111775 + 30 +0.0 + 11 +21.73139358316298 + 21 +9.738882103191784 + 31 +0.0 + 0 +LINE + 5 +55B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +22.02284917754299 + 20 +9.738882103191784 + 30 +0.0 + 11 +21.62342145214298 + 21 +10.28560019187175 + 31 +0.0 + 0 +LINE + 5 +55C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.62342145214298 + 20 +10.51541782469176 + 30 +0.0 + 11 +22.119224395003 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +55D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.02715561394301 + 20 +3.137109670491781 + 30 +0.0 + 11 +21.02715561394301 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +55E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.591608569363 + 20 +6.131304304391775 + 30 +0.0 + 11 +21.591608569363 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +55F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.62342145214298 + 20 +6.131304304391775 + 30 +0.0 + 11 +21.62342145214298 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +560 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.651488975383 + 20 +7.941603142511766 + 30 +0.0 + 11 +21.651488975383 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +561 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.787155612863 + 20 +-3.362890329228221 + 30 +0.0 + 11 +21.787155612863 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +562 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.60751500948301 + 20 +12.53711791387177 + 30 +0.0 + 11 +21.591608569363 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +563 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.591608569363 + 20 +12.48711791227178 + 30 +0.0 + 11 +21.000017563063 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +564 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.125930143823 + 20 +12.48711791227178 + 30 +0.0 + 11 +29.34474444990299 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +565 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +29.48254118726301 + 20 +12.48711791227178 + 30 +0.0 + 11 +30.07413219102297 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +566 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +19.62750007696299 + 20 +12.63711791199178 + 30 +0.0 + 11 +21.46971827466298 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +567 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.279633321303 + 20 +12.63711791199178 + 30 +0.0 + 11 +30.121851516463 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +568 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +20.79332245956301 + 20 +12.63711791199178 + 30 +0.0 + 11 +21.000017563063 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +569 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.46971827466298 + 20 +12.63711791199178 + 30 +0.0 + 11 +21.60751500948301 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +56A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +21.62342145214298 + 20 +12.48711791227178 + 30 +0.0 + 11 +21.60751500948301 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +56B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +22.98715561316301 + 20 +3.137109670491781 + 30 +0.0 + 11 +22.98715561316301 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +56C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +23.89293707820299 + 20 +3.137109670491781 + 30 +0.0 + 11 +23.89293707820299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +56D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +24.18312189280299 + 20 +4.137109672011789 + 30 +0.0 + 11 +24.18312189280299 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +56E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +25.566229700623 + 20 +4.137109672011789 + 30 +0.0 + 11 +25.566229700623 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +56F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.279633321303 + 20 +12.63711791199178 + 30 +0.0 + 11 +28.14183658394301 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +570 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +29.34474444990299 + 20 +12.48711791227178 + 30 +0.0 + 11 +29.413642818583 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +571 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +26.89102786128301 + 20 +4.137109672011789 + 30 +0.0 + 11 +26.89102786128301 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +572 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +15.70715561388299 + 20 +17.93710967165178 + 30 +0.0 + 11 +14.907155613683 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +573 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +29.413642818583 + 20 +12.53711791387177 + 30 +0.0 + 11 +29.48254118726301 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +574 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.09786261804298 + 20 +7.941603142511766 + 30 +0.0 + 11 +28.09786261804298 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +575 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.125930143823 + 20 +6.131304304391775 + 30 +0.0 + 11 +28.125930143823 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +576 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.125930143823 + 20 +8.909779887891758 + 30 +0.0 + 11 +28.125930143823 + 21 +9.886669331111775 + 31 +0.0 + 0 +LINE + 5 +577 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.125930143823 + 20 +10.51541782469176 + 30 +0.0 + 11 +28.125930143823 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +578 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.125930143823 + 20 +12.48711791227178 + 30 +0.0 + 11 +28.14183658394301 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +579 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.589609498403 + 20 +11.15008055587178 + 30 +0.0 + 11 +27.63012719842301 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +57A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +27.92158279280303 + 20 +9.836785818991771 + 30 +0.0 + 11 +28.88106509532299 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +57B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.88106509532299 + 20 +10.92026292559178 + 30 +0.0 + 11 +28.01795801280302 + 21 +9.738882103191784 + 31 +0.0 + 0 +LINE + 5 +57C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.38931821496301 + 20 +7.941603142511766 + 30 +0.0 + 11 +28.38931821496301 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +57D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.51652542816301 + 20 +8.53561734183178 + 30 +0.0 + 11 +28.51652542816301 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +57E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.88106509532299 + 20 +11.15008055587178 + 30 +0.0 + 11 +28.88106509532299 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +57F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +29.34474444990299 + 20 +6.131304304391775 + 30 +0.0 + 11 +29.34474444990299 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +580 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +29.445455701363 + 20 +12.63711791199178 + 30 +0.0 + 11 +29.413642818583 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +581 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +29.48254118726301 + 20 +6.131304304391775 + 30 +0.0 + 11 +29.48254118726301 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +582 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +30.07413219102297 + 20 +12.48711791227178 + 30 +0.0 + 11 +30.07413219102297 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +583 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +30.121851516463 + 20 +12.63711791199178 + 30 +0.0 + 11 +30.121851516463 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +584 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +30.17746530160302 + 20 +3.137109670491781 + 30 +0.0 + 11 +30.17746530160302 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +585 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +30.121851516463 + 20 +12.63711791199178 + 30 +0.0 + 11 +30.07413219102297 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +586 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +27.54522295116301 + 20 +6.131304304391775 + 30 +0.0 + 11 +26.741619920323 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +587 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +28.06641808098298 + 20 +5.438278149171779 + 30 +0.0 + 11 +28.870021111823 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +588 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +14.40715561292299 + 20 +22.13710967143179 + 30 +0.0 + 11 +14.907155613683 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +589 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +14.40715561292299 + 20 +23.63710967117176 + 30 +0.0 + 11 +14.907155613683 + 21 +23.63710967117176 + 31 +0.0 + 0 +LINE + 5 +58A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +15.70715561388299 + 20 +23.93710967061178 + 30 +0.0 + 11 +11.507155614103 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +58B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +13.90715561216299 + 20 +25.43710967035178 + 30 +0.0 + 11 +14.907155613683 + 21 +25.43710967035178 + 31 +0.0 + 0 +LINE + 5 +58C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +13.90715561216299 + 20 +26.93710967263176 + 30 +0.0 + 11 +14.907155613683 + 21 +26.93710967263176 + 31 +0.0 + 0 +LINE + 5 +58D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +15.70715561388299 + 20 +27.23710967207178 + 30 +0.0 + 11 +14.907155613683 + 21 +27.23710967207178 + 31 +0.0 + 0 +LINE + 5 +58E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +73.26644934190301 + 20 +3.137109670491781 + 30 +0.0 + 11 +73.26644934190301 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +58F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +73.83333318146299 + 20 +12.48711791227178 + 30 +0.0 + 11 +73.83333318146299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +590 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.20300027042299 + 20 +6.131304304391775 + 30 +0.0 + 11 +74.20300027042299 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +591 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.34079700778301 + 20 +6.131304304391775 + 30 +0.0 + 11 +74.34079700778301 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +592 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.082839089863 + 20 +11.15008055587178 + 30 +0.0 + 11 +75.082839089863 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +593 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.31062875620301 + 20 +8.53561734183178 + 30 +0.0 + 11 +75.31062875620301 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +594 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.39011664396298 + 20 +7.941603142511766 + 30 +0.0 + 11 +75.39011664396298 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +595 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +73.88105250690296 + 20 +12.63711791199178 + 30 +0.0 + 11 +73.83333318146299 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +596 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.30371152188303 + 20 +12.63711791199178 + 30 +0.0 + 11 +74.27189863910303 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +597 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.82235752192298 + 20 +4.137109672011789 + 30 +0.0 + 11 +75.82235752192298 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +598 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.85654309744302 + 20 +7.941603142511766 + 30 +0.0 + 11 +75.85654309744302 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +599 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.29130762796302 + 20 +6.131304304391775 + 30 +0.0 + 11 +76.29130762796302 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +59A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.32312051074302 + 20 +6.131304304391775 + 30 +0.0 + 11 +76.32312051074302 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +59B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +77.266449342903 + 20 +23.93710967061178 + 30 +0.0 + 11 +77.266449342903 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +59C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +77.514444970863 + 20 +4.137109672011789 + 30 +0.0 + 11 +77.514444970863 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +59D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.29130762796302 + 20 +12.48711791227178 + 30 +0.0 + 11 +76.307214068083 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +59E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.585745293603 + 20 +6.131304304391775 + 30 +0.0 + 11 +75.08789219634298 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +59F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +77.20801243666301 + 20 +5.438278149171779 + 30 +0.0 + 11 +76.70586553392297 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5A0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.622168252503 + 20 +9.738882103191784 + 30 +0.0 + 11 +75.082839089863 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +5A1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.082839089863 + 20 +11.15008055587178 + 30 +0.0 + 11 +75.68239017422303 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +5A2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.14881662770301 + 20 +9.836785818991771 + 30 +0.0 + 11 +75.54926554334298 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +5A3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.307214068083 + 20 +12.53711791387177 + 30 +0.0 + 11 +76.32312051074302 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5A4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.13380222236298 + 20 +6.131304304391775 + 30 +0.0 + 11 +79.13380222236298 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5A5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.503469308783 + 20 +12.48711791227178 + 30 +0.0 + 11 +79.503469308783 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5A6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.710164414823 + 20 +12.63711791199178 + 30 +0.0 + 11 +79.710164414823 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5A7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +81.57587022620299 + 20 +12.63711791199178 + 30 +0.0 + 11 +81.57587022620299 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5A8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +81.62358954910303 + 20 +12.48711791227178 + 30 +0.0 + 11 +81.62358954910303 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5A9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.14970866248296 + 20 +12.53711791387177 + 30 +0.0 + 11 +79.13380222236298 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5AA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +81.57587022620299 + 20 +12.63711791199178 + 30 +0.0 + 11 +81.62358954910303 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5AB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.27189863910303 + 20 +12.53711791387177 + 30 +0.0 + 11 +74.20300027042299 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5AC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +95.79144934134296 + 20 +-3.362890329228221 + 30 +0.0 + 11 +104.741449343263 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +5AD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.34079700524302 + 20 +12.48711791227178 + 30 +0.0 + 11 +74.27189863910303 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5AE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +78.248910293903 + 20 +5.438278149171779 + 30 +0.0 + 11 +78.75105719918298 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5AF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.28750539984299 + 20 +12.63711791199178 + 30 +0.0 + 11 +79.14970866248296 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5B0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.710164414823 + 20 +12.63711791199178 + 30 +0.0 + 11 +79.503469308783 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5B1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.16941733326303 + 20 +12.63711791199178 + 30 +0.0 + 11 +76.307214068083 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5B2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +90.26644934234298 + 20 +17.93710967165178 + 30 +0.0 + 11 +90.26642265964301 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +5B3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +73.26644934190301 + 20 +3.137109670491781 + 30 +0.0 + 11 +127.2664493427029 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +5B4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +73.26644934190301 + 20 +4.137109672011789 + 30 +0.0 + 11 +127.2664493427029 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5B5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.08789219634298 + 20 +5.438278149171779 + 30 +0.0 + 11 +78.248910293903 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +5B6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +122.283988388163 + 20 +5.438278149171779 + 30 +0.0 + 11 +125.445006488263 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +5B7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +95.79144934134296 + 20 +-3.362890329228221 + 30 +0.0 + 11 +95.79144934134296 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +5B8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.781841485423 + 20 +6.131304304391775 + 30 +0.0 + 11 +121.399096462243 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5B9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.70586553392297 + 20 +6.131304304391775 + 30 +0.0 + 11 +74.20300027042299 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5BA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +78.75105719918298 + 20 +6.131304304391775 + 30 +0.0 + 11 +79.13380222236298 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5BB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +123.827033150683 + 20 +6.131304304391775 + 30 +0.0 + 11 +126.329898414183 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5BC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.31062875620301 + 20 +7.941603142511766 + 30 +0.0 + 11 +75.85654309744302 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +5BD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.676355587163 + 20 +7.941603142511766 + 30 +0.0 + 11 +125.222269928403 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +5BE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +96.51644934168302 + 20 +27.23710967207178 + 30 +0.0 + 11 +96.51644934168302 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +5BF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +96.99144934164298 + 20 +3.137109670491781 + 30 +0.0 + 11 +96.99144934164298 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +5C0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +125.142782038103 + 20 +8.53561734183178 + 30 +0.0 + 11 +124.676355587163 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +5C1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.85654309744302 + 20 +8.53561734183178 + 30 +0.0 + 11 +75.39011664396298 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +5C2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.68239017422303 + 20 +9.836785818991771 + 30 +0.0 + 11 +76.14881662770301 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +5C3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.3840820569029 + 20 +9.836785818991771 + 30 +0.0 + 11 +124.850508510383 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +5C4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +75.54926554334298 + 20 +11.15008055587178 + 30 +0.0 + 11 +75.082839089863 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +5C5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.983633141263 + 20 +11.15008055587178 + 30 +0.0 + 11 +125.450059594743 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +5C6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.399096462243 + 20 +12.48711791227178 + 30 +0.0 + 11 +121.029429375823 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5C7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.29130762796302 + 20 +12.48711791227178 + 30 +0.0 + 11 +74.34079700524302 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5C8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +74.20300027042299 + 20 +12.48711791227178 + 30 +0.0 + 11 +73.83333318146299 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5C9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.13380222236298 + 20 +12.48711791227178 + 30 +0.0 + 11 +79.503469308783 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5CA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.241591056643 + 20 +12.48711791227178 + 30 +0.0 + 11 +126.192101676823 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5CB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.329898414183 + 20 +12.48711791227178 + 30 +0.0 + 11 +126.699565503143 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5CC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +76.16941733326303 + 20 +12.63711791199178 + 30 +0.0 + 11 +73.88105250690296 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +5CD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +79.28750539984299 + 20 +12.63711791199178 + 30 +0.0 + 11 +81.57587022620299 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +5CE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +118.957028458403 + 20 +12.63711791199178 + 30 +0.0 + 11 +121.245393284763 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +5CF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.363481351343 + 20 +12.63711791199178 + 30 +0.0 + 11 +126.6518461777029 + 21 +12.63711791199178 + 31 +0.0 + 0 +LINE + 5 +5D0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +103.541449342963 + 20 +-3.362890329228221 + 30 +0.0 + 11 +103.541449342963 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +5D1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +104.016449342923 + 20 +23.93710967061178 + 30 +0.0 + 11 +104.016449342923 + 21 +27.23710967207178 + 31 +0.0 + 0 +LINE + 5 +5D2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +104.741449343263 + 20 +3.137109670491781 + 30 +0.0 + 11 +104.741449343263 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +5D3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +77.266449342903 + 20 +17.93710967165178 + 30 +0.0 + 11 +90.26644934234298 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +5D4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +110.266449342263 + 20 +17.93710967165178 + 30 +0.0 + 11 +123.266449341703 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +5D5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +110.266461907643 + 20 +3.137109670491781 + 30 +0.0 + 11 +110.266449342263 + 21 +17.93710967165178 + 31 +0.0 + 0 +LINE + 5 +5D6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +77.266449342903 + 20 +23.93710967061178 + 30 +0.0 + 11 +96.51644934168302 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +5D7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +104.016449342923 + 20 +23.93710967061178 + 30 +0.0 + 11 +123.266449341703 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +5D8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +120.822734269783 + 20 +12.63711791199178 + 30 +0.0 + 11 +121.029429375823 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5D9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.363481351343 + 20 +12.63711791199178 + 30 +0.0 + 11 +124.225684613983 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5DA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.245393284763 + 20 +12.63711791199178 + 30 +0.0 + 11 +121.383190022123 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5DB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.781841485423 + 20 +6.131304304391775 + 30 +0.0 + 11 +122.283988388163 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +5DC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.192101676823 + 20 +12.48711791227178 + 30 +0.0 + 11 +126.2610000455029 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5DD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +104.016449342923 + 20 +27.23710967207178 + 30 +0.0 + 11 +96.51644934168302 + 21 +27.23710967207178 + 31 +0.0 + 0 +LINE + 5 +5DE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.2610000455029 + 20 +12.53711791387177 + 30 +0.0 + 11 +126.329898414183 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5DF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +118.909309132963 + 20 +12.48711791227178 + 30 +0.0 + 11 +118.909309132963 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5E0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +118.957028458403 + 20 +12.63711791199178 + 30 +0.0 + 11 +118.957028458403 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5E1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +118.957028458403 + 20 +12.63711791199178 + 30 +0.0 + 11 +118.909309132963 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5E2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +120.822734269783 + 20 +12.63711791199178 + 30 +0.0 + 11 +120.822734269783 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5E3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.029429375823 + 20 +12.48711791227178 + 30 +0.0 + 11 +121.029429375823 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5E4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.383190022123 + 20 +12.53711791387177 + 30 +0.0 + 11 +121.399096462243 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5E5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +121.399096462243 + 20 +6.131304304391775 + 30 +0.0 + 11 +121.399096462243 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5E6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +123.018453713743 + 20 +4.137109672011789 + 30 +0.0 + 11 +123.018453713743 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +5E7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +123.266449341703 + 20 +17.93710967165178 + 30 +0.0 + 11 +123.266449341703 + 21 +23.93710967061178 + 31 +0.0 + 0 +LINE + 5 +5E8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.225684613983 + 20 +12.53711791387177 + 30 +0.0 + 11 +124.209778173863 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5E9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.983633141263 + 20 +11.15008055587178 + 30 +0.0 + 11 +124.3840820569029 + 21 +9.836785818991771 + 31 +0.0 + 0 +LINE + 5 +5EA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +123.827033150683 + 20 +6.131304304391775 + 30 +0.0 + 11 +123.3248862479429 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +5EB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.241591056643 + 20 +12.48711791227178 + 30 +0.0 + 11 +124.225684613983 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5EC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.209778173863 + 20 +6.131304304391775 + 30 +0.0 + 11 +124.209778173863 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5ED +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.241591056643 + 20 +6.131304304391775 + 30 +0.0 + 11 +124.241591056643 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5EE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.676355587163 + 20 +7.941603142511766 + 30 +0.0 + 11 +124.676355587163 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +5EF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.710541162683 + 20 +4.137109672011789 + 30 +0.0 + 11 +124.710541162683 + 21 +5.438278149171779 + 31 +0.0 + 0 +LINE + 5 +5F0 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +125.142782038103 + 20 +7.941603142511766 + 30 +0.0 + 11 +125.142782038103 + 21 +8.53561734183178 + 31 +0.0 + 0 +LINE + 5 +5F1 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +125.222269928403 + 20 +8.53561734183178 + 30 +0.0 + 11 +125.222269928403 + 21 +7.941603142511766 + 31 +0.0 + 0 +LINE + 5 +5F2 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +124.850508510383 + 20 +9.836785818991771 + 30 +0.0 + 11 +125.450059594743 + 21 +11.15008055587178 + 31 +0.0 + 0 +LINE + 5 +5F3 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +125.450059594743 + 20 +10.92026292559178 + 30 +0.0 + 11 +124.910730429563 + 21 +9.738882103191784 + 31 +0.0 + 0 +LINE + 5 +5F4 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +125.445006488263 + 20 +5.438278149171779 + 30 +0.0 + 11 +125.947153391003 + 21 +6.131304304391775 + 31 +0.0 + 0 +LINE + 5 +5F5 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.229187162723 + 20 +12.63711791199178 + 30 +0.0 + 11 +126.2610000455029 + 21 +12.53711791387177 + 31 +0.0 + 0 +LINE + 5 +5F6 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +125.450059594743 + 20 +11.15008055587178 + 30 +0.0 + 11 +125.450059594743 + 21 +10.92026292559178 + 31 +0.0 + 0 +LINE + 5 +5F7 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.192101676823 + 20 +6.131304304391775 + 30 +0.0 + 11 +126.192101676823 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5F8 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.329898414183 + 20 +6.131304304391775 + 30 +0.0 + 11 +126.329898414183 + 21 +12.48711791227178 + 31 +0.0 + 0 +LINE + 5 +5F9 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.699565503143 + 20 +12.48711791227178 + 30 +0.0 + 11 +126.699565503143 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +5FA +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +127.2664493427029 + 20 +4.137109672011789 + 30 +0.0 + 11 +127.2664493427029 + 21 +3.137109670491781 + 31 +0.0 + 0 +LINE + 5 +5FB +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +126.6518461777029 + 20 +12.63711791199178 + 30 +0.0 + 11 +126.699565503143 + 21 +12.48711791227178 + 31 +0.0 + 0 +CIRCLE + 5 +5FC +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 2 +100 +AcDbCircle + 10 +-68.15660826353699 + 20 +14.93710967217175 + 30 +0.0 + 40 +9.00000000098 + 0 +ARC + 5 +5FD +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-57.42990933343699 + 20 +1877.011125267771 + 30 +0.0 + 40 +1813.27767090756 +100 +AcDbArc + 50 +269.9770384284995 + 51 +270.1939445519995 + 0 +ARC + 5 +5FE +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-78.883307193637 + 20 +1877.011125267771 + 30 +0.0 + 40 +1813.27767090756 +100 +AcDbArc + 50 +269.8060554480004 + 51 +270.0229618014001 + 0 +ARC + 5 +5FF +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-78.92371046309699 + 20 +-1704.877017306868 + 30 +0.0 + 40 +1786.15108570694 +100 +AcDbArc + 50 +89.97539348690006 + 51 +90.19559381719956 + 0 +ARC + 5 +600 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-57.389506063977 + 20 +-1704.877017306868 + 30 +0.0 + 40 +1786.15108570694 +100 +AcDbArc + 50 +89.80440618320024 + 51 +90.02460634019987 + 0 +ARC + 5 +601 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-86.562593798457 + 20 +71.47039528711179 + 30 +0.0 + 40 +9.684511690119999 +100 +AcDbArc + 50 +105.4918630369998 + 51 +106.7291590044001 + 0 +ARC + 5 +602 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-49.750622627017 + 20 +71.47039564017177 + 30 +0.0 + 40 +9.68451132436 +100 +AcDbArc + 50 +73.27084005549988 + 51 +74.50813697859996 + 0 +CIRCLE + 5 +603 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-47.45660826407699 + 20 +70.70375871269175 + 30 +0.0 + 40 +0.9999999989799999 + 0 +CIRCLE + 5 +604 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-88.85660826299698 + 20 +70.70375871269175 + 30 +0.0 + 40 +0.9999999989799999 + 0 +CIRCLE + 5 +605 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-49.95660826279699 + 20 +76.70375871165174 + 30 +0.0 + 40 +0.6500000004800001 + 0 +CIRCLE + 5 +606 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-86.35660826427701 + 20 +76.70375871165174 + 30 +0.0 + 40 +0.6500000004800001 + 0 +ARC + 5 +607 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-78.883307193637 + 20 +-1855.226643805388 + 30 +0.0 + 40 +1813.27767090756 +100 +AcDbArc + 50 +89.97703825849974 + 51 +90.19415392069957 + 0 +ARC + 5 +608 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-57.42990933343699 + 20 +-1855.226643805388 + 30 +0.0 + 40 +1813.27767090756 +100 +AcDbArc + 50 +89.8058460793004 + 51 +90.02296108569975 + 0 +ARC + 5 +609 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-57.389506063977 + 20 +1726.661498769251 + 30 +0.0 + 40 +1786.15108570694 +100 +AcDbArc + 50 +269.9753941529004 + 51 +270.1958063889001 + 0 +ARC + 5 +60A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-78.92371046309699 + 20 +1726.661498769251 + 30 +0.0 + 40 +1786.15108570694 +100 +AcDbArc + 50 +269.8041936108003 + 51 +270.0246065738995 + 0 +ARC + 5 +60B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-64.881608262877 + 20 +-50.33927725002822 + 30 +0.0 + 40 +1.200000000299999 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +60C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-71.43160826419699 + 20 +-50.33927725002822 + 30 +0.0 + 40 +1.200000000299999 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +60D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-71.43160826419699 + 20 +-51.09927724894823 + 30 +0.0 + 40 +1.200000000299999 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +60E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-64.881608262877 + 20 +-51.09927724894823 + 30 +0.0 + 40 +1.200000000299999 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +CIRCLE + 5 +60F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbCircle + 10 +-47.45660826407699 + 20 +-48.91927725030822 + 30 +0.0 + 40 +0.9999999989799999 + 0 +CIRCLE + 5 +610 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbCircle + 10 +-88.85660826299698 + 20 +-48.91927725030822 + 30 +0.0 + 40 +0.9999999989799999 + 0 +ARC + 5 +611 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-71.43160826419699 + 20 +-51.09927724894823 + 30 +0.0 + 40 +0.9000000008599998 +100 +AcDbArc + 50 +180.0 + 51 +270.0 + 0 +ARC + 5 +612 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-71.43160826419699 + 20 +-50.33927725002822 + 30 +0.0 + 40 +0.9000000008599998 +100 +AcDbArc + 50 +90.0 + 51 +180.0 + 0 +ARC + 5 +613 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-64.881608262877 + 20 +-50.33927725002822 + 30 +0.0 + 40 +0.9000000008599998 +100 +AcDbArc + 50 +0.0 + 51 +90.0 + 0 +ARC + 5 +614 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbCircle + 10 +-64.881608262877 + 20 +-51.09927724894823 + 30 +0.0 + 40 +0.9000000008599998 +100 +AcDbArc + 50 +270.0 + 51 +0.0 + 0 +CIRCLE + 5 +615 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbCircle + 10 +-49.95660826279699 + 20 +-54.91927724926822 + 30 +0.0 + 40 +0.6500000004800001 + 0 +CIRCLE + 5 +616 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbCircle + 10 +-86.35660826427701 + 20 +-54.91927724926822 + 30 +0.0 + 40 +0.6500000004800001 + 0 +SPLINE + 5 +617 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0791926895 + 40 +0.1497942276 + 40 +0.2040793124 + 40 +0.2447043896 + 40 +0.2778696785 + 40 +0.3065451953 + 40 +0.3542813743 + 40 +0.3937690227 + 40 +0.4332368339000001 + 40 +0.4762505138000001 + 40 +0.5276223965 + 40 +0.6509198271 + 40 +0.7147705874 + 40 +0.7732605992 + 40 +0.8242902975999999 + 40 +0.874691257 + 40 +0.9325344318 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-48.036452898137 + 20 +8.53561734183178 + 30 +0.0 + 10 +-48.036452898137 + 20 +8.572052671551787 + 30 +0.0 + 10 +-48.03138750567701 + 20 +8.641174346871778 + 30 +0.0 + 10 +-48.006146182017 + 20 +8.732438667771774 + 30 +0.0 + 10 +-47.96785274577699 + 20 +8.799376766051764 + 30 +0.0 + 10 +-47.92544130405699 + 20 +8.84112505187177 + 30 +0.0 + 10 +-47.88546405101699 + 20 +8.866564358371775 + 30 +0.0 + 10 +-47.83966711441699 + 20 +8.887652106391769 + 30 +0.0 + 10 +-47.78993181383699 + 20 +8.907598746711769 + 30 +0.0 + 10 +-47.74308304037699 + 20 +8.943462678031792 + 30 +0.0 + 10 +-47.70758720585699 + 20 +8.987474655031789 + 30 +0.0 + 10 +-47.67922562681699 + 20 +9.042530176111753 + 30 +0.0 + 10 +-47.64800614645698 + 20 +9.13792943921176 + 30 +0.0 + 10 +-47.62930197253699 + 20 +9.246761032571768 + 30 +0.0 + 10 +-47.623783944457 + 20 +9.359719610311756 + 30 +0.0 + 10 +-47.62672713897699 + 20 +9.439554276651747 + 30 +0.0 + 10 +-47.63745758995699 + 20 +9.512549086211762 + 30 +0.0 + 10 +-47.65810190223699 + 20 +9.583052442791782 + 30 +0.0 + 10 +-47.68813318583698 + 20 +9.658170534871786 + 30 +0.0 + 10 +-47.71202272149699 + 20 +9.710645540411761 + 30 +0.0 + 10 +-47.72491339929699 + 20 +9.738882103191784 + 30 +0.0 + 0 +SPLINE + 5 +618 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0411807639 + 40 +0.0738280746 + 40 +0.1011004716 + 40 +0.1258408965 + 40 +0.1740039668 + 40 +0.2222705698 + 40 +0.270511138 + 40 +0.3217421892 + 40 +0.3787369816 + 40 +0.4433588121 + 40 +0.5896612185 + 40 +0.6655093576 + 40 +0.7390005390000001 + 40 +0.8073439200999999 + 40 +0.8710955970999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-47.49053855689699 + 20 +8.53561734183178 + 30 +0.0 + 10 +-47.49053855689699 + 20 +8.55594169539178 + 30 +0.0 + 10 +-47.488207812257 + 20 +8.592512620471765 + 30 +0.0 + 10 +-47.474858202177 + 20 +8.64106511417178 + 30 +0.0 + 10 +-47.45342692677699 + 20 +8.677539740231779 + 30 +0.0 + 10 +-47.417391738497 + 20 +8.712211032331779 + 30 +0.0 + 10 +-47.362951720377 + 20 +8.738545333231783 + 30 +0.0 + 10 +-47.29680338429699 + 20 +8.765619663131772 + 30 +0.0 + 10 +-47.23831772783699 + 20 +8.810846986951744 + 30 +0.0 + 10 +-47.18990914799699 + 20 +8.871720591391763 + 30 +0.0 + 10 +-47.15067014595699 + 20 +8.947966512051763 + 30 +0.0 + 10 +-47.10821339317699 + 20 +9.073507119491765 + 30 +0.0 + 10 +-47.08462464431699 + 20 +9.214043160491783 + 30 +0.0 + 10 +-47.077436423997 + 20 +9.359854131251765 + 30 +0.0 + 10 +-47.08164706581699 + 20 +9.467389422911779 + 30 +0.0 + 10 +-47.096663985237 + 20 +9.568001812491772 + 30 +0.0 + 10 +-47.132280573897 + 20 +9.692131988411759 + 30 +0.0 + 10 +-47.17184421587699 + 20 +9.778911997731782 + 30 +0.0 + 10 +-47.198265026637 + 20 +9.836785818991771 + 30 +0.0 + 0 +SPLINE + 5 +619 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1289044029 + 40 +0.1926560799 + 40 +0.260999461 + 40 +0.3344906424 + 40 +0.4103387815 + 40 +0.5566411879 + 40 +0.6212630184000001 + 40 +0.6782578108 + 40 +0.7294888620000001 + 40 +0.7777294302 + 40 +0.8259960331999998 + 40 +0.8741591034999999 + 40 +0.8988995283999999 + 40 +0.9261719254 + 40 +0.9588192360999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-89.114951500437 + 20 +9.836785818991771 + 30 +0.0 + 10 +-89.14137231119699 + 20 +9.778911997731782 + 30 +0.0 + 10 +-89.18093595317699 + 20 +9.692131988411759 + 30 +0.0 + 10 +-89.21655253929699 + 20 +9.568001812491772 + 30 +0.0 + 10 +-89.23156946125699 + 20 +9.467389422911779 + 30 +0.0 + 10 +-89.23578010307698 + 20 +9.359854131251765 + 30 +0.0 + 10 +-89.22859188275699 + 20 +9.214043160491783 + 30 +0.0 + 10 +-89.205003133897 + 20 +9.073507119491765 + 30 +0.0 + 10 +-89.162546381117 + 20 +8.947966512051763 + 30 +0.0 + 10 +-89.123307379077 + 20 +8.871720591391763 + 30 +0.0 + 10 +-89.074898799237 + 20 +8.810846986951744 + 30 +0.0 + 10 +-89.016413142777 + 20 +8.765619663131772 + 30 +0.0 + 10 +-88.95026480669699 + 20 +8.738545333231783 + 30 +0.0 + 10 +-88.89582478857699 + 20 +8.712211032331779 + 30 +0.0 + 10 +-88.85978960029699 + 20 +8.677539740231779 + 30 +0.0 + 10 +-88.83835832489699 + 20 +8.64106511417178 + 30 +0.0 + 10 +-88.82500871481699 + 20 +8.592512620471765 + 30 +0.0 + 10 +-88.822677970177 + 20 +8.55594169539178 + 30 +0.0 + 10 +-88.822677970177 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +61A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0674655682 + 40 +0.125308743 + 40 +0.1757097024 + 40 +0.2267394008 + 40 +0.2852294126 + 40 +0.3490801729 + 40 +0.4723776035000001 + 40 +0.5237494862 + 40 +0.5667631661 + 40 +0.6062309773 + 40 +0.6457186257 + 40 +0.6934548047 + 40 +0.7221303215 + 40 +0.7552956104000001 + 40 +0.7959206876 + 40 +0.8502057724 + 40 +0.9208073105 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-88.58830312777699 + 20 +9.738882103191784 + 30 +0.0 + 10 +-88.601193805577 + 20 +9.710645540411761 + 30 +0.0 + 10 +-88.62508333869699 + 20 +9.658170534871786 + 30 +0.0 + 10 +-88.655114624837 + 20 +9.583052442791782 + 30 +0.0 + 10 +-88.675758937117 + 20 +9.512549086211762 + 30 +0.0 + 10 +-88.68648938809698 + 20 +9.439554276651747 + 30 +0.0 + 10 +-88.68943258261699 + 20 +9.359719610311756 + 30 +0.0 + 10 +-88.683914554537 + 20 +9.246761032571768 + 30 +0.0 + 10 +-88.665210380617 + 20 +9.13792943921176 + 30 +0.0 + 10 +-88.633990900257 + 20 +9.042530176111753 + 30 +0.0 + 10 +-88.605629321217 + 20 +8.987474655031789 + 30 +0.0 + 10 +-88.57013348669699 + 20 +8.943462678031792 + 30 +0.0 + 10 +-88.523284710697 + 20 +8.907598746711769 + 30 +0.0 + 10 +-88.47354941265699 + 20 +8.887652106391769 + 30 +0.0 + 10 +-88.42775247605699 + 20 +8.866564358371775 + 30 +0.0 + 10 +-88.387775223017 + 20 +8.84112505187177 + 30 +0.0 + 10 +-88.34536378129699 + 20 +8.799376766051764 + 30 +0.0 + 10 +-88.30707034505698 + 20 +8.732438667771774 + 30 +0.0 + 10 +-88.281829018857 + 20 +8.641174346871778 + 30 +0.0 + 10 +-88.27676362893699 + 20 +8.572052671551787 + 30 +0.0 + 10 +-88.27676362893699 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +61B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0411807639 + 40 +0.0738280746 + 40 +0.1011004716 + 40 +0.1258408965 + 40 +0.1740039668 + 40 +0.2222705698 + 40 +0.270511138 + 40 +0.3217421892 + 40 +0.3787369816 + 40 +0.4433588121 + 40 +0.5896612185 + 40 +0.6655093576 + 40 +0.7390005390000001 + 40 +0.8073439200999999 + 40 +0.8710955970999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-88.35625151669701 + 20 +8.53561734183178 + 30 +0.0 + 10 +-88.35625151669701 + 20 +8.55594169539178 + 30 +0.0 + 10 +-88.358582261337 + 20 +8.592512620471765 + 30 +0.0 + 10 +-88.37193187141698 + 20 +8.64106511417178 + 30 +0.0 + 10 +-88.393363146817 + 20 +8.677539740231779 + 30 +0.0 + 10 +-88.42939833509699 + 20 +8.712211032331779 + 30 +0.0 + 10 +-88.48383835321699 + 20 +8.738545333231783 + 30 +0.0 + 10 +-88.54998668929699 + 20 +8.765619663131772 + 30 +0.0 + 10 +-88.60847234575699 + 20 +8.810846986951744 + 30 +0.0 + 10 +-88.65688092559699 + 20 +8.871720591391763 + 30 +0.0 + 10 +-88.69611992763699 + 20 +8.947966512051763 + 30 +0.0 + 10 +-88.73857668041699 + 20 +9.073507119491765 + 30 +0.0 + 10 +-88.76216542927698 + 20 +9.214043160491783 + 30 +0.0 + 10 +-88.76935364959699 + 20 +9.359854131251765 + 30 +0.0 + 10 +-88.76514300777699 + 20 +9.467389422911779 + 30 +0.0 + 10 +-88.75012608835699 + 20 +9.568001812491772 + 30 +0.0 + 10 +-88.714509499697 + 20 +9.692131988411759 + 30 +0.0 + 10 +-88.674945857717 + 20 +9.778911997731782 + 30 +0.0 + 10 +-88.64852504695699 + 20 +9.836785818991771 + 30 +0.0 + 0 +SPLINE + 5 +61C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 5 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1289044029 + 40 +0.1926560799 + 40 +0.260999461 + 40 +0.3344906424 + 40 +0.4103387815 + 40 +0.5566411879 + 40 +0.6212630184000001 + 40 +0.6782578108 + 40 +0.7294888620000001 + 40 +0.7777294302 + 40 +0.8259960331999998 + 40 +0.8741591034999999 + 40 +0.8988995283999999 + 40 +0.9261719254 + 40 +0.9588192360999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-47.664691480117 + 20 +9.836785818991771 + 30 +0.0 + 10 +-47.63827066935699 + 20 +9.778911997731782 + 30 +0.0 + 10 +-47.59870702737699 + 20 +9.692131988411759 + 30 +0.0 + 10 +-47.56309043871699 + 20 +9.568001812491772 + 30 +0.0 + 10 +-47.54807351929699 + 20 +9.467389422911779 + 30 +0.0 + 10 +-47.54386287747699 + 20 +9.359854131251765 + 30 +0.0 + 10 +-47.551051097797 + 20 +9.214043160491783 + 30 +0.0 + 10 +-47.57463984665699 + 20 +9.073507119491765 + 30 +0.0 + 10 +-47.61709659943699 + 20 +8.947966512051763 + 30 +0.0 + 10 +-47.656335601477 + 20 +8.871720591391763 + 30 +0.0 + 10 +-47.70474418131699 + 20 +8.810846986951744 + 30 +0.0 + 10 +-47.763229835237 + 20 +8.765619663131772 + 30 +0.0 + 10 +-47.829378173857 + 20 +8.738545333231783 + 30 +0.0 + 10 +-47.883818191977 + 20 +8.712211032331779 + 30 +0.0 + 10 +-47.919853380257 + 20 +8.677539740231779 + 30 +0.0 + 10 +-47.94128465565699 + 20 +8.64106511417178 + 30 +0.0 + 10 +-47.95463426319699 + 20 +8.592512620471765 + 30 +0.0 + 10 +-47.95696500783699 + 20 +8.55594169539178 + 30 +0.0 + 10 +-47.95696500783699 + 20 +8.53561734183178 + 30 +0.0 + 0 +LINE + 5 +61D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-85.02781379461699 + 20 +3.137109670491781 + 30 +0.0 + 11 +-85.02118780075699 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +61E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-51.28540273245699 + 20 +3.137109670491781 + 30 +0.0 + 11 +-51.292028723777 + 21 +4.137109672011789 + 31 +0.0 + 0 +SPLINE + 5 +61F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 34 + 73 + 30 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0740191059 + 40 +0.1515772285 + 40 +0.2201563929 + 40 +0.2802139383 + 40 +0.3334469083 + 40 +0.3815173965 + 40 +0.4249616732 + 40 +0.4638939803000001 + 40 +0.4985425356000001 + 40 +0.5296750959000001 + 40 +0.5582216372 + 40 +0.5851234575000001 + 40 +0.6113474772 + 40 +0.6374945397000001 + 40 +0.6633717047 + 40 +0.6892727964000001 + 40 +0.7161104800000001 + 40 +0.7442717927000001 + 40 +0.7734545353 + 40 +0.8032527698 + 40 +0.8332631102 + 40 +0.8630290095999999 + 40 +0.8920563587 + 40 +0.9198417963999999 + 40 +0.9465906394999999 + 40 +0.9730182509 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-41.15660826313699 + 20 +70.01797621329178 + 30 +0.0 + 10 +-41.249780098637 + 20 +69.71779548269177 + 30 +0.0 + 10 +-41.47490371747699 + 20 +69.11357806781177 + 30 +0.0 + 10 +-41.89959454703699 + 20 +68.27810657137177 + 30 +0.0 + 10 +-42.37927492117698 + 20 +67.54274109011176 + 30 +0.0 + 10 +-42.861577982477 + 20 +66.93728795507176 + 30 +0.0 + 10 +-43.33280962319699 + 20 +66.43694727173176 + 30 +0.0 + 10 +-43.787218986157 + 20 +66.01989803979176 + 30 +0.0 + 10 +-44.22059329085699 + 20 +65.67169505573177 + 30 +0.0 + 10 +-44.62733853781699 + 20 +65.38220057249178 + 30 +0.0 + 10 +-45.004455858257 + 20 +65.14188503839178 + 30 +0.0 + 10 +-45.35376339433699 + 20 +64.94083508489175 + 30 +0.0 + 10 +-45.681433155557 + 20 +64.76970631615178 + 30 +0.0 + 10 +-45.99563299959699 + 20 +64.62092886923177 + 30 +0.0 + 10 +-46.304532849157 + 20 +64.48948327487177 + 30 +0.0 + 10 +-46.61223150731699 + 20 +64.37378045319177 + 30 +0.0 + 10 +-46.92520255523699 + 20 +64.27181514785179 + 30 +0.0 + 10 +-47.249502721977 + 20 +64.17923314607175 + 30 +0.0 + 10 +-47.58768289651699 + 20 +64.09429028827175 + 30 +0.0 + 10 +-47.94260783563699 + 20 +64.01720612951179 + 30 +0.0 + 10 +-48.31296330777699 + 20 +63.94931642785177 + 30 +0.0 + 10 +-48.694308138177 + 20 +63.89214187367177 + 30 +0.0 + 10 +-49.08151802415699 + 20 +63.84598691645179 + 30 +0.0 + 10 +-49.468293092617 + 20 +63.81053050273177 + 30 +0.0 + 10 +-49.848038459617 + 20 +63.78471406465177 + 30 +0.0 + 10 +-50.217491812657 + 20 +63.76669201789177 + 30 +0.0 + 10 +-50.57721091541699 + 20 +63.75433405937177 + 30 +0.0 + 10 +-50.934296777317 + 20 +63.74661949771176 + 30 +0.0 + 10 +-51.172172194377 + 20 +63.74422550453177 + 30 +0.0 + 10 +-51.292028739017 + 20 +63.74384825865177 + 30 +0.0 + 0 +SPLINE + 5 +620 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 34 + 73 + 30 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0269817494 + 40 +0.0534093607 + 40 +0.0801582039 + 40 +0.1079436415 + 40 +0.1369709906 + 40 +0.1667368901 + 40 +0.1967472304 + 40 +0.2265454649 + 40 +0.2557282076 + 40 +0.2838895202 + 40 +0.3107272038 + 40 +0.3366282954 + 40 +0.3625054605 + 40 +0.388652523 + 40 +0.4148765427 + 40 +0.4417783629 + 40 +0.4703249042000001 + 40 +0.5014574645000001 + 40 +0.5361060198 + 40 +0.5750383269000001 + 40 +0.6184826036 + 40 +0.6665530917 + 40 +0.7197860618 + 40 +0.7798436071 + 40 +0.8484227715999999 + 40 +0.9259808940999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-85.02118778297699 + 20 +63.74384825865177 + 30 +0.0 + 10 +-85.14104433015701 + 20 +63.74422550453177 + 30 +0.0 + 10 +-85.378919747217 + 20 +63.74661949771176 + 30 +0.0 + 10 +-85.73600561165699 + 20 +63.75433405937177 + 30 +0.0 + 10 +-86.09572471441699 + 20 +63.76669201789177 + 30 +0.0 + 10 +-86.46517806745698 + 20 +63.78471406465177 + 30 +0.0 + 10 +-86.844923434457 + 20 +63.81053050273177 + 30 +0.0 + 10 +-87.231698502917 + 20 +63.84598691645179 + 30 +0.0 + 10 +-87.618908388897 + 20 +63.89214187367177 + 30 +0.0 + 10 +-88.000253219297 + 20 +63.94931642785177 + 30 +0.0 + 10 +-88.37060869143698 + 20 +64.01720612951179 + 30 +0.0 + 10 +-88.72553363055699 + 20 +64.09429028827175 + 30 +0.0 + 10 +-89.063713805097 + 20 +64.17923314607175 + 30 +0.0 + 10 +-89.388013971837 + 20 +64.27181514785179 + 30 +0.0 + 10 +-89.70098501721698 + 20 +64.37378045319177 + 30 +0.0 + 10 +-90.00868367791699 + 20 +64.48948327487177 + 30 +0.0 + 10 +-90.31758352747699 + 20 +64.62092886923177 + 30 +0.0 + 10 +-90.63178336897699 + 20 +64.76970631615178 + 30 +0.0 + 10 +-90.959453132737 + 20 +64.94083508489175 + 30 +0.0 + 10 +-91.308760668817 + 20 +65.14188503839178 + 30 +0.0 + 10 +-91.68587798925699 + 20 +65.38220057249178 + 30 +0.0 + 10 +-92.09262323621699 + 20 +65.67169505573177 + 30 +0.0 + 10 +-92.52599753837699 + 20 +66.01989803979176 + 30 +0.0 + 10 +-92.98040690387699 + 20 +66.43694727173176 + 30 +0.0 + 10 +-93.45163854459698 + 20 +66.93728795507176 + 30 +0.0 + 10 +-93.93394160589698 + 20 +67.54274109011176 + 30 +0.0 + 10 +-94.413621980037 + 20 +68.27810657137177 + 30 +0.0 + 10 +-94.838312809597 + 20 +69.11357806781177 + 30 +0.0 + 10 +-95.06343642589699 + 20 +69.71779548269177 + 30 +0.0 + 10 +-95.15660826393698 + 20 +70.01797621329178 + 30 +0.0 + 0 +SPLINE + 5 +621 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1110851296 + 40 +0.2275361093 + 40 +0.3310415658 + 40 +0.4222542764 + 40 +0.5032499915999999 + 40 +0.5761167841 + 40 +0.6416170995 + 40 +0.7000285779000001 + 40 +0.7518381398000001 + 40 +0.7983168712000001 + 40 +0.8409166231 + 40 +0.8811053236000001 + 40 +0.9203932884999998 + 40 +0.9596077733999999 + 40 +0.9984649978 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-95.15660826393698 + 20 +74.98954017667177 + 30 +0.0 + 10 +-95.06343372841699 + 20 +75.2897299064918 + 30 +0.0 + 10 +-94.83824889303699 + 20 +75.89411073735181 + 30 +0.0 + 10 +-94.41269273881699 + 20 +76.73121505755176 + 30 +0.0 + 10 +-93.93006817701699 + 20 +77.4705350724318 + 30 +0.0 + 10 +-93.44211546991699 + 20 +78.08160637505176 + 30 +0.0 + 10 +-92.96405778747699 + 20 +78.58695363969179 + 30 +0.0 + 10 +-92.50388048583699 + 20 +79.00670499475177 + 30 +0.0 + 10 +-92.06699624149699 + 20 +79.35518242327174 + 30 +0.0 + 10 +-91.65893993543699 + 20 +79.64339768631174 + 30 +0.0 + 10 +-91.28204572605699 + 20 +79.88174054465173 + 30 +0.0 + 10 +-90.93373656745699 + 20 +80.08071760415175 + 30 +0.0 + 10 +-90.60729018199699 + 20 +80.24994532005178 + 30 +0.0 + 10 +-90.293985494917 + 20 +80.3971452313918 + 30 +0.0 + 10 +-89.985587435057 + 20 +80.52725930949174 + 30 +0.0 + 10 +-89.677761185077 + 20 +80.64182470647176 + 30 +0.0 + 10 +-89.46425624505698 + 20 +80.71064897573178 + 30 +0.0 + 10 +-89.354436058297 + 20 +80.74376505123177 + 30 +0.0 + 10 +-89.35026052181699 + 20 +80.74502093645179 + 30 +0.0 + 0 +SPLINE + 5 +622 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1135609031 + 40 +0.2293411146 + 40 +0.3458572962 + 40 +0.4615643475000001 + 40 +0.5747881892 + 40 +0.6838064059000001 + 40 +0.7893074323000001 + 40 +0.8937126755999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-88.35080910187699 + 20 +80.99219936513179 + 30 +0.0 + 10 +-88.228715249037 + 20 +81.01640821689176 + 30 +0.0 + 10 +-87.98115893693699 + 20 +81.06130574203177 + 30 +0.0 + 10 +-87.60476787615699 + 20 +81.11720712121178 + 30 +0.0 + 10 +-87.22277090329699 + 20 +81.16241637547176 + 30 +0.0 + 10 +-86.840771078017 + 20 +81.19728085743179 + 30 +0.0 + 10 +-86.464450936577 + 20 +81.2228293229718 + 30 +0.0 + 10 +-86.09658786991699 + 20 +81.24078787227176 + 30 +0.0 + 10 +-85.73686046389699 + 20 +81.25316256685175 + 30 +0.0 + 10 +-85.37927034087699 + 20 +81.2608944868718 + 30 +0.0 + 10 +-85.141044853397 + 20 +81.26329191921177 + 30 +0.0 + 10 +-85.02118281981699 + 20 +81.26366918033175 + 30 +0.0 + 0 +SPLINE + 5 +623 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 16 + 73 + 12 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1062873303 + 40 +0.210692573 + 40 +0.3161935986 + 40 +0.4252118146 + 40 +0.5384356556000001 + 40 +0.6541427061000001 + 40 +0.7706588868999999 + 40 +0.8864390976000001 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-51.29203372757699 + 20 +81.26366918287175 + 30 +0.0 + 10 +-51.17217168891698 + 20 +81.26329191921177 + 30 +0.0 + 10 +-50.93394619381699 + 20 +81.2608944868718 + 30 +0.0 + 10 +-50.57635606063699 + 20 +81.25316256685175 + 30 +0.0 + 10 +-50.216628657157 + 20 +81.24078787227176 + 30 +0.0 + 10 +-49.84876559049699 + 20 +81.2228293229718 + 30 +0.0 + 10 +-49.47244544651699 + 20 +81.19728085743179 + 30 +0.0 + 10 +-49.090445623777 + 20 +81.16241637547176 + 30 +0.0 + 10 +-48.708448650917 + 20 +81.11720712121178 + 30 +0.0 + 10 +-48.33205759013701 + 20 +81.06130574203177 + 30 +0.0 + 10 +-48.08450127803699 + 20 +81.01640821689176 + 30 +0.0 + 10 +-47.96240742519699 + 20 +80.99219936513179 + 30 +0.0 + 0 +SPLINE + 5 +624 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0015349842 + 40 +0.0403922093 + 40 +0.0796066949 + 40 +0.1188946605 + 40 +0.1590833618 + 40 +0.2016831144 + 40 +0.2481618467 + 40 +0.2999714095 + 40 +0.358382889 + 40 +0.4238832055 + 40 +0.4967499994 + 40 +0.577745716 + 40 +0.6689584283 + 40 +0.7724638866 + 40 +0.8889148684 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-46.962955857937 + 20 +80.74502089327177 + 30 +0.0 + 10 +-46.958780369717 + 20 +80.74376502075176 + 30 +0.0 + 10 +-46.84896023121699 + 20 +80.71064896049177 + 30 +0.0 + 10 +-46.635455339457 + 20 +80.64182470647176 + 30 +0.0 + 10 +-46.32762909201699 + 20 +80.52725930949174 + 30 +0.0 + 10 +-46.01923103215699 + 20 +80.3971452313918 + 30 +0.0 + 10 +-45.705926345077 + 20 +80.24994532005178 + 30 +0.0 + 10 +-45.379479959617 + 20 +80.08071760415175 + 30 +0.0 + 10 +-45.031170798477 + 20 +79.88174054465173 + 30 +0.0 + 10 +-44.654276591637 + 20 +79.64339768631174 + 30 +0.0 + 10 +-44.24622028557699 + 20 +79.35518242327174 + 30 +0.0 + 10 +-43.80933604123699 + 20 +79.00670499475177 + 30 +0.0 + 10 +-43.34915873705699 + 20 +78.58695363969179 + 30 +0.0 + 10 +-42.87110105715699 + 20 +78.08160637505176 + 30 +0.0 + 10 +-42.383148350057 + 20 +77.4705350724318 + 30 +0.0 + 10 +-41.90052378825699 + 20 +76.73121505755176 + 30 +0.0 + 10 +-41.474967634037 + 20 +75.89411073735181 + 30 +0.0 + 10 +-41.249782796117 + 20 +75.2897299064918 + 30 +0.0 + 10 +-41.15660826313699 + 20 +74.98954017667177 + 30 +0.0 + 0 +SPLINE + 5 +625 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1289044029 + 40 +0.1926560799 + 40 +0.260999461 + 40 +0.3344906424 + 40 +0.4103387815 + 40 +0.5566411879 + 40 +0.6212630184000001 + 40 +0.6782578108 + 40 +0.7294888620000001 + 40 +0.7777294302 + 40 +0.8259960331999998 + 40 +0.8741591034999999 + 40 +0.8988995283999999 + 40 +0.9261719254 + 40 +0.9588192360999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-92.27424097813701 + 20 +120.0729471191517 + 30 +0.0 + 10 +-92.247820167377 + 20 +120.1308209404117 + 30 +0.0 + 10 +-92.208256525397 + 20 +120.2176009471918 + 30 +0.0 + 10 +-92.172639939277 + 20 +120.3417311256517 + 30 +0.0 + 10 +-92.15762301731698 + 20 +120.4423435152317 + 30 +0.0 + 10 +-92.15341237549699 + 20 +120.5498788068918 + 30 +0.0 + 10 +-92.160600595817 + 20 +120.6956897776518 + 30 +0.0 + 10 +-92.18418934467699 + 20 +120.8362258161117 + 30 +0.0 + 10 +-92.22664609745699 + 20 +120.9617664260918 + 30 +0.0 + 10 +-92.26588509949699 + 20 +121.0380123467517 + 30 +0.0 + 10 +-92.31429367933699 + 20 +121.0988859486518 + 30 +0.0 + 10 +-92.37277933579699 + 20 +121.1441132750117 + 30 +0.0 + 10 +-92.438927671877 + 20 +121.1711876049118 + 30 +0.0 + 10 +-92.49336768999699 + 20 +121.1975219058117 + 30 +0.0 + 10 +-92.529402878277 + 20 +121.2321931979118 + 30 +0.0 + 10 +-92.55083415367698 + 20 +121.2686678239718 + 30 +0.0 + 10 +-92.564183763757 + 20 +121.3172203176718 + 30 +0.0 + 10 +-92.56651450839699 + 20 +121.3537912402117 + 30 +0.0 + 10 +-92.56651450839699 + 20 +121.3741155963117 + 30 +0.0 + 0 +SPLINE + 5 +626 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0674655682 + 40 +0.125308743 + 40 +0.1757097024 + 40 +0.2267394008 + 40 +0.2852294126 + 40 +0.3490801729 + 40 +0.4723776035000001 + 40 +0.5237494862 + 40 +0.5667631661 + 40 +0.6062309773 + 40 +0.6457186257 + 40 +0.6934548047 + 40 +0.7221303215 + 40 +0.7552956104000001 + 40 +0.7959206876 + 40 +0.8502057724 + 40 +0.9208073105 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-92.800889350797 + 20 +120.1708508349517 + 30 +0.0 + 10 +-92.78799867299699 + 20 +120.1990873951917 + 30 +0.0 + 10 +-92.76410913733698 + 20 +120.2515624007317 + 30 +0.0 + 10 +-92.73407785373699 + 20 +120.3266804928117 + 30 +0.0 + 10 +-92.71343354145699 + 20 +120.3971838519318 + 30 +0.0 + 10 +-92.70270309047701 + 20 +120.4701786614918 + 30 +0.0 + 10 +-92.69975989595698 + 20 +120.5500133278317 + 30 +0.0 + 10 +-92.70527792403699 + 20 +120.6629719055718 + 30 +0.0 + 10 +-92.72398209795699 + 20 +120.7718034989317 + 30 +0.0 + 10 +-92.75520157831699 + 20 +120.8672027620317 + 30 +0.0 + 10 +-92.78356315735699 + 20 +120.9222582805718 + 30 +0.0 + 10 +-92.819058991877 + 20 +120.9662702601117 + 30 +0.0 + 10 +-92.86590776787699 + 20 +121.0021341914317 + 30 +0.0 + 10 +-92.915643065917 + 20 +121.0220808317517 + 30 +0.0 + 10 +-92.96144000251699 + 20 +121.0431685797717 + 30 +0.0 + 10 +-93.00141725555699 + 20 +121.0686078862717 + 30 +0.0 + 10 +-93.043828697277 + 20 +121.1103561720918 + 30 +0.0 + 10 +-93.082122133517 + 20 +121.1772942703717 + 30 +0.0 + 10 +-93.10736345971699 + 20 +121.2685585912717 + 30 +0.0 + 10 +-93.112428849637 + 20 +121.3376802665917 + 30 +0.0 + 10 +-93.112428849637 + 20 +121.3741155963117 + 30 +0.0 + 0 +SPLINE + 5 +627 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0411807639 + 40 +0.0738280746 + 40 +0.1011004716 + 40 +0.1258408965 + 40 +0.1740039668 + 40 +0.2222705698 + 40 +0.270511138 + 40 +0.3217421892 + 40 +0.3787369816 + 40 +0.4433588121 + 40 +0.5896612185 + 40 +0.6655093576 + 40 +0.7390005390000001 + 40 +0.8073439200999999 + 40 +0.8710955970999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-43.746702018677 + 20 +121.3741155963117 + 30 +0.0 + 10 +-43.746702018677 + 20 +121.3537912402117 + 30 +0.0 + 10 +-43.74903276331699 + 20 +121.3172203176718 + 30 +0.0 + 10 +-43.762382373397 + 20 +121.2686678239718 + 30 +0.0 + 10 +-43.783813646257 + 20 +121.2321931979118 + 30 +0.0 + 10 +-43.81984883707699 + 20 +121.1975219058117 + 30 +0.0 + 10 +-43.87428885519699 + 20 +121.1711876049118 + 30 +0.0 + 10 +-43.940437191277 + 20 +121.1441132750117 + 30 +0.0 + 10 +-43.99892284773699 + 20 +121.0988859486518 + 30 +0.0 + 10 +-44.04733142757699 + 20 +121.0380123467517 + 30 +0.0 + 10 +-44.08657042961699 + 20 +120.9617664260918 + 30 +0.0 + 10 +-44.129027179857 + 20 +120.8362258161117 + 30 +0.0 + 10 +-44.152615931257 + 20 +120.6956897776518 + 30 +0.0 + 10 +-44.15980415157699 + 20 +120.5498788068918 + 30 +0.0 + 10 +-44.155593509757 + 20 +120.4423435152317 + 30 +0.0 + 10 +-44.14057658779699 + 20 +120.3417311256517 + 30 +0.0 + 10 +-44.10496000167698 + 20 +120.2176009471918 + 30 +0.0 + 10 +-44.065396359697 + 20 +120.1308209404117 + 30 +0.0 + 10 +-44.03897554893698 + 20 +120.0729471191517 + 30 +0.0 + 0 +SPLINE + 5 +628 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0791926895 + 40 +0.1497942276 + 40 +0.2040793124 + 40 +0.2447043896 + 40 +0.2778696785 + 40 +0.3065451953 + 40 +0.3542813743 + 40 +0.3937690227 + 40 +0.4332368339000001 + 40 +0.4762505138000001 + 40 +0.5276223965 + 40 +0.6509198271 + 40 +0.7147705874 + 40 +0.7732605992 + 40 +0.8242902975999999 + 40 +0.874691257 + 40 +0.9325344318 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-43.20078767743699 + 20 +121.3741155963117 + 30 +0.0 + 10 +-43.20078767743699 + 20 +121.3376802665917 + 30 +0.0 + 10 +-43.205853067357 + 20 +121.2685585912717 + 30 +0.0 + 10 +-43.23109439355699 + 20 +121.1772942703717 + 30 +0.0 + 10 +-43.26938782979699 + 20 +121.1103561720918 + 30 +0.0 + 10 +-43.31179927151699 + 20 +121.0686078862717 + 30 +0.0 + 10 +-43.35177652455699 + 20 +121.0431685797717 + 30 +0.0 + 10 +-43.39757346115699 + 20 +121.0220808317517 + 30 +0.0 + 10 +-43.447308759197 + 20 +121.0021341914317 + 30 +0.0 + 10 +-43.494157532657 + 20 +120.9662702601117 + 30 +0.0 + 10 +-43.52965336971699 + 20 +120.9222582805718 + 30 +0.0 + 10 +-43.558014946217 + 20 +120.8672027620317 + 30 +0.0 + 10 +-43.589234429117 + 20 +120.7718034989317 + 30 +0.0 + 10 +-43.607938603037 + 20 +120.6629719055718 + 30 +0.0 + 10 +-43.613456628577 + 20 +120.5500133278317 + 30 +0.0 + 10 +-43.610513436597 + 20 +120.4701786614918 + 30 +0.0 + 10 +-43.59978298561701 + 20 +120.3971838519318 + 30 +0.0 + 10 +-43.57913867333699 + 20 +120.3266804928117 + 30 +0.0 + 10 +-43.54910738719699 + 20 +120.2515624007317 + 30 +0.0 + 10 +-43.52521785407698 + 20 +120.1990873951917 + 30 +0.0 + 10 +-43.512327173737 + 20 +120.1708508349517 + 30 +0.0 + 0 +LINE + 5 +629 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-51.285407027597 + 20 +126.7726232651117 + 30 +0.0 + 11 +-51.292033755517 + 21 +125.7726232661317 + 31 +0.0 + 0 +LINE + 5 +62A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +-85.02780952233699 + 20 +126.7726232651117 + 30 +0.0 + 11 +-85.02118279441701 + 21 +125.7726232661317 + 31 +0.0 + 0 +SPLINE + 5 +62B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1289044029 + 40 +0.1926560799 + 40 +0.260999461 + 40 +0.3344906424 + 40 +0.4103387815 + 40 +0.5566411879 + 40 +0.6212630184000001 + 40 +0.6782578108 + 40 +0.7294888620000001 + 40 +0.7777294302 + 40 +0.8259960331999998 + 40 +0.8741591034999999 + 40 +0.8988995283999999 + 40 +0.9261719254 + 40 +0.9588192360999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-43.57254909545699 + 20 +120.0729471191517 + 30 +0.0 + 10 +-43.59896990621699 + 20 +120.1308209404117 + 30 +0.0 + 10 +-43.63853354819698 + 20 +120.2176009471918 + 30 +0.0 + 10 +-43.67415013431698 + 20 +120.3417311256517 + 30 +0.0 + 10 +-43.68916705627699 + 20 +120.4423435152317 + 30 +0.0 + 10 +-43.69337769809699 + 20 +120.5498788068918 + 30 +0.0 + 10 +-43.68618947777699 + 20 +120.6956897776518 + 30 +0.0 + 10 +-43.662600728917 + 20 +120.8362258161117 + 30 +0.0 + 10 +-43.620143976137 + 20 +120.9617664260918 + 30 +0.0 + 10 +-43.58090497409699 + 20 +121.0380123467517 + 30 +0.0 + 10 +-43.53249639425699 + 20 +121.0988859486518 + 30 +0.0 + 10 +-43.47401073779699 + 20 +121.1441132750117 + 30 +0.0 + 10 +-43.40786240171699 + 20 +121.1711876049118 + 30 +0.0 + 10 +-43.35342238359699 + 20 +121.1975219058117 + 30 +0.0 + 10 +-43.31738719531699 + 20 +121.2321931979118 + 30 +0.0 + 10 +-43.295955919917 + 20 +121.2686678239718 + 30 +0.0 + 10 +-43.28260630983699 + 20 +121.3172203176718 + 30 +0.0 + 10 +-43.28027556519699 + 20 +121.3537912402117 + 30 +0.0 + 10 +-43.28027556519699 + 20 +121.3741155963117 + 30 +0.0 + 0 +SPLINE + 5 +62C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0411807639 + 40 +0.0738280746 + 40 +0.1011004716 + 40 +0.1258408965 + 40 +0.1740039668 + 40 +0.2222705698 + 40 +0.270511138 + 40 +0.3217421892 + 40 +0.3787369816 + 40 +0.4433588121 + 40 +0.5896612185 + 40 +0.6655093576 + 40 +0.7390005390000001 + 40 +0.8073439200999999 + 40 +0.8710955970999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-93.03294095933699 + 20 +121.3741155963117 + 30 +0.0 + 10 +-93.03294095933699 + 20 +121.3537912402117 + 30 +0.0 + 10 +-93.03061021723699 + 20 +121.3172203176718 + 30 +0.0 + 10 +-93.01726060715699 + 20 +121.2686678239718 + 30 +0.0 + 10 +-92.99582933175699 + 20 +121.2321931979118 + 30 +0.0 + 10 +-92.959794143477 + 20 +121.1975219058117 + 30 +0.0 + 10 +-92.905354125357 + 20 +121.1711876049118 + 30 +0.0 + 10 +-92.839205789277 + 20 +121.1441132750117 + 30 +0.0 + 10 +-92.78072013281699 + 20 +121.0988859486518 + 30 +0.0 + 10 +-92.73231155297699 + 20 +121.0380123467517 + 30 +0.0 + 10 +-92.69307255093698 + 20 +120.9617664260918 + 30 +0.0 + 10 +-92.65061579815698 + 20 +120.8362258161117 + 30 +0.0 + 10 +-92.62702704929699 + 20 +120.6956897776518 + 30 +0.0 + 10 +-92.619838828977 + 20 +120.5498788068918 + 30 +0.0 + 10 +-92.624049470797 + 20 +120.4423435152317 + 30 +0.0 + 10 +-92.63906639021699 + 20 +120.3417311256517 + 30 +0.0 + 10 +-92.67468297887701 + 20 +120.2176009471918 + 30 +0.0 + 10 +-92.71424662085699 + 20 +120.1308209404117 + 30 +0.0 + 10 +-92.740667431617 + 20 +120.0729471191517 + 30 +0.0 + 0 +SPLINE + 5 +62D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 34 + 73 + 30 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0740584391 + 40 +0.1516941931 + 40 +0.2206994018 + 40 +0.28150926 + 40 +0.3355076328 + 40 +0.3840866005 + 40 +0.4277544716 + 40 +0.4666963438 + 40 +0.5012368381 + 40 +0.5322233645000001 + 40 +0.5606238457 + 40 +0.5874169227000001 + 40 +0.6136094956 + 40 +0.6397530807999999 + 40 +0.6656584868 + 40 +0.6916317978000001 + 40 +0.7184751057 + 40 +0.7464711653000001 + 40 +0.7753469404000001 + 40 +0.8047544629999999 + 40 +0.8343489178 + 40 +0.8637378581 + 40 +0.8924960770999998 + 40 +0.9201860911 + 40 +0.9469827584 + 40 +0.9735011029999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-41.15660826313699 + 20 +-53.20505871428821 + 30 +0.0 + 10 +-41.249782796117 + 20 +-53.50524844410823 + 30 +0.0 + 10 +-41.474967634037 + 20 +-54.10962927242822 + 30 +0.0 + 10 +-41.90052378825699 + 20 +-54.94673359516823 + 30 +0.0 + 10 +-42.383148350057 + 20 +-55.68605361004822 + 30 +0.0 + 10 +-42.87110105715699 + 20 +-56.29712491012823 + 30 +0.0 + 10 +-43.34915873705699 + 20 +-56.80247217730822 + 30 +0.0 + 10 +-43.80933604123699 + 20 +-57.22222353236823 + 30 +0.0 + 10 +-44.24622028557699 + 20 +-57.57070096088822 + 30 +0.0 + 10 +-44.654276591637 + 20 +-57.85891622138823 + 30 +0.0 + 10 +-45.031170798477 + 20 +-58.09725908226822 + 30 +0.0 + 10 +-45.379479959617 + 20 +-58.29623613922822 + 30 +0.0 + 10 +-45.705926345077 + 20 +-58.46546385766822 + 30 +0.0 + 10 +-46.01923103215699 + 20 +-58.61266376646821 + 30 +0.0 + 10 +-46.32762909201699 + 20 +-58.74277784710823 + 30 +0.0 + 10 +-46.635455339457 + 20 +-58.85734324408822 + 30 +0.0 + 10 +-46.94933153415699 + 20 +-58.95852263278823 + 30 +0.0 + 10 +-47.27440493531699 + 20 +-59.05044293916822 + 30 +0.0 + 10 +-47.61226626111699 + 20 +-59.13445145034822 + 30 +0.0 + 10 +-47.965252783997 + 20 +-59.21029734132822 + 30 +0.0 + 10 +-48.33192071969699 + 20 +-59.27680395202822 + 30 +0.0 + 10 +-48.708448650917 + 20 +-59.33272565628822 + 30 +0.0 + 10 +-49.090445623777 + 20 +-59.37793491054822 + 30 +0.0 + 10 +-49.47244544651699 + 20 +-59.41279939250822 + 30 +0.0 + 10 +-49.84876559049699 + 20 +-59.43834786058822 + 30 +0.0 + 10 +-50.216628657157 + 20 +-59.45630640988823 + 30 +0.0 + 10 +-50.57635606063699 + 20 +-59.46868110446821 + 30 +0.0 + 10 +-50.93173110807699 + 20 +-59.47636512770821 + 30 +0.0 + 10 +-51.167742467397 + 20 +-59.47876564360823 + 30 +0.0 + 10 +-51.285406984417 + 20 +-59.47916601364822 + 30 +0.0 + 0 +SPLINE + 5 +62E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 34 + 73 + 30 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0264988961 + 40 +0.0530172408 + 40 +0.0798139081 + 40 +0.1075039221 + 40 +0.1362621411 + 40 +0.1656510814 + 40 +0.1952455363 + 40 +0.2246530589 + 40 +0.253528834 + 40 +0.2815248937 + 40 +0.3083682016 + 40 +0.3343415126 + 40 +0.3602469187 + 40 +0.3863905038 + 40 +0.4125830768000001 + 40 +0.4393761538 + 40 +0.467776635 + 40 +0.4987631615 + 40 +0.5333036558 + 40 +0.572245528 + 40 +0.6159133991 + 40 +0.6644923669000001 + 40 +0.7184907397 + 40 +0.779300598 + 40 +0.8483058068000001 + 40 +0.9259415607999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-85.02780955535699 + 20 +-59.47916601364822 + 30 +0.0 + 10 +-85.14547406729699 + 20 +-59.47876564360823 + 30 +0.0 + 10 +-85.38148542153699 + 20 +-59.47636512770821 + 30 +0.0 + 10 +-85.73686046389699 + 20 +-59.46868110446821 + 30 +0.0 + 10 +-86.09658786991699 + 20 +-59.45630640988823 + 30 +0.0 + 10 +-86.464450936577 + 20 +-59.43834786058822 + 30 +0.0 + 10 +-86.840771078017 + 20 +-59.41279939250822 + 30 +0.0 + 10 +-87.22277090329699 + 20 +-59.37793491054822 + 30 +0.0 + 10 +-87.60476787615699 + 20 +-59.33272565628822 + 30 +0.0 + 10 +-87.98129580737699 + 20 +-59.27680395202822 + 30 +0.0 + 10 +-88.347963743077 + 20 +-59.21029734132822 + 30 +0.0 + 10 +-88.700950265957 + 20 +-59.13445145034822 + 30 +0.0 + 10 +-89.038811591757 + 20 +-59.05044293916822 + 30 +0.0 + 10 +-89.363884992917 + 20 +-58.95852263278823 + 30 +0.0 + 10 +-89.677761185077 + 20 +-58.85734324408822 + 30 +0.0 + 10 +-89.985587435057 + 20 +-58.74277784710823 + 30 +0.0 + 10 +-90.293985494917 + 20 +-58.61266376646821 + 30 +0.0 + 10 +-90.60729018199699 + 20 +-58.46546385766822 + 30 +0.0 + 10 +-90.93373656745699 + 20 +-58.29623613922822 + 30 +0.0 + 10 +-91.28204572605699 + 20 +-58.09725908226822 + 30 +0.0 + 10 +-91.65893993543699 + 20 +-57.85891622138823 + 30 +0.0 + 10 +-92.06699624149699 + 20 +-57.57070096088822 + 30 +0.0 + 10 +-92.50388048583699 + 20 +-57.22222353236823 + 30 +0.0 + 10 +-92.96405778747699 + 20 +-56.80247217730822 + 30 +0.0 + 10 +-93.44211546991699 + 20 +-56.29712491012823 + 30 +0.0 + 10 +-93.93006817701699 + 20 +-55.68605361004822 + 30 +0.0 + 10 +-94.41269273881699 + 20 +-54.94673359516823 + 30 +0.0 + 10 +-94.83824889303699 + 20 +-54.10962927242822 + 30 +0.0 + 10 +-95.06343372841699 + 20 +-53.50524844410823 + 30 +0.0 + 10 +-95.15660826393698 + 20 +-53.20505871428821 + 30 +0.0 + 0 +SPLINE + 5 +62F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 34 + 73 + 30 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0740559253 + 40 +0.1516526277 + 40 +0.2202659056 + 40 +0.2803533255000001 + 40 +0.3336127752 + 40 +0.3817071752 + 40 +0.4251730623 + 40 +0.4641247356 + 40 +0.4987905262 + 40 +0.5299385728 + 40 +0.558499314 + 40 +0.5854145161 + 40 +0.6116515804000001 + 40 +0.6378116493000001 + 40 +0.6637016865 + 40 +0.6896156621 + 40 +0.7164666956 + 40 +0.7446420166 + 40 +0.7738392756999999 + 40 +0.8036523326999999 + 40 +0.8336776011999999 + 40 +0.8634583070999999 + 40 +0.8925000952999999 + 40 +0.9202993543000001 + 40 +0.9470615031999999 + 40 +0.9735022604 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-95.15660826393698 + 20 +-48.23349475090822 + 30 +0.0 + 10 +-95.06343642589699 + 20 +-47.9333140177682 + 30 +0.0 + 10 +-94.838312809597 + 20 +-47.32909660288822 + 30 +0.0 + 10 +-94.413621980037 + 20 +-46.49362510898821 + 30 +0.0 + 10 +-93.93394160589698 + 20 +-45.75825962772822 + 30 +0.0 + 10 +-93.45163854459698 + 20 +-45.15280649268823 + 30 +0.0 + 10 +-92.98040690387699 + 20 +-44.65246580934823 + 30 +0.0 + 10 +-92.52599753837699 + 20 +-44.23541657486822 + 30 +0.0 + 10 +-92.09262323621699 + 20 +-43.88721359334823 + 30 +0.0 + 10 +-91.68587798925699 + 20 +-43.59771911010823 + 30 +0.0 + 10 +-91.308760668817 + 20 +-43.35740357600821 + 30 +0.0 + 10 +-90.959453132737 + 20 +-43.15635361996821 + 30 +0.0 + 10 +-90.63178336897699 + 20 +-42.98522485376821 + 30 +0.0 + 10 +-90.31758352747699 + 20 +-42.83644740430823 + 30 +0.0 + 10 +-90.00868367791699 + 20 +-42.70500180994821 + 30 +0.0 + 10 +-89.70098501721698 + 20 +-42.58929898826821 + 30 +0.0 + 10 +-89.388013971837 + 20 +-42.48733368546822 + 30 +0.0 + 10 +-89.063713805097 + 20 +-42.39475168114822 + 30 +0.0 + 10 +-88.72553363055699 + 20 +-42.30980882588823 + 30 +0.0 + 10 +-88.37060869143698 + 20 +-42.23272466712822 + 30 +0.0 + 10 +-88.000253219297 + 20 +-42.16483496546821 + 30 +0.0 + 10 +-87.618908388897 + 20 +-42.10766041128823 + 30 +0.0 + 10 +-87.231698502917 + 20 +-42.0615054515282 + 30 +0.0 + 10 +-86.844923434457 + 20 +-42.02604904034823 + 30 +0.0 + 10 +-86.46517806745698 + 20 +-42.00023259972822 + 30 +0.0 + 10 +-86.09572471441699 + 20 +-41.98221055296822 + 30 +0.0 + 10 +-85.73600561165699 + 20 +-41.96985259698822 + 30 +0.0 + 10 +-85.38113458403699 + 20 +-41.96218588384823 + 30 +0.0 + 10 +-85.145473066537 + 20 +-41.95978885028823 + 30 +0.0 + 10 +-85.027813776837 + 20 +-41.95938849802821 + 30 +0.0 + 0 +SPLINE + 5 +630 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 34 + 73 + 30 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0264977395 + 40 +0.0529384968 + 40 +0.0797006456 + 40 +0.1074999046 + 40 +0.1365416929 + 40 +0.1663223988 + 40 +0.1963476672 + 40 +0.2261607242 + 40 +0.2553579833 + 40 +0.2835333044 + 40 +0.3103843378 + 40 +0.3362983135 + 40 +0.3621883506 + 40 +0.3883484195 + 40 +0.4145854838 + 40 +0.4415006859 + 40 +0.4700614272000001 + 40 +0.5012094738 + 40 +0.5358752644 + 40 +0.5748269376000001 + 40 +0.6182928248 + 40 +0.6663872248000001 + 40 +0.7196466745000001 + 40 +0.7797340944 + 40 +0.8483473722999999 + 40 +0.9259440746999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +-51.285402747697 + 20 +-41.95938849802821 + 30 +0.0 + 10 +-51.16774346053698 + 20 +-41.95978885028823 + 30 +0.0 + 10 +-50.93208194049699 + 20 +-41.96218588384823 + 30 +0.0 + 10 +-50.57721091541699 + 20 +-41.96985259698822 + 30 +0.0 + 10 +-50.217491812657 + 20 +-41.98221055296822 + 30 +0.0 + 10 +-49.848038459617 + 20 +-42.00023259972822 + 30 +0.0 + 10 +-49.468293092617 + 20 +-42.02604904034823 + 30 +0.0 + 10 +-49.08151802415699 + 20 +-42.0615054515282 + 30 +0.0 + 10 +-48.694308138177 + 20 +-42.10766041128823 + 30 +0.0 + 10 +-48.31296330777699 + 20 +-42.16483496546821 + 30 +0.0 + 10 +-47.94260783563699 + 20 +-42.23272466712822 + 30 +0.0 + 10 +-47.58768289651699 + 20 +-42.30980882588823 + 30 +0.0 + 10 +-47.249502721977 + 20 +-42.39475168114822 + 30 +0.0 + 10 +-46.92520255523699 + 20 +-42.48733368546822 + 30 +0.0 + 10 +-46.61223150731699 + 20 +-42.58929898826821 + 30 +0.0 + 10 +-46.304532849157 + 20 +-42.70500180994821 + 30 +0.0 + 10 +-45.99563299959699 + 20 +-42.83644740430823 + 30 +0.0 + 10 +-45.681433155557 + 20 +-42.98522485376821 + 30 +0.0 + 10 +-45.35376339433699 + 20 +-43.15635361996821 + 30 +0.0 + 10 +-45.004455858257 + 20 +-43.35740357600821 + 30 +0.0 + 10 +-44.62733853781699 + 20 +-43.59771911010823 + 30 +0.0 + 10 +-44.22059329085699 + 20 +-43.88721359334823 + 30 +0.0 + 10 +-43.787218986157 + 20 +-44.23541657486822 + 30 +0.0 + 10 +-43.33280962319699 + 20 +-44.65246580934823 + 30 +0.0 + 10 +-42.861577982477 + 20 +-45.15280649268823 + 30 +0.0 + 10 +-42.37927492117698 + 20 +-45.75825962772822 + 30 +0.0 + 10 +-41.89959454703699 + 20 +-46.49362510898821 + 30 +0.0 + 10 +-41.47490371747699 + 20 +-47.32909660288822 + 30 +0.0 + 10 +-41.249780098637 + 20 +-47.9333140177682 + 30 +0.0 + 10 +-41.15660826313699 + 20 +-48.23349475090822 + 30 +0.0 + 0 +SPLINE + 5 +631 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0651573004 + 40 +0.1261671142 + 40 +0.1855161676 + 40 +0.2468606346 + 40 +0.3117527243 + 40 +0.378745814 + 40 +0.5108420784000001 + 40 +0.5724693309000001 + 40 +0.6306680413 + 40 +0.6881744564 + 40 +0.7481055372 + 40 +0.8122651295999999 + 40 +0.8443428015 + 40 +0.8751667321999999 + 40 +0.90441938 + 40 +0.9329875870999998 + 40 +0.9635080928 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +27.63012719842301 + 20 +9.836785818991771 + 30 +0.0 + 10 +27.608611069243 + 20 +9.807335542611767 + 30 +0.0 + 10 +27.56697867092298 + 20 +9.750276741311765 + 30 +0.0 + 10 +27.51113496498299 + 20 +9.662561432871754 + 30 +0.0 + 10 +27.46814613808299 + 20 +9.569826126851765 + 30 +0.0 + 10 +27.44356243312301 + 20 +9.468219789551781 + 30 +0.0 + 10 +27.436757216863 + 20 +9.359802604811775 + 30 +0.0 + 10 +27.44837347760303 + 20 +9.21223302949177 + 30 +0.0 + 10 +27.48778542570299 + 20 +9.069333180671762 + 30 +0.0 + 10 +27.55580965846299 + 20 +8.945098062111767 + 30 +0.0 + 10 +27.62005800850297 + 20 +8.86843547223178 + 30 +0.0 + 10 +27.698672095623 + 20 +8.808133537971784 + 30 +0.0 + 10 +27.79137350280301 + 20 +8.764521809091789 + 30 +0.0 + 10 +27.87626322888299 + 20 +8.742984966211778 + 30 +0.0 + 10 +27.944579841043 + 20 +8.723192798531798 + 30 +0.0 + 10 +27.99285060810301 + 20 +8.70466608679176 + 30 +0.0 + 10 +28.035975485023 + 20 +8.679407069491773 + 30 +0.0 + 10 +28.071183588343 + 20 +8.643531090951753 + 30 +0.0 + 10 +28.093915437723 + 20 +8.593945104271782 + 30 +0.0 + 10 +28.09786261804298 + 20 +8.556044227571774 + 30 +0.0 + 10 +28.09786261804298 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +632 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0663405805 + 40 +0.1219881314 + 40 +0.1686670965 + 40 +0.2141917601 + 40 +0.2655317596 + 40 +0.3215973439 + 40 +0.4322797803000001 + 40 +0.4808758998 + 40 +0.5245463138000001 + 40 +0.5686690986000001 + 40 +0.6174429074000001 + 40 +0.6468244814000001 + 40 +0.6805775722 + 40 +0.7604924121 + 40 +0.8081616287000001 + 40 +0.8645920904 + 40 +0.9302104573999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +28.01795801280302 + 20 +9.738882103191784 + 30 +0.0 + 10 +27.997415508803 + 20 +9.710764480991784 + 30 +0.0 + 10 +27.95969824362301 + 20 +9.659007861111788 + 30 +0.0 + 10 +27.91183301804297 + 20 +9.584418109351773 + 30 +0.0 + 10 +27.87845773300297 + 20 +9.513907894771776 + 30 +0.0 + 10 +27.86086573110301 + 20 +9.440134953671773 + 30 +0.0 + 10 +27.85611139212303 + 20 +9.359677238031778 + 30 +0.0 + 10 +27.86505565922302 + 20 +9.245315726851757 + 30 +0.0 + 10 +27.89611314346299 + 20 +9.134908043171762 + 30 +0.0 + 10 +27.94620996478299 + 20 +9.040366286611785 + 30 +0.0 + 10 +27.99265766208298 + 20 +8.985083054531756 + 30 +0.0 + 10 +28.05029309164302 + 20 +8.941558531471784 + 30 +0.0 + 10 +28.10879971834298 + 20 +8.914042825771801 + 30 +0.0 + 10 +28.16509178508299 + 20 +8.89709094959177 + 30 +0.0 + 10 +28.23755138362303 + 20 +8.87770328453179 + 30 +0.0 + 10 +28.31910746638302 + 20 +8.852704208291768 + 30 +0.0 + 10 +28.40255708358298 + 20 +8.802543094491781 + 30 +0.0 + 10 +28.46508210966302 + 20 +8.737103484451765 + 30 +0.0 + 10 +28.507961734343 + 20 +8.64388717609178 + 30 +0.0 + 10 +28.51652542816301 + 20 +8.572250047331763 + 30 +0.0 + 10 +28.51652542816301 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +633 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 17 + 73 + 13 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1543769895 + 40 +0.2725505767 + 40 +0.3867291575 + 40 +0.5205210982999999 + 40 +0.6567781596 + 40 +0.7201395445000001 + 40 +0.777687046 + 40 +0.8308150984999999 + 40 +0.8835563633999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +21.73139358316298 + 20 +9.738882103191784 + 30 +0.0 + 10 +21.76112516708299 + 20 +9.698186893751781 + 30 +0.0 + 10 +21.81378322788301 + 20 +9.626614471491777 + 30 +0.0 + 10 +21.87465465554298 + 20 +9.514416092891778 + 30 +0.0 + 10 +21.89527120562302 + 20 +9.394931937651776 + 30 +0.0 + 10 +21.88816715328302 + 20 +9.268934404531776 + 30 +0.0 + 10 +21.86091193728301 + 20 +9.162705135151767 + 30 +0.0 + 10 +21.827636537743 + 20 +9.085475866191771 + 30 +0.0 + 10 +21.79895068960299 + 20 +9.036213236751777 + 30 +0.0 + 10 +21.764933312883 + 20 +8.994770253851768 + 30 +0.0 + 10 +21.709828211003 + 20 +8.947137095371758 + 30 +0.0 + 10 +21.65946278722301 + 20 +8.921778906311757 + 30 +0.0 + 10 +21.62350368210299 + 20 +8.909446502731768 + 30 +0.0 + 0 +SPLINE + 5 +634 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0651573004 + 40 +0.1261671142 + 40 +0.1855161676 + 40 +0.2468606346 + 40 +0.3117527243 + 40 +0.378745814 + 40 +0.5108420784000001 + 40 +0.5724693309000001 + 40 +0.6306680413 + 40 +0.6881744564 + 40 +0.7481055372 + 40 +0.8122651295999999 + 40 +0.8443428015 + 40 +0.8751667321999999 + 40 +0.90441938 + 40 +0.9329875870999998 + 40 +0.9635080928 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +22.119224395003 + 20 +9.836785818991771 + 30 +0.0 + 10 +22.14074052418299 + 20 +9.807335542611767 + 30 +0.0 + 10 +22.18237292250301 + 20 +9.750276741311765 + 30 +0.0 + 10 +22.23821663098302 + 20 +9.662561432871754 + 30 +0.0 + 10 +22.28120545788299 + 20 +9.569826126851765 + 30 +0.0 + 10 +22.305789162843 + 20 +9.468219789551781 + 30 +0.0 + 10 +22.31259437656301 + 20 +9.359802604811775 + 30 +0.0 + 10 +22.30097811582302 + 20 +9.21223302949177 + 30 +0.0 + 10 +22.26156616772302 + 20 +9.069333180671762 + 30 +0.0 + 10 +22.19354193750298 + 20 +8.945098062111767 + 30 +0.0 + 10 +22.12929358492299 + 20 +8.86843547223178 + 30 +0.0 + 10 +22.05067950034301 + 20 +8.808133537971784 + 30 +0.0 + 10 +21.957978090623 + 20 +8.764521809091789 + 30 +0.0 + 10 +21.87308836708302 + 20 +8.742984966211778 + 30 +0.0 + 10 +21.80477175492298 + 20 +8.723192798531798 + 30 +0.0 + 10 +21.756500985323 + 20 +8.70466608679176 + 30 +0.0 + 10 +21.71337611094298 + 20 +8.679407069491773 + 30 +0.0 + 10 +21.67816800508298 + 20 +8.643531090951753 + 30 +0.0 + 10 +21.65543615824301 + 20 +8.593945104271782 + 30 +0.0 + 10 +21.651488975383 + 20 +8.556044227571774 + 30 +0.0 + 10 +21.651488975383 + 20 +8.53561734183178 + 30 +0.0 + 0 +LINE + 5 +635 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +30.16703501512301 + 20 +3.137109670491781 + 30 +0.0 + 11 +30.16705764906298 + 21 +4.137109672011789 + 31 +0.0 + 0 +SPLINE + 5 +636 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0364919072 + 40 +0.0670124129 + 40 +0.09558062 + 40 +0.1248332678 + 40 +0.1556571985 + 40 +0.1877348704 + 40 +0.2518944628 + 40 +0.3118255436 + 40 +0.3693319586999999 + 40 +0.4275306691 + 40 +0.4891579216000001 + 40 +0.621254186 + 40 +0.6882472756999999 + 40 +0.7531393654000001 + 40 +0.8144838324 + 40 +0.8738328857999999 + 40 +0.9348426995999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +28.38931821496301 + 20 +8.53561734183178 + 30 +0.0 + 10 +28.38931821496301 + 20 +8.556044227571774 + 30 +0.0 + 10 +28.38537103210301 + 20 +8.593945104271782 + 30 +0.0 + 10 +28.36263918272301 + 20 +8.643531090951753 + 30 +0.0 + 10 +28.32743107940299 + 20 +8.679407069491773 + 30 +0.0 + 10 +28.284306202483 + 20 +8.70466608679176 + 30 +0.0 + 10 +28.23603543542301 + 20 +8.723192798531798 + 30 +0.0 + 10 +28.167718823263 + 20 +8.742984966211778 + 30 +0.0 + 10 +28.08282909972302 + 20 +8.764521809091789 + 30 +0.0 + 10 +27.99012769000298 + 20 +8.808133537971784 + 30 +0.0 + 10 +27.911513605423 + 20 +8.86843547223178 + 30 +0.0 + 10 +27.847265252843 + 20 +8.945098062111767 + 30 +0.0 + 10 +27.77924102008301 + 20 +9.069333180671762 + 30 +0.0 + 10 +27.73982907452297 + 20 +9.21223302949177 + 30 +0.0 + 10 +27.72821281378301 + 20 +9.359802604811775 + 30 +0.0 + 10 +27.73501802750299 + 20 +9.468219789551781 + 30 +0.0 + 10 +27.759601732463 + 20 +9.569826126851765 + 30 +0.0 + 10 +27.802590559363 + 20 +9.662561432871754 + 30 +0.0 + 10 +27.85843426530299 + 20 +9.750276741311765 + 30 +0.0 + 10 +27.90006666362301 + 20 +9.807335542611767 + 30 +0.0 + 10 +27.92158279280303 + 20 +9.836785818991771 + 30 +0.0 + 0 +LINE + 5 +637 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +12.647261985143 + 20 +3.137109670491781 + 30 +0.0 + 11 +12.647239544243 + 21 +4.137109672011789 + 31 +0.0 + 0 +SPLINE + 5 +638 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1049946746 + 40 +0.1898384138 + 40 +0.2575090249 + 40 +0.3111747768 + 40 +0.3602642126 + 40 +0.4084246803 + 40 +0.4608564972 + 40 +0.5195070822 + 40 +0.5818502699 + 40 +0.6449832510000001 + 40 +0.7053222621 + 40 +0.7597572903000001 + 40 +0.8091854684000001 + 40 +0.8627126601999998 + 40 +0.9258705878 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +21.62258542384301 + 20 +8.78401214857179 + 30 +0.0 + 10 +21.65573076014299 + 20 +8.815228255811788 + 30 +0.0 + 10 +21.729457559603 + 20 +8.857217064391775 + 30 +0.0 + 10 +21.83697255412302 + 20 +8.886799232811753 + 30 +0.0 + 10 +21.92360324954301 + 20 +8.909820906351782 + 30 +0.0 + 10 +21.99061342032299 + 20 +8.942096711751773 + 30 +0.0 + 10 +22.04345908298301 + 20 +8.981377105631779 + 30 +0.0 + 10 +22.08702764456301 + 20 +9.030113309911754 + 30 +0.0 + 10 +22.12196829096298 + 20 +9.090088168371764 + 30 +0.0 + 10 +22.150311505803 + 20 +9.159948810971783 + 30 +0.0 + 10 +22.171255756523 + 20 +9.237208153531767 + 30 +0.0 + 10 +22.18254178424301 + 20 +9.317210561471782 + 30 +0.0 + 10 +22.18375303912301 + 20 +9.394544168551774 + 30 +0.0 + 10 +22.17528257600303 + 20 +9.465549868551775 + 30 +0.0 + 10 +22.155125072503 + 20 +9.531150245351781 + 30 +0.0 + 10 +22.12225025890298 + 20 +9.595529199651778 + 30 +0.0 + 10 +22.07685394380302 + 20 +9.664789193211774 + 30 +0.0 + 10 +22.04181294200301 + 20 +9.712925385991766 + 30 +0.0 + 10 +22.02284917754299 + 20 +9.738882103191784 + 30 +0.0 + 0 +SPLINE + 5 +639 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1289044029 + 40 +0.1926560799 + 40 +0.260999461 + 40 +0.3344906424 + 40 +0.4103387815 + 40 +0.5566411879 + 40 +0.6212630184000001 + 40 +0.6782578108 + 40 +0.7294888620000001 + 40 +0.7777294302 + 40 +0.8259960331999998 + 40 +0.8741591034999999 + 40 +0.8988995283999999 + 40 +0.9261719254 + 40 +0.9588192360999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +124.3840820569029 + 20 +9.836785818991771 + 30 +0.0 + 10 +124.357661246143 + 20 +9.778911997731782 + 30 +0.0 + 10 +124.3180976041629 + 20 +9.692131988411759 + 30 +0.0 + 10 +124.282481018043 + 20 +9.568001812491772 + 30 +0.0 + 10 +124.267464096083 + 20 +9.467389422911779 + 30 +0.0 + 10 +124.263253454263 + 20 +9.359854131251765 + 30 +0.0 + 10 +124.2704416745829 + 20 +9.214043160491783 + 30 +0.0 + 10 +124.2940304234429 + 20 +9.073507119491765 + 30 +0.0 + 10 +124.336487176223 + 20 +8.947966512051763 + 30 +0.0 + 10 +124.375726178263 + 20 +8.871720591391763 + 30 +0.0 + 10 +124.424134758103 + 20 +8.810846986951744 + 30 +0.0 + 10 +124.4826204145629 + 20 +8.765619663131772 + 30 +0.0 + 10 +124.548768750643 + 20 +8.738545333231783 + 30 +0.0 + 10 +124.603208768763 + 20 +8.712211032331779 + 30 +0.0 + 10 +124.639243957043 + 20 +8.677539740231779 + 30 +0.0 + 10 +124.660675232443 + 20 +8.64106511417178 + 30 +0.0 + 10 +124.674024842523 + 20 +8.592512620471765 + 30 +0.0 + 10 +124.676355587163 + 20 +8.55594169539178 + 30 +0.0 + 10 +124.676355587163 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +63A +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0674655682 + 40 +0.125308743 + 40 +0.1757097024 + 40 +0.2267394008 + 40 +0.2852294126 + 40 +0.3490801729 + 40 +0.4723776035000001 + 40 +0.5237494862 + 40 +0.5667631661 + 40 +0.6062309773 + 40 +0.6457186257 + 40 +0.6934548047 + 40 +0.7221303215 + 40 +0.7552956104000001 + 40 +0.7959206876 + 40 +0.8502057724 + 40 +0.9208073105 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +124.910730429563 + 20 +9.738882103191784 + 30 +0.0 + 10 +124.897839751763 + 20 +9.710645540411761 + 30 +0.0 + 10 +124.873950218643 + 20 +9.658170534871786 + 30 +0.0 + 10 +124.8439189325029 + 20 +9.583052442791782 + 30 +0.0 + 10 +124.823274620223 + 20 +9.512549086211762 + 30 +0.0 + 10 +124.812544169243 + 20 +9.439554276651747 + 30 +0.0 + 10 +124.809600974723 + 20 +9.359719610311756 + 30 +0.0 + 10 +124.815119002803 + 20 +9.246761032571768 + 30 +0.0 + 10 +124.833823176723 + 20 +9.13792943921176 + 30 +0.0 + 10 +124.865042657083 + 20 +9.042530176111753 + 30 +0.0 + 10 +124.893404236123 + 20 +8.987474655031789 + 30 +0.0 + 10 +124.928900070643 + 20 +8.943462678031792 + 30 +0.0 + 10 +124.975748846643 + 20 +8.907598746711769 + 30 +0.0 + 10 +125.025484144683 + 20 +8.887652106391769 + 30 +0.0 + 10 +125.071281081283 + 20 +8.866564358371775 + 30 +0.0 + 10 +125.111258334323 + 20 +8.84112505187177 + 30 +0.0 + 10 +125.153669776043 + 20 +8.799376766051764 + 30 +0.0 + 10 +125.191963212283 + 20 +8.732438667771774 + 30 +0.0 + 10 +125.2172045384829 + 20 +8.641174346871778 + 30 +0.0 + 10 +125.222269928403 + 20 +8.572052671551787 + 30 +0.0 + 10 +125.222269928403 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +63B +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0411807639 + 40 +0.0738280746 + 40 +0.1011004716 + 40 +0.1258408965 + 40 +0.1740039668 + 40 +0.2222705698 + 40 +0.270511138 + 40 +0.3217421892 + 40 +0.3787369816 + 40 +0.4433588121 + 40 +0.5896612185 + 40 +0.6655093576 + 40 +0.7390005390000001 + 40 +0.8073439200999999 + 40 +0.8710955970999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +75.85654309744302 + 20 +8.53561734183178 + 30 +0.0 + 10 +75.85654309744302 + 20 +8.55594169539178 + 30 +0.0 + 10 +75.85887384208297 + 20 +8.592512620471765 + 30 +0.0 + 10 +75.87222345216298 + 20 +8.64106511417178 + 30 +0.0 + 10 +75.893654725023 + 20 +8.677539740231779 + 30 +0.0 + 10 +75.92968991584303 + 20 +8.712211032331779 + 30 +0.0 + 10 +75.984129933963 + 20 +8.738545333231783 + 30 +0.0 + 10 +76.05027827004301 + 20 +8.765619663131772 + 30 +0.0 + 10 +76.108763926503 + 20 +8.810846986951744 + 30 +0.0 + 10 +76.15717250634299 + 20 +8.871720591391763 + 30 +0.0 + 10 +76.19641150838299 + 20 +8.947966512051763 + 30 +0.0 + 10 +76.23886825862303 + 20 +9.073507119491765 + 30 +0.0 + 10 +76.26245701002296 + 20 +9.214043160491783 + 30 +0.0 + 10 +76.26964523034297 + 20 +9.359854131251765 + 30 +0.0 + 10 +76.26543458852296 + 20 +9.467389422911779 + 30 +0.0 + 10 +76.25041766656301 + 20 +9.568001812491772 + 30 +0.0 + 10 +76.21480108044301 + 20 +9.692131988411759 + 30 +0.0 + 10 +76.175237438463 + 20 +9.778911997731782 + 30 +0.0 + 10 +76.14881662770301 + 20 +9.836785818991771 + 30 +0.0 + 0 +SPLINE + 5 +63C +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 25 + 73 + 21 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0791926895 + 40 +0.1497942276 + 40 +0.2040793124 + 40 +0.2447043896 + 40 +0.2778696785 + 40 +0.3065451953 + 40 +0.3542813743 + 40 +0.3937690227 + 40 +0.4332368339000001 + 40 +0.4762505138000001 + 40 +0.5276223965 + 40 +0.6509198271 + 40 +0.7147705874 + 40 +0.7732605992 + 40 +0.8242902975999999 + 40 +0.874691257 + 40 +0.9325344318 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +75.31062875620301 + 20 +8.53561734183178 + 30 +0.0 + 10 +75.31062875620301 + 20 +8.572052671551787 + 30 +0.0 + 10 +75.31569414612301 + 20 +8.641174346871778 + 30 +0.0 + 10 +75.34093547232299 + 20 +8.732438667771774 + 30 +0.0 + 10 +75.37922890856299 + 20 +8.799376766051764 + 30 +0.0 + 10 +75.42164035028299 + 20 +8.84112505187177 + 30 +0.0 + 10 +75.46161760332302 + 20 +8.866564358371775 + 30 +0.0 + 10 +75.50741453992299 + 20 +8.887652106391769 + 30 +0.0 + 10 +75.55714983796298 + 20 +8.907598746711769 + 30 +0.0 + 10 +75.60399861142298 + 20 +8.943462678031792 + 30 +0.0 + 10 +75.63949444848299 + 20 +8.987474655031789 + 30 +0.0 + 10 +75.66785602498299 + 20 +9.042530176111753 + 30 +0.0 + 10 +75.69907550788298 + 20 +9.13792943921176 + 30 +0.0 + 10 +75.71777968180299 + 20 +9.246761032571768 + 30 +0.0 + 10 +75.72329770734296 + 20 +9.359719610311756 + 30 +0.0 + 10 +75.720354515363 + 20 +9.439554276651747 + 30 +0.0 + 10 +75.70962406438297 + 20 +9.512549086211762 + 30 +0.0 + 10 +75.68897975210302 + 20 +9.583052442791782 + 30 +0.0 + 10 +75.65894846596297 + 20 +9.658170534871786 + 30 +0.0 + 10 +75.63505893284298 + 20 +9.710645540411761 + 30 +0.0 + 10 +75.622168252503 + 20 +9.738882103191784 + 30 +0.0 + 0 +LINE + 5 +63D +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +83.395248106363 + 20 +3.137109670491781 + 30 +0.0 + 11 +83.40187483428298 + 21 +4.137109672011789 + 31 +0.0 + 0 +LINE + 5 +63E +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbLine + 10 +117.137650601103 + 20 +3.137109670491781 + 30 +0.0 + 11 +117.131023873183 + 21 +4.137109672011789 + 31 +0.0 + 0 +SPLINE + 5 +63F +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.1289044029 + 40 +0.1926560799 + 40 +0.260999461 + 40 +0.3344906424 + 40 +0.4103387815 + 40 +0.5566411879 + 40 +0.6212630184000001 + 40 +0.6782578108 + 40 +0.7294888620000001 + 40 +0.7777294302 + 40 +0.8259960331999998 + 40 +0.8741591034999999 + 40 +0.8988995283999999 + 40 +0.9261719254 + 40 +0.9588192360999999 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +75.68239017422303 + 20 +9.836785818991771 + 30 +0.0 + 10 +75.70881098498296 + 20 +9.778911997731782 + 30 +0.0 + 10 +75.74837462696297 + 20 +9.692131988411759 + 30 +0.0 + 10 +75.78399121308297 + 20 +9.568001812491772 + 30 +0.0 + 10 +75.79900813504298 + 20 +9.467389422911779 + 30 +0.0 + 10 +75.80321877686299 + 20 +9.359854131251765 + 30 +0.0 + 10 +75.79603055654297 + 20 +9.214043160491783 + 30 +0.0 + 10 +75.77244180768303 + 20 +9.073507119491765 + 30 +0.0 + 10 +75.72998505490301 + 20 +8.947966512051763 + 30 +0.0 + 10 +75.690746052863 + 20 +8.871720591391763 + 30 +0.0 + 10 +75.64233747302296 + 20 +8.810846986951744 + 30 +0.0 + 10 +75.58385181656297 + 20 +8.765619663131772 + 30 +0.0 + 10 +75.51770348048297 + 20 +8.738545333231783 + 30 +0.0 + 10 +75.46326346236298 + 20 +8.712211032331779 + 30 +0.0 + 10 +75.42722827408301 + 20 +8.677539740231779 + 30 +0.0 + 10 +75.405796998683 + 20 +8.64106511417178 + 30 +0.0 + 10 +75.39244738860299 + 20 +8.592512620471765 + 30 +0.0 + 10 +75.39011664396298 + 20 +8.55594169539178 + 30 +0.0 + 10 +75.39011664396298 + 20 +8.53561734183178 + 30 +0.0 + 0 +SPLINE + 5 +640 +330 +2 +100 +AcDbEntity + 8 +0 + 6 +Continuous + 62 + 7 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 8 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0411807639 + 40 +0.0738280746 + 40 +0.1011004716 + 40 +0.1258408965 + 40 +0.1740039668 + 40 +0.2222705698 + 40 +0.270511138 + 40 +0.3217421892 + 40 +0.3787369816 + 40 +0.4433588121 + 40 +0.5896612185 + 40 +0.6655093576 + 40 +0.7390005390000001 + 40 +0.8073439200999999 + 40 +0.8710955970999998 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 10 +125.142782038103 + 20 +8.53561734183178 + 30 +0.0 + 10 +125.142782038103 + 20 +8.55594169539178 + 30 +0.0 + 10 +125.140451296003 + 20 +8.592512620471765 + 30 +0.0 + 10 +125.127101685923 + 20 +8.64106511417178 + 30 +0.0 + 10 +125.105670410523 + 20 +8.677539740231779 + 30 +0.0 + 10 +125.069635222243 + 20 +8.712211032331779 + 30 +0.0 + 10 +125.015195204123 + 20 +8.738545333231783 + 30 +0.0 + 10 +124.949046868043 + 20 +8.765619663131772 + 30 +0.0 + 10 +124.8905612115829 + 20 +8.810846986951744 + 30 +0.0 + 10 +124.842152631743 + 20 +8.871720591391763 + 30 +0.0 + 10 +124.8029136297029 + 20 +8.947966512051763 + 30 +0.0 + 10 +124.7604568769229 + 20 +9.073507119491765 + 30 +0.0 + 10 +124.7368681280629 + 20 +9.214043160491783 + 30 +0.0 + 10 +124.729679907743 + 20 +9.359854131251765 + 30 +0.0 + 10 +124.733890549563 + 20 +9.467389422911779 + 30 +0.0 + 10 +124.748907468983 + 20 +9.568001812491772 + 30 +0.0 + 10 +124.784524057643 + 20 +9.692131988411759 + 30 +0.0 + 10 +124.824087699623 + 20 +9.778911997731782 + 30 +0.0 + 10 +124.850508510383 + 20 +9.836785818991771 + 30 +0.0 + 0 +DIMENSION + 5 +641 +102 +{ACAD_XDICTIONARY +360 +642 +102 +} +102 +{ACAD_REACTORS +330 +643 +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbDimension + 2 +*D3 + 10 +-41.15660826313699 + 20 +142.7416196578883 + 30 +0.0 + 11 +-68.15660826353698 + 21 +142.7416196578883 + 31 +0.0 + 71 + 5 + 42 +54.0000000008 + 3 +STANDARD +100 +AcDbAlignedDimension + 13 +-95.15660826393698 + 23 +126.7726232651117 + 33 +0.0 + 14 +-41.15660826313699 + 24 +126.7726232651117 + 34 +0.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 42 +1040 +0.0730807087 +1070 + 43 +1040 +0.4443307087 +1070 + 44 +1040 +0.2104724409 +1070 + 47 +1040 +0.0 +1070 + 48 +1040 +0.0 +1070 + 69 +1070 + 2 +1070 + 70 +1070 + 1 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +3.0 +1070 + 141 +1040 +0.1052362205 +1070 + 176 +1070 + 1 +1070 + 177 +1070 + 1 +1070 + 178 +1070 + 256 +1070 + 271 +1070 + 4 +1070 + 272 +1070 + 4 +1070 + 284 +1070 + 0 +1002 +} + 0 +DIMENSION + 5 +651 +102 +{ACAD_XDICTIONARY +360 +652 +102 +} +102 +{ACAD_REACTORS +330 +653 +102 +} +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbDimension + 2 +*D4 + 10 +-28.74692919361314 + 20 +125.7726232661317 + 30 +0.0 + 11 +-33.82442919361317 + 21 +125.5851232661317 + 31 +0.0 + 71 + 5 + 42 +0.9999999989800016 + 3 +STANDARD +100 +AcDbAlignedDimension + 13 +-41.15660826313699 + 23 +126.7726232651117 + 33 +0.0 + 14 +-41.15660826313699 + 24 +125.7726232661317 + 34 +0.0 + 50 +90.0 +100 +AcDbRotatedDimension +1001 +ACAD +1000 +DSTYLE +1002 +{ +1070 + 42 +1040 +0.0730807087 +1070 + 43 +1040 +0.4443307087 +1070 + 44 +1040 +0.2104724409 +1070 + 47 +1040 +0.0 +1070 + 48 +1040 +0.0 +1070 + 69 +1070 + 2 +1070 + 70 +1070 + 1 +1070 + 78 +1070 + 0 +1070 + 140 +1040 +3.0 +1070 + 141 +1040 +0.1052362205 +1070 + 176 +1070 + 1 +1070 + 177 +1070 + 1 +1070 + 178 +1070 + 256 +1070 + 271 +1070 + 4 +1070 + 272 +1070 + 4 +1070 + 284 +1070 + 0 +1002 +} + 0 +LINE + 5 +662 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 3 +100 +AcDbLine + 10 +-123.8191276879888 + 20 +27.76188384317766 + 30 +0.0 + 11 +-66.65660826379699 + 21 +25.43710967035178 + 31 +0.0 + 0 +LINE + 5 +663 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 1 +100 +AcDbLine + 10 +-117.2920304227191 + 20 +21.17426270305668 + 30 +0.0 + 11 +-88.90660826205699 + 21 +22.13710967143179 + 31 +0.0 + 0 +LINE + 5 +664 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 2 +100 +AcDbLine + 10 +-128.3796611720881 + 20 +14.30101008903648 + 30 +0.0 + 11 +-71.53801975025544 + 21 +16.40506668612988 + 31 +0.0 + 0 +LINE + 5 +665 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 6 +100 +AcDbLine + 10 +-121.0155052798245 + 20 +-5.3112093585205 + 30 +0.0 + 11 +-72.631608264497 + 21 +-3.362890329228221 + 31 +0.0 + 0 +LINE + 5 +666 +330 +2 +100 +AcDbEntity + 8 +0 + 62 + 5 +100 +AcDbLine + 10 +-119.7900025101416 + 20 +-39.65219189867594 + 30 +0.0 + 11 +-88.85660826299698 + 21 +-48.91927725030822 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +7 +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_2007HEADERVARS_RT +350 +66D + 3 +ACAD_COLOR +350 +41 + 3 +ACAD_GROUP +350 +35 + 3 +ACAD_LAYOUT +350 +1E + 3 +ACAD_MATERIAL +350 +9 + 3 +ACAD_MLINESTYLE +350 +36 + 3 +ACAD_PLOTSETTINGS +350 +37 + 3 +ACAD_PLOTSTYLENAME +350 +6 + 3 +ACAD_TABLESTYLE +350 +42 + 3 +ACAD_VISUALSTYLE +350 +2F + 3 +AcDbVariableDictionary +350 +669 + 0 +DICTIONARY + 5 +19D +330 +19C +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +19E + 0 +DICTIONARY + 5 +1AE +330 +1AD +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +1AF + 0 +DICTIONARY + 5 +2FF +330 +2FE +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +300 + 0 +DICTIONARY + 5 +642 +330 +641 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +643 + 0 +DICTIONARY + 5 +652 +330 +651 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_DIMASSOC +360 +653 + 0 +DICTIONARY + 5 +66D +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +DIMTFILL +350 +66E + 3 +DIMTFILLCLR +350 +66F + 0 +DICTIONARY + 5 +41 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +35 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1E +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +Layout1 +350 +22 + 3 +Model +350 +1D + 0 +DICTIONARY + 5 +9 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +ByBlock +350 +38 + 3 +ByLayer +350 +13 + 3 +Global +350 +8 + 0 +DICTIONARY + 5 +36 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +43 + 0 +DICTIONARY + 5 +37 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +6 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +5 +100 +AcDbDictionaryWithDefault +340 +5 + 0 +DICTIONARY + 5 +42 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +44 + 0 +DICTIONARY + 5 +2F +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +2E + 3 +3dWireframe +350 +48 + 3 +Realistic +350 +47 + 0 +DICTIONARY + 5 +669 +102 +{ACAD_REACTORS +330 +7 +102 +} +330 +7 +100 +AcDbDictionary +281 + 1 + 3 +CTABLESTYLE +350 +66A + 3 +LOFTANG1 +350 +66B + 3 +LOFTANG2 +350 +66C + 0 +DIMASSOC + 5 +19E +102 +{ACAD_REACTORS +330 +19D +102 +} +330 +19D +100 +AcDbDimAssoc +330 +19C + 90 + 3 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 1 +331 +115 + 73 + 2 + 91 + 0 + 40 +1.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +115 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 0 +DIMASSOC + 5 +1AF +102 +{ACAD_REACTORS +330 +1AE +102 +} +330 +1AE +100 +AcDbDimAssoc +330 +1AD + 90 + 3 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 1 +331 +D3 + 73 + 2 + 91 + 0 + 40 +1.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +B6 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 0 +DIMASSOC + 5 +300 +102 +{ACAD_REACTORS +330 +2FF +102 +} +330 +2FF +100 +AcDbDimAssoc +330 +2FE + 90 + 3 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 1 +331 +249 + 73 + 2 + 91 + 0 + 40 +1.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +249 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 0 +DIMASSOC + 5 +643 +102 +{ACAD_REACTORS +330 +642 +102 +} +330 +642 +100 +AcDbDimAssoc +330 +641 + 90 + 3 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +486 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +4A9 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 0 +DIMASSOC + 5 +653 +102 +{ACAD_REACTORS +330 +652 +102 +} +330 +652 +100 +AcDbDimAssoc +330 +651 + 90 + 3 + 70 + 0 + 71 + 0 + 1 +AcDbOsnapPointRef + 72 + 13 +331 +4A9 + 73 + 2 + 91 + 0 + 40 +0.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 1 +AcDbOsnapPointRef + 72 + 1 +331 +4A9 + 73 + 2 + 91 + 0 + 40 +1.0 + 10 +0.0 + 20 +0.0 + 30 +2.000000000000000E+50 + 75 + 0 + 0 +XRECORD + 5 +66E +102 +{ACAD_REACTORS +330 +66D +102 +} +330 +66D +100 +AcDbXrecord +280 + 1 + 70 + 2 + 0 +XRECORD + 5 +66F +102 +{ACAD_REACTORS +330 +66D +102 +} +330 +66D +100 +AcDbXrecord +280 + 1 +1004 +1800000001000000010000C3000000000000000000000000 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1E +102 +} +330 +1E +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +ISO_A4_(297.00_x_210.00_MM) + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +297.0 + 45 +210.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 0 + 72 + 0 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 + 1 + 71 + 1 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1.000000000000000E+20 + 24 +1.000000000000000E+20 + 34 +1.000000000000000E+20 + 15 +-1.000000000000000E+20 + 25 +-1.000000000000000E+20 + 35 +-1.000000000000000E+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F + 0 +LAYOUT + 5 +1D +102 +{ACAD_REACTORS +330 +1E +102 +} +330 +1E +100 +AcDbPlotSettings + 1 + + 2 +none_device + 4 +ISO_A4_(297.00_x_210.00_MM) + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +297.0 + 45 +210.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 1024 + 72 + 0 + 73 + 0 + 74 + 0 + 7 + + 75 + 0 +147 +1.0 + 76 + 0 + 77 + 2 + 78 + 300 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 + 0 + 71 + 0 + 10 +0.0 + 20 +0.0 + 11 +11.6929133858 + 21 +8.267716535399999 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +2 +331 +2D + 0 +MATERIAL + 5 +38 +102 +{ACAD_XDICTIONARY +360 +39 +102 +} +102 +{ACAD_REACTORS +330 +9 +102 +} +330 +9 +100 +AcDbMaterial + 1 +ByBlock + 72 + 0 + 73 + 2 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 77 + 0 + 78 + 2 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 +171 + 0 +172 + 2 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 +175 + 0 +176 + 2 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +179 + 0 +270 + 2 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +274 + 2 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 + 0 +MATERIAL + 5 +13 +102 +{ACAD_XDICTIONARY +360 +14 +102 +} +102 +{ACAD_REACTORS +330 +9 +102 +} +330 +9 +100 +AcDbMaterial + 1 +ByLayer + 72 + 0 + 73 + 2 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 77 + 0 + 78 + 2 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 +171 + 0 +172 + 2 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 +175 + 0 +176 + 2 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +179 + 0 +270 + 2 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +274 + 2 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 + 0 +MATERIAL + 5 +8 +102 +{ACAD_XDICTIONARY +360 +A +102 +} +102 +{ACAD_REACTORS +330 +9 +102 +} +330 +9 +100 +AcDbMaterial + 1 +Global + 72 + 0 + 73 + 2 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0208333333333333 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +0.0 + 43 +1.0 + 77 + 0 + 78 + 2 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0208333333333333 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +0.0 + 47 +1.0 +171 + 0 +172 + 2 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0208333333333333 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +0.0 + 49 +1.0 +175 + 0 +176 + 2 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0208333333333333 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +0.0 +142 +1.0 +179 + 0 +270 + 2 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0208333333333333 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +0.0 +144 +1.0 +274 + 2 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0208333333333333 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +0.0 +147 +1.0 + 0 +MLINESTYLE + 5 +43 +102 +{ACAD_REACTORS +330 +36 +102 +} +330 +36 +100 +AcDbMlineStyle + 2 +STANDARD + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +5 +102 +{ACAD_REACTORS +330 +6 +102 +} +330 +6 + 0 +TABLESTYLE + 5 +44 +102 +{ACAD_XDICTIONARY +360 +45 +102 +} +102 +{ACAD_REACTORS +330 +42 +102 +} +330 +42 +100 +AcDbTableStyle + 3 +Standard + 70 + 0 + 71 + 0 + 40 +0.06 + 41 +0.06 +280 + 0 +281 + 0 + 7 +STANDARD +140 +0.18 +170 + 2 + 62 + 0 + 63 + 7 +283 + 0 +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 7 +STANDARD +140 +0.25 +170 + 5 + 62 + 0 + 63 + 7 +283 + 0 +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 7 +STANDARD +140 +0.18 +170 + 5 + 62 + 0 + 63 + 7 +283 + 0 +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 0 +VISUALSTYLE + 5 +2E +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +48 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +47 +102 +{ACAD_REACTORS +330 +2F +102 +} +330 +2F +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 +421 + 16777215 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 +424 + 7895160 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +DICTIONARYVAR + 5 +66A +102 +{ACAD_REACTORS +330 +669 +102 +} +330 +669 +100 +DictionaryVariables +280 + 0 + 1 +STANDARD + 0 +DICTIONARYVAR + 5 +66B +102 +{ACAD_REACTORS +330 +669 +102 +} +330 +669 +100 +DictionaryVariables +280 + 0 + 1 +1.570796 + 0 +DICTIONARYVAR + 5 +66C +102 +{ACAD_REACTORS +330 +669 +102 +} +330 +669 +100 +DictionaryVariables +280 + 0 + 1 +1.570796 + 0 +DICTIONARY + 5 +39 +330 +38 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +3A + 3 +BUMPTILE +360 +3B + 3 +DIFFUSETILE +360 +3C + 3 +OPACITYTILE +360 +3D + 3 +REFLECTIONTILE +360 +3E + 3 +REFRACTIONTILE +360 +3F + 3 +SPECULARTILE +360 +40 + 0 +DICTIONARY + 5 +14 +330 +13 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +15 + 3 +BUMPTILE +360 +16 + 3 +DIFFUSETILE +360 +17 + 3 +OPACITYTILE +360 +18 + 3 +REFLECTIONTILE +360 +19 + 3 +REFRACTIONTILE +360 +1A + 3 +SPECULARTILE +360 +1B + 0 +DICTIONARY + 5 +A +330 +8 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_XREC_ROUNDTRIP +360 +B + 3 +BUMPTILE +360 +C + 3 +DIFFUSETILE +360 +D + 3 +OPACITYTILE +360 +E + 3 +REFLECTIONTILE +360 +F + 3 +REFRACTIONTILE +360 +10 + 3 +SPECULARTILE +360 +11 + 0 +DICTIONARY + 5 +45 +330 +44 +100 +AcDbDictionary +280 + 1 +281 + 1 + 3 +ACAD_ROUNDTRIP_2008_TABLESTYLE_CELLSTYLEMAP +360 +46 + 3 +ACAD_XREC_ROUNDTRIP +360 +670 + 0 +XRECORD + 5 +3A +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 0 + 77 + 0 +171 + 0 +175 + 0 +179 + 0 +273 + 0 + 0 +XRECORD + 5 +3B +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +3C +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +3D +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +3E +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +3F +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +40 +102 +{ACAD_REACTORS +330 +39 +102 +} +330 +39 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +15 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 0 + 77 + 0 +171 + 0 +175 + 0 +179 + 0 +273 + 0 + 0 +XRECORD + 5 +16 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +17 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +18 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +19 +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1A +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +1B +102 +{ACAD_REACTORS +330 +14 +102 +} +330 +14 +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +B +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +102 +MATERIAL +148 +0.0 +149 +0.0 +149 +0.0 + 93 + 0 + 94 + 63 +282 + 0 + 72 + 0 + 77 + 0 +171 + 0 +175 + 0 +179 + 0 +273 + 0 + 0 +XRECORD + 5 +C +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +D +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +E +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +F +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +10 +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +XRECORD + 5 +11 +102 +{ACAD_REACTORS +330 +A +102 +} +330 +A +100 +AcDbXrecord +280 + 1 +270 + 1 +271 + 1 + 0 +ACAD_PROXY_OBJECT + 5 +46 +102 +{ACAD_REACTORS +330 +45 +102 +} +330 +45 +100 +AcDbProxyObject + 90 + 499 + 91 + 508 + 95 + 27 + 70 + 0 + 93 + 1181 +310 +40D054060020000020000003200101A000080002941600000030400000000000000D03FA4050141501A8000000C800406800020000A5058000000C10002B5E8DC0F42B1CFE90240505406A0000003200101A000080002940A000000304000AD7A3703D0AC73FA40D029065F005400490054004C0045009075F004800450041 +310 +004400450052009055F0044004100540041004401C +340 +25 +340 +25 +340 +25 + 94 + 0 + 0 +XRECORD + 5 +670 +102 +{ACAD_REACTORS +330 +45 +102 +} +330 +45 +100 +AcDbXrecord +280 + 1 +102 +ACAD_ROUNDTRIP_PRE2007_TABLESTYLE + 90 + 512 + 91 + 0 + 1 + + 92 + 512 + 93 + 0 + 2 + + 94 + 512 + 95 + 0 + 3 + + 0 +ENDSEC + 0 +EOF diff --git a/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/杰理充电仓与耳机通信协议v4.0.doc b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/杰理充电仓与耳机通信协议v4.0.doc new file mode 100644 index 0000000..c1d1009 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/杰理充电仓与耳机通信协议v4.0.doc differ diff --git a/UsrDoc/双向通讯项目/TWS项目通讯资料-中科蓝讯.zip b/UsrDoc/双向通讯项目/TWS项目通讯资料-中科蓝讯.zip new file mode 100644 index 0000000..5bef427 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目通讯资料-中科蓝讯.zip differ diff --git a/UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科测试报告_UI 2023.11.15.xlsx b/UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科测试报告_UI 2023.11.15.xlsx new file mode 100644 index 0000000..ed8e984 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科测试报告_UI 2023.11.15.xlsx differ diff --git a/UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科蓝讯协议_DC5V 控制协议.xlsx b/UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科蓝讯协议_DC5V 控制协议.xlsx new file mode 100644 index 0000000..85c62a5 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科蓝讯协议_DC5V 控制协议.xlsx differ diff --git a/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科测试报告 2023.9.1.xlsx b/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科测试报告 2023.9.1.xlsx new file mode 100644 index 0000000..e4dbb36 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科测试报告 2023.9.1.xlsx differ diff --git a/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科蓝讯串口协议_DC3.0V_7x2&889X搭配充电仓说明书_20201207.pdf b/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科蓝讯串口协议_DC3.0V_7x2&889X搭配充电仓说明书_20201207.pdf new file mode 100644 index 0000000..4316802 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科蓝讯串口协议_DC3.0V_7x2&889X搭配充电仓说明书_20201207.pdf differ diff --git a/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科蓝讯串口协议_DC3.0V_S3充电仓协议沟通问题点20211021.docx b/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科蓝讯串口协议_DC3.0V_S3充电仓协议沟通问题点20211021.docx new file mode 100644 index 0000000..b95f6a3 Binary files /dev/null and b/UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科蓝讯串口协议_DC3.0V_S3充电仓协议沟通问题点20211021.docx differ diff --git a/UsrDoc/双向通讯项目/小米/b37bb9a93d085d36e46ecb9f0950019.png b/UsrDoc/双向通讯项目/小米/b37bb9a93d085d36e46ecb9f0950019.png new file mode 100644 index 0000000..7819d99 Binary files /dev/null and b/UsrDoc/双向通讯项目/小米/b37bb9a93d085d36e46ecb9f0950019.png differ diff --git a/UsrDoc/双向通讯项目/小米/~$充电盒指令集.xlsx b/UsrDoc/双向通讯项目/小米/~$充电盒指令集.xlsx new file mode 100644 index 0000000..e85da1b Binary files /dev/null and b/UsrDoc/双向通讯项目/小米/~$充电盒指令集.xlsx differ diff --git a/UsrDoc/双向通讯项目/小米/充电盒指令集.xlsx b/UsrDoc/双向通讯项目/小米/充电盒指令集.xlsx new file mode 100644 index 0000000..686e190 Binary files /dev/null and b/UsrDoc/双向通讯项目/小米/充电盒指令集.xlsx differ diff --git a/UsrDoc/双向通讯项目/小米/小米双向通信内容.png b/UsrDoc/双向通讯项目/小米/小米双向通信内容.png new file mode 100644 index 0000000..1950fa3 Binary files /dev/null and b/UsrDoc/双向通讯项目/小米/小米双向通信内容.png differ diff --git a/UsrDoc/双向通讯项目/小米/问题列表.txt b/UsrDoc/双向通讯项目/小米/问题列表.txt new file mode 100644 index 0000000..bd31bef --- /dev/null +++ b/UsrDoc/双向通讯项目/小米/问题列表.txt @@ -0,0 +1,18 @@ +1、通讯协议的具体数据格式,如:Header + Side + CMD + ...... +2、盒子 -> 耳机和耳机 -> 盒子通讯协议的差异?Header不同? +3、灯显LED个数; +4、各个触发动作,如Key按下、Hall触发,对应的显示灯效; +5、各条协议通讯完成后相应的灯效; +6、各条协议通讯的具体功能逻辑,什么条件下发,收到耳机的回复后仓需要的动作等。 + 如,盒子收到配对指令指令后,对应的配对数据需要显示的灯效。 +7、其它重要的需要实现的功能。如呼吸灯、潮汐充、跟随充等。 +8、盒子电池电量的精度; +9、pattern如何发?格式? +10、心跳包如何发?间隔多久发一次?发多少次? +11、交互地址的具体逻辑。和oppo的一样? +12、充电流程的管理逻辑(阶段充?); +13、放电流程的管理逻辑(跟随充?); +14、NTC逻辑; +15、SN码怎么处理?具体应用; +16、复位功能的要求; +17、出厂运输和用户常规使用时,功耗控制方面分别啥要求,如何处理? \ No newline at end of file diff --git a/UsrDoc/电量计/电压型电量计原理和应用.pptx b/UsrDoc/电量计/电压型电量计原理和应用.pptx new file mode 100644 index 0000000..a57df12 Binary files /dev/null and b/UsrDoc/电量计/电压型电量计原理和应用.pptx differ diff --git a/UsrDoc/程序流程图/VOX耳机识别流程图.vsdx b/UsrDoc/程序流程图/VOX耳机识别流程图.vsdx new file mode 100644 index 0000000..c1e6e8d Binary files /dev/null and b/UsrDoc/程序流程图/VOX耳机识别流程图.vsdx differ diff --git a/UsrDoc/软件说明.doc b/UsrDoc/软件说明.doc new file mode 100644 index 0000000..7877d21 Binary files /dev/null and b/UsrDoc/软件说明.doc differ diff --git a/UsrInc/adc/adc.h b/UsrInc/adc/adc.h new file mode 100644 index 0000000..fb16df3 --- /dev/null +++ b/UsrInc/adc/adc.h @@ -0,0 +1,53 @@ +/* + ****************************************************************************** + * + * @file adc.h + * @brief adc module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __ADC_H__ +#define __ADC_H__ + +#include "define.h" + +#if ADC_ENABLE + +#define VREF 1000 + +extern idata uint16_t Vbat_Adc; + +extern uint16_t Vbat_Value(void); + +typedef enum { + ADC_CH0 = 0x00, + ADC_CH1, + ADC_CH2, + ADC_CH3, + ADC_CH4, + ADC_BAT, + ADC_VREF, +}ADC_CHANNELS_E; + +#ifdef ADC_NTC_ENABLE + +extern uint16_t ADC_NTC_Value(void); + +#endif + +#endif + +#endif + diff --git a/UsrInc/bat/bat.h b/UsrInc/bat/bat.h new file mode 100644 index 0000000..93f9acc --- /dev/null +++ b/UsrInc/bat/bat.h @@ -0,0 +1,38 @@ +/* + ****************************************************************************** + * + * @file bat.h + * @brief bat module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __BAT_H__ +#define __BAT_H__ + +#include "define.h" +extern idata uint8_t bat_level; +extern bit F_batlevel_low; //صѹ + +#if BAT_VALUE + + +//extern bit F_batlevel_protect; //͵籣 + +extern void check_bat_level(void); + +#endif + +#endif + diff --git a/UsrInc/charger/charger_module.h b/UsrInc/charger/charger_module.h new file mode 100644 index 0000000..a3f044f --- /dev/null +++ b/UsrInc/charger/charger_module.h @@ -0,0 +1,65 @@ +/* + ****************************************************************************** + * + * @file Charger_module.h + * @brief charger module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __CHARGER_MODULE_H__ +#define __CHARGER_MODULE_H__ + +#include "define.h" +#if 0 +// ״̬ +typedef enum +{ + CHG_STA_ING, // + CHG_STA_COMPLETED, // + CHG_STA_PULLOUT, // γ +} TE_CHG_STA; + + +extern idata TE_CHG_STA ChgStatus; // ϵͳ״̬ +#endif + +extern bit Charger_Done; + +#if CHARGER_ENABLE +/*ãϵͳʼʱͨüĴREG_CHG1á + +REG_CHG1 = CHG_CURRENT_300MA; + +*/ +#define CHG_CURRENT_100MA 0x00 +#define CHG_CURRENT_200MA 0x01 +#define CHG_CURRENT_250MA 0x02 +#define CHG_CURRENT_300MA 0x03 +#define CHG_CURRENT_350MA 0x04 +#define CHG_CURRENT_400MA 0x05 +#define CHG_CURRENT_450MA 0x06 +#define CHG_CURRENT_500MA 0x07 + + +#define CHG_CONSTANT_CUR_TIM 1 + +#define DIE_OT_RECOVER_TIM 25 //NTC󣬻ָȴ250ms¿ + +extern void Charger_Handler(void); + +#endif + +#endif + diff --git a/UsrInc/discharge/discharge_module.h b/UsrInc/discharge/discharge_module.h new file mode 100644 index 0000000..be5b5f4 --- /dev/null +++ b/UsrInc/discharge/discharge_module.h @@ -0,0 +1,42 @@ +/* + ****************************************************************************** + * + * @file discharge_module.h + * @brief discharge module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __DISCHARGE_MODULE_H__ +#define __DISCHARGE_MODULE_H__ + +#include "define.h" + +extern bit gBoost_Prepared_Flag; //Boost㿪 + +#if DISCHARGE_ENABLE + +#define BOOST_OPEN_TIM 10 + +#if 0 +extern void DisCharge_Boost_Open(void); +extern void DisCharge_Boost_Close(void); +#endif + +extern void DisCharge_Handler(void); + +#endif + +#endif + diff --git a/UsrInc/gpio/gpio.h b/UsrInc/gpio/gpio.h new file mode 100644 index 0000000..94fde4b --- /dev/null +++ b/UsrInc/gpio/gpio.h @@ -0,0 +1,33 @@ +/* + ****************************************************************************** + * + * @file gpio.h + * @brief gpio module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#include "define.h" + + +//extern void GPIO_Init(void); +//extern void Enter_ShipMode(void); + + +#endif + + diff --git a/UsrInc/hall/hall.h b/UsrInc/hall/hall.h new file mode 100644 index 0000000..c98c49e --- /dev/null +++ b/UsrInc/hall/hall.h @@ -0,0 +1,47 @@ +/* + ****************************************************************************** + * + * @file hall.h + * @brief hall module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __HALL_H__ +#define __HALL_H__ + +#include "define.h" + + + +typedef enum{ + + CLOSE = 0, + OPEN = !CLOSE + +} CoverStatus_E; + +extern CoverStatus_E CoverStatus; + +extern bit CoverEvent_Flg; +extern bit CoverEvent_Flg_led; +#if HALL_ENABLE + +//extern void Hall_Init(void); +extern void Hall_Handler(void); + +#endif + +#endif + diff --git a/UsrInc/inc/config.h b/UsrInc/inc/config.h new file mode 100644 index 0000000..e3e1676 --- /dev/null +++ b/UsrInc/inc/config.h @@ -0,0 +1,87 @@ +/* + ****************************************************************************** + * + * @file Config.h + * @brief Config module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __CONFIG_H__ +#define __CONFIG_H__ + +#include "define.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/*Charger Module Config Para Setting*/ + +#define BAT_CV 4200 //CVѹã4.20V +#define BAT_PRE 3000 //ѹ3.0v +#define BAT_RECHARG 4075 //ظѹ4200mv - 135mv = 4075mv + +/*20uA Դ½ 104K NTC 貢һ82Kõĵѹֵ*/ +#define T_N20C 1530 //-20(76.5K * 20uA) NTC:1151K + +#define T_N15C 1495 //-15 ¶ + +#define T_N10C 1440 //-10(72K * 20uA) NTC:629K + +#define T_0C 1334 //0(66.7K * 20uA) NTC:357K + +#define T_3C 1300 + +#define T_8C 1200 + +#define T_10C 1178 //10(58.9K * 20uA) NTC:209.7K + +#define T_12C 1100 + +#define T_42C 580 + +#define T_45C 546 //45(27.3K * 20uA) NTC:40.9K + +#define T_47C 500 + +#define T_57C 370 + +#define T_60C 350 //60(17.5K * 20uA) NTC:22.2K + +#define T_75C 250 + +#define T_80C 188 //80(9.4K * 20uA) NTC:10.6K + +/*Boost Module Config Para Setting*/ +#define OPEN_BOOST_VIN 3600 //Boost uvloVIN£Boostٴλָĵѹ3.6V +#define OPEN_BOOST_NOVIN 3300 //Boost uvloVIN£Boostٴλָĵѹ3.3V + +/*KEY And Hall Module Setting*/ +#define HALL_OPEN_LEV_SET 1 //ǸߵƽΪǻǵ͵ƽΪǡ1:ߵƽΪǣ0:͵ƽΪ + +/*Sleep Module Setting*/ +/*Enter Sleep Time Debounce*/ +#define ENTER_STANDBYMODE_CNT 10 //Standby Mode ӳʱ䣬λ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + UserCfg.Functions definitions +\******************************************************************************/ + + +#endif + diff --git a/UsrInc/inc/define.h b/UsrInc/inc/define.h new file mode 100644 index 0000000..0acc542 --- /dev/null +++ b/UsrInc/inc/define.h @@ -0,0 +1,126 @@ +/* + ****************************************************************************** + * + * @file define.h + * @brief define module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __DEFINE_H__ +#define __DEFINE_H__ + +#include "config.h" + +/*Function Selectѡ궨*/ + +#define TIMER1_ENABLE 0 //Timer1 ʱ1msҪBES Rest Pattern(119Bytes) + +#define UART0_ENABLE 1 //UART0ܣڳԡ(133Bytes) + +#define WTG_ENABLE 1 //Źʹ(7Bytes) + +#define LED_DISPLAY //LEDʾ ,1ʾ (267Bytes) + +#define HALL_ENABLE 1 //Hallܡ(Hall 46Bytes) + +#define KEY_ENABLE 1 //Key + +#define VOX_ENABLE 1 //104Bytes + +#define VOX_TX //575Bytes + +#define VOX_TX_RST_PATTERN //BES Reset Pattern (118Bytes) + +#define VOX_RX //405Bytes + +#define CHARGER_ENABLE 1 //225Bytes + +#define DISCHARGE_ENABLE 1 //75Bytes + +#define SLEEP_ENABLE 1 //110Bytes + +#define ADC_ENABLE 1 //710Bytes adc drvier 443Bytes + +#if ADC_ENABLE +#define ADC_NTC_ENABLE //213Bytes ChargerеIECش +#endif + +#define BAT_VALUE 1 //147Bytes + +//#define _DEBUG_ALL //򿪴ӡ + +#ifdef _DEBUG_ALL + +// #define _DEBUG_MAIN +// #define _DEBUG_KEY +// #define _DEBUG_VOX + #define _DEBUG_HALL +// #define _DEBUG_ADC +// #define _DEBUG_DISCHARGE +// #define _DEBUG_CHARGER +// #define _DEBUG_SLEEP +// #define _DEBUG_BAT + +//#define TEST_MODE + +#include "stdio.h" +#include "string.h" + +#endif + +#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t +#define LOBYTE(v1) ((uint8_t)((v1)&0xFF)) + +typedef bit BIT; +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + +typedef unsigned char uint8; +typedef unsigned int uint16; +typedef unsigned long uint32; + +typedef signed char int8_t; +typedef signed int int16_t; +typedef signed long int32_t; + +typedef signed char int8; +typedef signed int int16; +typedef signed long int32; + +typedef signed char s8; +typedef unsigned char u8; +typedef signed short int s16; +typedef unsigned short int u16; +typedef signed long int s32; +typedef unsigned long int u32; + +typedef enum{false = 0, true = !false} bool; + +#define FALSE false +#define TRUE true +#define ON true +#define OFF false + +#ifdef XIAOMI +#include "stdlib.h" +#endif + +#include "reg3310.h" +#if UART0_ENABLE +#include "uart.h" +#endif + +#endif + diff --git a/UsrInc/inc/reg3310.h b/UsrInc/inc/reg3310.h new file mode 100644 index 0000000..a2bca4e --- /dev/null +++ b/UsrInc/inc/reg3310.h @@ -0,0 +1,277 @@ +/*--------------------------------------------------------------------- +REG3310.H + +Header file for TP3310 microcontroller. + +Initial Released by zheng, 2023-12-01. + + Thinkplus Semiconductor co., ltd, All Rights Reserved! +----------------------------------------------------------------------*/ +#ifndef __REG3310_H__ //ͻͷļڲĿijʵʲƷţ +#define __REG3310_H__ + +//------------------------ Ext SFR Registers ------------------------- +/*------ GPIO/MFP Registers ------*/ +#define P0_PU 0x00 +#define P0_PD 0x01 +#define P0_OD 0x02 +#define P0_DRV 0x03 +#define P0_IE 0x05 +#define P0_OE 0x06 +//#define P1_PU 0x07 +//#define P1_PD 0x08 +//#define P1_OD 0x09 +//#define P1_IE 0x0C +#define P1_OE 0x0D +#define MFP_CTL0 0x0E +#define MFP_CTL1 0x0F +#define GPIO_TEST 0x9B + +/*----- IRQ Enable Registers ----*/ +#define IRQ_EN0 0x14 // Abnormal interrupt enable +#define IRQ_EN1 0x15 // EXTI interrupt enable 0 +#define IRQ_EN2 0x16 // EXTI interrupt enable 1 +#define IRQ_EN3 0x17 // VOL/R LOADIN/ON interrupt enable +#define IRQ_EN4 0x18 // VOL/R Recharge and IOFF interrupt enable +#define IRQ_EN7 0x1B // KEY/PWM interrupt enable +#define IRQ_EN9 0x1D // Charger interrupt enable +#define IRQ_EN10 0x1E // VBUS/COMP/HALL/STBTMR/ADC_DATA_RDY interrupt enable + +/*--- Wakeup Enable Registers ---*/ +#define WKUP_EN0 0x21 // BOOST/HALL/KEY/VBUS Wakeup enable +#define WKUP_EN1 0x22 // EXTI and VOL/R Short Wakeup enable +#define WKUP_EN3 0x24 // BAT_LOW/TMR/VOX LOADIN/ON Wakeup enable + +/*-------- ADC Registers --------*/ +#define ADC_CTL0 0x29 +#define ADC00 0x2D +#define ADCCS_CTL0 0x4F + +/*---- OTP KEY Registers ----*/ +#define OTP_KEY 0x8F + +/*------ VOL/R Registers -----*/ +#define VOL_IOFF_TRIM 0x69 +#define VOX_CON0 0x6A +#define VOX_CON1 0x6B +#define VOX_CON2 0x6C +#define VOR_IOFF_TRIM 0x6D +#define ST_VOX 0x6E + +/*------ CHG Registers ------*/ +#define REG_CHG0 0x70 +#define REG_CHG3 0x9D +#define OTP_CHG0 0x71 +#define OTP_CHG1 0x72 + +/*----- BOOST Registers -----*/ +#define BST_CTL0 0x78 +#define BST_CTL1 0x79 + +/*------ PMU Registers ------*/ +#define PMU_CTL0 0x80 +#define PMU_CTL1 0x81 +#define PMU_CTL3 0x83 +#define PMU_CTL6 0x86 +#define PMU_CTL7 0x87 +#define PMU_CTL8 0x88 +#define PMU_CTL9 0x89 + +/*------ CMU Registers ------*/ +#define HOSC_CTL 0x8B + +/*------ Misc Registers -----*/ +#define CHIP_ID 0x8D +#define CHIP_VER 0x8E + + +//------------------------- SFR Registers ---------------------------- +/*--- BYTE Register ---*/ +sfr P0 = 0x80; +sfr P1 = 0x90; +sfr P2 = 0xA0; +sfr P3 = 0xB0; +sfr PSW = 0xD0; +sfr ACC = 0xE0; +sfr B = 0xF0; + +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr DPL1 = 0x84; +sfr DPH1 = 0x85; +sfr WDTREL = 0x86; +sfr PCON = 0x87; +sfr TCON = 0x88; +sfr TMOD = 0x89; +sfr TL0 = 0x8A; +sfr TL1 = 0x8B; +sfr TH0 = 0x8C; +sfr TH1 = 0x8D; +sfr CKCON = 0x8E; +sfr DPSEL = 0x92; +sfr ASKCTL0 = 0x96; +sfr ASKDATA = 0x97; +sfr S0CON = 0x98; +sfr S0BUF = 0x99; +sfr IEN2 = 0x9A; +sfr S1CON = 0x9B; +sfr S1BUF = 0x9C; +sfr S1RELL = 0x9D; + +sfr16 ADC_DAT = 0xA1; +sfr ADC_DATL = 0xA1; +sfr ADC_DATH = 0xA2; +sfr ADC_OFFSET = 0xA3; +sfr ADC_CTL1 = 0xA5; + +sfr IEN0 = 0xA8; +sfr IP0 = 0xA9; +sfr S0RELL = 0xAA; + +sfr REG_CHG1 = 0xB1; +sfr REG_CHG2 = 0xB2; +sfr CHG_CTL = 0xB3; + +sfr BST_EN = 0xB5; + +sfr VOX_CTL0 = 0xB7; + +sfr IEN1 = 0xB8; +sfr IP1 = 0xB9; +sfr S0RELH = 0xBA; +sfr S1RELH = 0xBB; +sfr IRCON2 = 0xBF; +sfr IRCON = 0xC0; +sfr CCEN = 0xC1; +sfr CCL1 = 0xC2; +sfr CCH1 = 0xC3; +sfr CCL2 = 0xC4; +sfr CCH2 = 0xC5; +sfr CCL3 = 0xC6; +sfr CCH3 = 0xC7; +sfr T2CON = 0xC8; +sfr CRCL = 0xCA; +sfr CRCH = 0xCB; +sfr TL2 = 0xCC; +sfr TH2 = 0xCD; + +sfr CLKPRE = 0xD2; +sfr RSTCON = 0xD3; +sfr KEY_CTL = 0xD7; + +sfr ADCON = 0xD8; + +sfr RST_FLAG = 0xE1; +sfr CHIP_STA0 = 0xE2; +sfr CHIP_STA1 = 0xE3; +sfr CHIP_STA2 = 0xE4; +sfr CHIP_STA3 = 0xE5; +sfr CHIP_STA4 = 0xE6; + +sfr IRQ_FLAG0 = 0xE8; +sfr IRQ_FLAG1 = 0xE9; +sfr IRQ_FLAG2 = 0xEA; +sfr IRQ_FLAG3 = 0xEB; +sfr IRQ_FLAG4 = 0xEC; +sfr IRQ_FLAG7 = 0xEF; +sfr IRQ_FLAG9 = 0xF2; +sfr IRQ_FLAG10 = 0xF3; + +sfr SRST = 0xF7; + +sfr WKUP_FLAG0 = 0xF6; +sfr WKUP_FLAG1 = 0xF8; +sfr WKUP_FLAG3 = 0xFA; + +sfr SFRADDR = 0xFE; +sfr SFRDATA = 0xFF; + +/*--- BIT Register ---*/ +/* PSW */ +sbit CY = 0xD7; +sbit AC = 0xD6; +sbit F0 = 0xD5; +sbit RS1 = 0xD4; +sbit RS0 = 0xD3; +sbit OV = 0xD2; +sbit P = 0xD0; + +/* TCON */ +sbit TF1 = 0x8F; +sbit TR1 = 0x8E; +sbit TF0 = 0x8D; +sbit TR0 = 0x8C; +sbit IE1 = 0x8B; +sbit IT1 = 0x8A; +sbit IE0 = 0x89; +sbit IT0 = 0x88; + +/* T2CON */ +sbit T2PS = 0xCF; +sbit I3FR = 0xCE; +sbit I2FR = 0xCD; +sbit T2R1 = 0xCC; +sbit T2R0 = 0xCB; +sbit T2CM = 0xCA; +sbit T2I1 = 0xC9; +sbit T2I0 = 0xC8; + +/* S0CON */ +sbit SM0 = 0x9F; +sbit SM1 = 0x9E; +sbit SM20 = 0x9D; +sbit REN0 = 0x9C; +sbit TB80 = 0x9B; +sbit RB80 = 0x9A; +sbit TI0 = 0x99; +sbit RI0 = 0x98; + +/* IEN0 */ +sbit EAL = 0xAF; +sbit WDT = 0xAE; +sbit ET2 = 0xAD; +sbit ES0 = 0xAC; +sbit ET1 = 0xAB; +sbit EX1 = 0xAA; +sbit ET0 = 0xA9; +sbit EX0 = 0xA8; + +/* IEN1 */ +sbit EXEN2 = 0xBF; +sbit SWDT = 0xBE; +sbit EX6 = 0xBD; +sbit EX5 = 0xBC; +sbit EX4 = 0xBB; +sbit EX3 = 0xBA; +sbit EX2 = 0xB9; +sbit EX7 = 0xB8; + +/* IRCON */ +sbit EXF2 = 0xC7; +sbit TF2 = 0xC6; +sbit IEX6 = 0xC5; +sbit IEX5 = 0xC4; +sbit IEX4 = 0xC3; +sbit IEX3 = 0xC2; +sbit IEX2 = 0xC1; +sbit IADC = 0xC0; + +/* ADCON */ +sbit BD = 0xDF; + +/* P0 */ +sbit P00 = P0^0; +sbit P01 = P0^1; +sbit P02 = P0^2; +sbit P03 = P0^3; +sbit P04 = P0^4; +sbit P05 = P0^5; +sbit P06 = P0^6; +sbit P07 = P0^7; + +/* P1 */ +sbit P10 = P1^0; + +#endif + diff --git a/UsrInc/key/key.h b/UsrInc/key/key.h new file mode 100644 index 0000000..2dbf452 --- /dev/null +++ b/UsrInc/key/key.h @@ -0,0 +1,49 @@ +/* + ****************************************************************************** + * + * @file key.h + * @brief key module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __KEY_H__ +#define __KEY_H__ + +#include "define.h" + +#if 1 + +extern bit Key_Press_short_irq; +extern bit Key_Press_l_irq; +extern bit Key_Press_ll_irq; + +extern bit Key_l_Flag; + +typedef enum { + KEY_EVENT_Empty = 0x00, + KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag + KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag + KEY_EVENT_LL_8S, //Key super long press for 8s interrupt flag +}KEY_EVENT_E; + + +extern idata KEY_EVENT_E Event_key; + +extern void Key_Handler(void ); + +#endif + +#endif + diff --git a/UsrInc/led/led.h b/UsrInc/led/led.h new file mode 100644 index 0000000..4e6db98 --- /dev/null +++ b/UsrInc/led/led.h @@ -0,0 +1,118 @@ +/* + ****************************************************************************** + * + * @file led.h + * @brief led dispaly module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __LED_H__ +#define __LED_H__ + +#include "define.h" + +#ifdef LED_DISPLAY + +#ifdef _DEBUG_LED +#define _DEBUG_LED_1 +#define _DEBUG_LED_2 +#endif + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +sbit pin_LED_1 = P0^3; + +// LED˿ڶ +#define LEDR_ON() pin_LED_1 = 1 //LED_1_ON() p03 +#define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF() +#define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN() + +#define LED_PLUS_TIME 1 //LED˸Сʱڵλms + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ + +extern idata uint8_t Display_Sta; // ʾ״̬ + +//LED״̬ +enum LED_STATE +{ + LED_OFF, + LED_ON, + LED_FLASH, +// LED_KEEP_FLASHING, +}; + +//LEDƽṹ +typedef struct{ + + uint8_t State;//LED Ĺ״̬ + uint8_t Flash_Duty;//LEDռձȣʱ + uint8_t Flash_Period;//LED + uint8_t Flash_Times;//˸ + uint8_t Timer;//ʱ 1msһ + +}TS_LED_INFO; + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +//extern void LED_Init(void); +/******************************************************************************/ + +/* +* : LED_Clr +* : ϨȫLED +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Drv(void); +/******************************************************************************/ +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(λms) / Times:˸ +* ֵ : NONE +*/ +/******************************************************************************/ +extern void LED_Set(uint8_t State,uint8_t Period,uint8_t Times); +/******************************************************************************/ + +// ⲿӿ;Fre:˸ڣms;n:˸ +#define LED_R_ON() LED_Set(LED_ON, 0,0) +#define LED_R_OFF() LED_Set(LED_OFF, 0,0) +#define LED_R_FLASH(Fre,n) LED_Set(LED_FLASH, Fre,n) +#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_FLASH, Fre,0xff) + +//#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_KEEP_FLASHING, Fre,0) + +//------------------------------------------------------------------------------ +#endif + + +#endif + diff --git a/UsrInc/sleep/sleep.h b/UsrInc/sleep/sleep.h new file mode 100644 index 0000000..a52f574 --- /dev/null +++ b/UsrInc/sleep/sleep.h @@ -0,0 +1,35 @@ +/* + ****************************************************************************** + * + * @file sleep.h + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/07/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ +#ifndef __SLEEP_H__ +#define __SLEEP_H__ + +#include "define.h" + +#if SLEEP_ENABLE + +extern uint8_t Decnt_SleepDelay; +extern bit Enter_Sleep_Cnt_Restart_Flag; + +extern bit Check_Require_Sleep(void); + +#endif + +#endif + diff --git a/UsrInc/system/system.h b/UsrInc/system/system.h new file mode 100644 index 0000000..e81d8dc --- /dev/null +++ b/UsrInc/system/system.h @@ -0,0 +1,40 @@ +/* + ****************************************************************************** + * + * @file system.h + * @brief system module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __SYSTEM_H__ +#define __SYSTEM_H__ + +#include "define.h" + +#define Interrupt_Vector_IE0 0 //0x03,TP3310 IE0 use for wakeup +#define Interrupt_Vector_TF0 1 //0x0B,Timer 0 Overflow +#define Interrupt_Vector_TF1 3 //0x1B,Timer 1 Overflow +#define Interrupt_Vector_RI_TI 4 //0x23,Serial Port0 Interrupt +#define Interrupt_Vector_IE7 8 //0x43,Charger Interrupt +#define Interrupt_Vector_IE2 9 //0x4B,External Interrupr 2/VOX Interrupt +#define Interrupt_Vector_IE3 10 //0x53,External Interrupr 3/ϵͳ쳣жϡԴж +#define Interrupt_Vector_IE4 11 //0x5B,External Interrupr 4/keyHallж +#define Interrupt_Vector_IE5 12 //0x63,NA +#define Interrupt_Vector_IE6 13 //0x6B,ADCж + +extern void System_Init(void); + +#endif + diff --git a/UsrInc/timer/sys_tim.h b/UsrInc/timer/sys_tim.h new file mode 100644 index 0000000..e4e9542 --- /dev/null +++ b/UsrInc/timer/sys_tim.h @@ -0,0 +1,59 @@ +/* + ****************************************************************************** + * + * @file sys_tim.h + * @brief system timer module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __sys_tim_H__ +#define __sys_tim_H__ + +#include "define.h" + +//#define FOSC 11059200L + +#define T1MS 1000 +#define T100uS 100 +#define T10MS 10000 //FOSC/12/100 + +#define T10MS_DEBOUNCE_1S 100 //10msڶʱ1s + +#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2 +//extern void Sys_Tim0_Init(void ); + +#if TIMER1_ENABLE + +#define C_TIM1_Reload (65535 - T1MS) //1ms + +extern bit F_sys_tim1_tick; +extern void Sys_Tim1_Init(void ); + +#endif + +extern bit F_sys_tim_5ms; +extern bit F_sys_tim_10ms; +extern bit F_sys_tim_250ms; +extern bit F_sys_tim_100ms; +extern bit F_sys_tim_1s; + +//#ifdef VOX_TX_RST_PATTERN +extern bit BES_Puls_Start; +//#endif + +extern void Sys_Tim_Handler(void ); + +#endif + diff --git a/UsrInc/uart/uart.h b/UsrInc/uart/uart.h new file mode 100644 index 0000000..f38ac60 --- /dev/null +++ b/UsrInc/uart/uart.h @@ -0,0 +1,72 @@ +/* + ****************************************************************************** + * + * @file uart.h + * @brief uart module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __UART_H__ +#define __UART_H__ + +#include "define.h" + +#define Baud_Rate0 115200//9600//19200//38400//93750 +#define S0REL_VALUE (1024-375000/Baud_Rate0) + +#ifdef _DEBUG_ALL + +extern char putchar (char ch); + +#endif + +#if UART0_ENABLE + +#ifdef VOX_RX + +#define COM0_Data_Lenth 11 + + +#if defined(QIANCHENG) //ة + +#define COM0_Data_Lenth 11 + +#elif defined(ZHONGKELANXUN) //пѶ + +#define COM0_Data_Lenth 16 + +#elif defined(XIAOMI) + +#define COM0_Data_Lenth 64 + +#endif + +extern idata uint8_t RX0_Buffer[COM0_Data_Lenth]; //ջ + +extern bit Uart0_RX_Finish_Flag; + +#endif + +//extern void UART0_Init(void); + +extern void Uart0SendData(uint8_t Txdata); +#ifdef VOX_TX + +extern void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf); +#endif +#endif + +#endif + diff --git a/UsrInc/userapp/userapp.h b/UsrInc/userapp/userapp.h new file mode 100644 index 0000000..3606d72 --- /dev/null +++ b/UsrInc/userapp/userapp.h @@ -0,0 +1,48 @@ +/* + ****************************************************************************** + * + * @file userapp.h + * @brief userapp module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __USERAPP_H__ +#define __USERAPP_H__ + +#include "define.h" +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define BAT_LEVEL_LOW 20 //صͱֵ +#define LED_ON_CNT 40 //4s + +/******************************************************************************\ + Typedef definitions +\******************************************************************************/ + +/******************************************************************************\ + Global variables and functions +\******************************************************************************/ + + +extern uint8_t LED_On_Timer; //ledʱʱ +//extern uint8_t LED_On_Timer1; //ledʱʱ + +extern bit led_blink_1time_flag; + +extern void UserAPP(void); + +#endif + diff --git a/UsrInc/vox/vox_module.h b/UsrInc/vox/vox_module.h new file mode 100644 index 0000000..b687310 --- /dev/null +++ b/UsrInc/vox/vox_module.h @@ -0,0 +1,266 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.h + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#ifndef __VOX_MODULE_H__ +#define __VOX_MODULE_H__ + +#include "define.h" + +/*ѡ*/ +//#define QIANCHENG //ة +//#define ZHONGKELANXUN //пѶ +#define XIAOMI //С + +/*汾Ϣ*/ +#if defined(QIANCHENG) //ة + +#define FW_VER 0x01 //汾 + +#elif defined(XIAOMI) +/*Ӳ汾Ϣ*/ +#define HW_VER 0x01 //Ӳ汾ϢΧ0-9 + +#define FW_VER 0x001 //汾 + +#endif + +extern bit Vox_Vout_Enable; +sbit COM_CTRL = P0^2; + +#if VOX_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +/* +VOXλãϵͳʼ(Vox_init())ͨVOX_CON0 + +SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA +SFRDATA &= 0xE0; +SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; + +*/ +#define VOX_IOUT_200MA 0x00 +#define VOX_IOUT_300MA 0x01 +#define VOX_IOUT_400MA 0x02 +#define VOX_IOUT_500MA 0x03 + +#define VOX_ADT_Cur_0_5UA 0x00 +#define VOX_ADT_Cur_1_5UA 0x01 +#define VOX_ADT_Cur_2_5UA 0x02 +#define VOX_ADT_Cur_3_5UA 0x03 +#define VOX_ADT_Cur_4_5UA 0x04 +#define VOX_ADT_Cur_5_5UA 0x05 +#define VOX_ADT_Cur_6_5UA 0x06 +#define VOX_ADT_Cur_7_5UA 0x07 + +#define Vox_TX_Interval 2 //Voxʱָʱ + +#if defined(QIANCHENG) //ة + +#define BOXHEADER 0x5A //VOXͨѶ->ݰͷ +#define BESHEADER 0xA5 //VOXͨѶ->ݰͷ + +extern uint8_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#elif defined(ZHONGKELANXUN) //пѶ + +#define BOXHEADER 0x55AA +#define BOXIDCODE 0xFF + +#elif defined(XIAOMI) + +#define BOXHEADER 0xAA + +extern uint16_t Vox_TX_Timer; //VOXָʱ,Hall_Handler0. + +#endif + +#define TIM_SHUTDOWN_DEBOUNCE 600 //ػǰdebounceʱ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +/*ͨѡ*/ +#if defined(QIANCHENG) //ة + + typedef enum { + VOL_CHAN = 0, + VOR_CHAN, + VOX_BOTH, + }e_Vox_Chan; + +#elif defined(ZHONGKELANXUN) //пѶ + + typedef enum { + VOL_CHAN = 0x11, + VOR_CHAN = 0x22, + VOX_BOTH = 0xff, + }e_Vox_Chan; + +#elif defined(XIAOMI) //пѶ + +#define TWS_VOL 0x04 +#define TWS_VOR 0x05 +#define TWS_BOX 0x02 +#define TWS_PC 0x03 + +#define VOL_TYPE 0x00 +#define VOR_TYPE 0x01 + + typedef enum { + VOL_CHAN = 0x24, + VOR_CHAN = 0x25, + VOX_BOTH = 0x21, + }e_Vox_Chan; + +#endif + +#if 1 + /*״̬*/ + typedef enum { + VOX_PAIR_NONE = 0, //Ч + VOX_PAIR_ING, // + VOX_PAIR_OK, // + VOX_PAIR_KEEP, //ֵǰ״̬ + }e_Vox_Pairing_State; + + /*Լ¼*/ + typedef enum { + VOX_PAIRED_NONE = 0, //Թ + VOX_PAIRED_OK, //Լ¼ + }e_Vox_Paired_State; +#endif + + /*ͳֽ˫ͨѶЭID*/ +#if defined(QIANCHENG) //ة + + typedef enum _VOX_BES_COMMAND_E + { + CMD_BOX_OPEN = 0x00, //ָ + CMD_BOX_CLOSE = 0x01, //ظָ + CMD_SHUT_DOWN = 0x03, //ػ + CMD_BES_PAIRING = 0x04, // + //CMD_BES_CLEAN = 0x05, //˫¼ + //CMD_BES_HEARTBEAT = 0x07, // + // CMD_OTA = 0x09, + BES_RESET, + + }VOX_BES_COMMAND_E; + +#elif defined(ZHONGKELANXUN) //пѶ + +typedef enum _VOX_BES_COMMAND_E +{ + VHOUSE_CMD_GET_VBAT = 0x01, //ȡصҲΪʼ־ + VHOUSE_CMD_PAIR, //ַϢ + VHOUSE_CMD_GET_TWS_BTADDR, //ȡԶַϢʹñΪԶ໥תֻת棬յcopyһֻԶɡ + VHOUSE_CMD_CLEAR_PAIR, //Ϣ + VHOUSE_CMD_PWROFF, //ػϢ + VHOUSE_CMD_ERR, //Ϣ + VHOUSE_CMD_SUCCESS, //ɹӦ + VHOUSE_CMD_CLOSE_WINDOW, //ظ + VHOUSE_CMD_OPEN_WINDOW, // + VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //ظǻȡ + + VHOUSE_CMD_ENABLE_POPUP = 0x80, //صܿ + + VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //ͻָ + VHOUSE_CMD_CUSTOM_RESV_END = 0xEF, + + VHOUSE_CMD_SYS_RST = 0xFF, //ϵͳλָ + +}VOX_BES_COMMAND_E; + +#elif defined(XIAOMI) + + typedef enum _VOX_BES_COMMAND_E + { + CMD_SHUT_DOWN = 0x0005, //ػ + CMD_TWS_PAIR = 0x0037, // + CMD_TWS_BTADDR_EXCH = 0x000A, //ַ + CMD_CLEAR_PAIR = 0x000B, //Լ¼ + CMD_HEARTBEAT = 0x000D, // + CMD_SN = 0x000E, //дSN뵽 + CMD_GET_INTO_PAIR = 0x000F, //״̬ + CMD_PAIRING_IMD = 0x0011, //ִTWS + + BES_RESET, //λPattern + + }VOX_BES_COMMAND_E; + +#endif + +#if 0 +/*VOXͶͨѶָID*/ +typedef enum { + OPEN_COVER = 0x00, + CLOSE_COVER, + BES_RESET, + SHUT_DOWN +} VOX_Comm_ID_e; +#endif +/* VOL Enable Type */ +typedef enum { + + VOX_VOUT_Mode = 0x00, //VOx 5V ʹ + VOX_ADT_Mode, //VOx ؽ롢ʶʹܣԶʶ + +} VOX_Enable_Mode_e; + + +extern uint16_t Boost_Open_Atleast_Tim_Cnt; +extern uint8_t Vox_Pairing_State[2]; //״̬VOL:4bitVOR:4bit0Ч1ԣ2Գɹ3ֵǰ״̬ +extern bit Cover_Open_Flag; + +#if defined(XIAOMI) + +extern idata uint8_t Random_Data[8]; + +extern idata uint8_t Bes_Bet_Level[2]; //ԶصϢBes_Bet_Level[0]Bes_Bet_Level[1]Ҷ +extern idata uint8_t Bes_Chg_Full[2]; //ԶӲǷ磺0磻1硣 +extern idata uint8_t Tws_Paired_Record[2]; //TWSԼ¼0TWSԼ¼1ûTWSԼ¼ +extern idata uint8_t Phone_Paired_Record[2]; //ֻԼ¼0ֻԼ¼1ûкֻԼ¼ +extern idata uint8_t Bes_OTA_State[2]; //Ĭ״̬1У0û +extern idata uint8_t Bes_Set_SN_State[2]; //ӦдSNǷɹ1ɹ0ʧ +extern idata uint8_t Bes_In_Pair_State[2]; //״̬־λ + +extern idata uint8_t SN_Num[22]; //SN룬ҪOTPĹ̶λûȡ +extern uint8_t SN_Num_Start; //SN뷢ʼλãпǶʱ㡣 +extern bit gShip_Mode_Flag; //ģʽ־λ0ػ1ģʽ + +#endif + +//extern uint8_t Box_To_Bes_Comm_Debounce; + + /******************************************************************************\ + UserCfg.Functions definitions + \******************************************************************************/ + +extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); +extern void Vox_Det_Machine(void); + +#ifdef VOX_RX +extern void HandleVoxCommMsg(void); +#endif + +#endif + +#endif + diff --git a/UsrInc/watchdog/watchdog.h b/UsrInc/watchdog/watchdog.h new file mode 100644 index 0000000..46c1208 --- /dev/null +++ b/UsrInc/watchdog/watchdog.h @@ -0,0 +1,51 @@ +/* + ****************************************************************************** + * + * @file watchdog.h + * @brief watchdog module + * + * + * @version 1.0 + * @date 2023/05/12 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/07/12 Alex build this file + ****************************************************************************** + */ + +#ifndef __WATCHDOG_H__ +#define __WATCHDOG_H__ + +#include "define.h" + +#if 0 + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +#define _WDT_TIME_65ms_ 0 +#define _WDT_TIME_1s_ 1 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + +/******************************************************************************\ + UserCfg.Functions definitions +\******************************************************************************/ + +extern void Watchdog_Clear(void); +extern void Watchdog_Init(uint8_t watchdog_time ); + +#endif + +#endif + diff --git a/UsrSrc/adc/adc.c b/UsrSrc/adc/adc.c new file mode 100644 index 0000000..09c663c --- /dev/null +++ b/UsrSrc/adc/adc.c @@ -0,0 +1,173 @@ +/* + ****************************************************************************** + * + * @file adc.c + * @brief adc module + * @ic TP3102 + * + * @version 1.0 + * @date 2024/03/26 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "adc.h" +#include "system.h" +#include "sys_tim.h" + +#if ADC_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +idata uint16_t Vbat_Adc = 0; + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* +******************************************************************************* +* uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) +* +* Description : ȡӦͨĵѹADCֵ +* +* Arguments : NONE + +* Returns : adc Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ + +uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn) +{ + uint8_t index = 0; + uint16_t adc_data = 0; + uint16_t adc_plus_data = 0; + + SFRADDR = ADC_CTL0; + SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k + + for(index=0; index<8; index++) + { + ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion + + while(ADC_CTL1 & 0x01); //Wait for conversion complete + + adc_data = ADC_DATL; //Read low byte first! Lock ADC Value. + + adc_data |= (uint16_t)(ADC_DATH << 8); + + adc_plus_data += adc_data; +#ifdef _DEBUG_ADC + printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data); +#endif + // adc_data = 0; + } + + adc_data = adc_plus_data >> 3; + +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data); +#endif + + return adc_data; +} + +/* + ******************************************************************************* + * uint16_t Vbat_Value(void) + * + * Description : Vbat Value.ȡصѹ + * + * Arguments : NONE + + * Returns : Vbat Value (mV) + + * Notes : NONE + * + ******************************************************************************* + */ + uint16_t Vbat_Value(void) + { + uint16_t n_Vbat_Data = 0; + //uint16_t n_ADC_Plus = 0; + + n_Vbat_Data = ADC_Chn_Data(ADC_BAT); + +#ifdef _DEBUG_ADC + printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + +// n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //ȡVREF + + n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("bat,Vbat:%d.\r\n",(uint16_t)n_Vbat_Data); +#endif + + return n_Vbat_Data; + } + +/* +******************************************************************************* +* uint16_t ADC_NTC_Value(void) +* +* Description : ȡNTCѹ + +* Arguments : NONE + +* Returns : ADC Value (mV) + +* Notes : NONE +* +******************************************************************************* +*/ +#ifdef ADC_NTC_ENABLE + +uint16_t ADC_NTC_Value(void) +{ + uint16_t adc_data = 0; +// uint16_t adc_plus_data = 0; + + adc_data = ADC_Chn_Data(ADC_CH4); + +#ifdef _DEBUG_ADC + printf("adc_chn1:%d.\r\n",(uint16_t)adc_data); +#endif +// adc_plus_data = ADC_Chn_Data(ADC_VREF); //ȡVREF + + adc_data = (uint32_t)(adc_data) * VREF / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref + +#ifdef _DEBUG_ADC + printf("Adc,Vadc:%d.\r\n", (uint16_t)adc_data); +#endif + + return adc_data; +} +#endif + + +#endif + diff --git a/UsrSrc/bat/bat.c b/UsrSrc/bat/bat.c new file mode 100644 index 0000000..56931f8 --- /dev/null +++ b/UsrSrc/bat/bat.c @@ -0,0 +1,137 @@ +/* + ****************************************************************************** + * + * @file bat.c + * @brief Voltage-based RC model gauge algorithm + * + * + * @version 1.0 + * @date 2023/02/20 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/02/20 Alex build this file + ****************************************************************************** + */ +#include "bat.h" +#include "adc.h" + +idata uint8_t bat_level = 0; +bit F_batlevel_low = 0; //صѹ + +#if BAT_VALUE + +#define C_offset_bat_level_MAX 50 +#define C_offset_bat_level_MIN 10 + +#define C_bat_level_protect 0 +#define C_bat_level_lowpower 1 + + +//bit F_batlevel_protect = 0; //͵籣 +idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + + +#define C_batLevel_SetMax 10 + +/*صѹḡ,ѹҪԡ*/ +const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] = +{ + 3000, //1 + 3100, //2 + 3300, //3 + 3400, //4 + 3500, //5 + 3650, //6 + 3800, //7 + 3900, //8 + 4050, //9 + 4200 //10 +}; +#if 0 +const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] = +{ + 3050, //1 + 3150, //2 + 3350, //3 + 3450, //4 + 3550, //5 + 3700, //6 + 3850, //7 + 3950, //8 + 4100, //9 + 4200 //10 +}; +#endif +void check_bat_level(void) +{ + uint8_t i = 0; + //get bat level +#if ADC_ENABLE + for(i=0; i < C_batLevel_SetMax; i++) + { + #if 0 + + if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + { + break; + } + + #else + if(CHIP_STA4 & 0x80) // + { + if( Vbat_Adc < Boost_batlevel_Threshold[i] + 50 ) + break; + } + else //ŵ + { + if( Vbat_Adc < Boost_batlevel_Threshold[i] ) + { + break; + } + } + #endif + } +#endif + + if( i > bat_level ) + { + offset_bat_level++; + } + else + { + offset_bat_level--; + } + + //debounce + if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) ) + { + //update + bat_level = i; + offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; + } + #if 0 + if( bat_level <= C_bat_level_protect ) + { + F_batlevel_protect = 1; + } + else if( bat_level > ( C_bat_level_protect + 1 ) ) + { + F_batlevel_protect = 0; + } + #endif + if( bat_level <= C_bat_level_lowpower ) + { + F_batlevel_low = 1; + } + else if( bat_level > (C_bat_level_lowpower + 1) ) + { + F_batlevel_low = 0; + } +} + +#endif diff --git a/UsrSrc/charger/charger_module.c b/UsrSrc/charger/charger_module.c new file mode 100644 index 0000000..523b788 --- /dev/null +++ b/UsrSrc/charger/charger_module.c @@ -0,0 +1,289 @@ +/* + ****************************************************************************** + * + * @file charger_module.c + * @brief charger module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "charger_module.h" +#include "adc.h" +#include "sys_tim.h" +#include "discharge_module.h" +#include "system.h" +#include "vox_module.h" +#include "led.h" + +bit Charger_Done = 0; + +#if CHARGER_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ +#define NTC_PRO_DEBOUNCE_TIM 10 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +//idata TE_CHG_STA ChgStatus; // ϵͳ״̬ + + + +#ifdef ADC_NTC_ENABLE + +bit NTC_Low_Pro_Flag = 0; +bit NTC_High_Pro_Flag = 0; + +#endif +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Charger_init(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Init(void) +{ + SFRADDR = PMU_CTL1; + SFRDATA |= 0x07; //صѹ enable źţصѹ⵵λѡ3.3V + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * void Charger_Current_Set(void) + * + * Description : Charger Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Charger_Current_Set(void) +{ + uint16_t Charger_CurADC_Value = 0; + /* ͨⲿADC1ֵóֵ */ + Charger_CurADC_Value = ADC_Chn_Value(ADC_CH1); + + + /* Setting CV */ + REG_CHG2 = 0x00; //0:4.20V;1:4.35V + /* Setting CHG Current */ + REG_CHG1 = 0x03; //000:100mA;001:200mA;010:250mA;011:300mA;100:350mA;101:400mA;110:450mA;111:500mA + +} +#endif + +/* + ******************************************************************************* + * uint8_t Charger_NTC_Control(uint8_t Charge_sta) + * + * Description : Charger NTC Control + * NTC ֧ 103 104 裬NTC ¶ȼͨ ADC ɼ NTC ŵѹ + * ֵ֧¶ȼԻֵ֧Ʒ 103 NTC Ҫһ 8.2k + + * 裨20uA 103 NTC Ҫ 10k 裩104 NTC 82k 衣 + * ʹܳǰȼNTC ¶ȣ NTC գ NTC ܣ + * NTC 0Vرճͷŵ硣NTC رճ磬 + * ¶Ȼָ 100msټ硣 + * + * Arguments : NTC_Protect_Type_e NTC_Type:Shield JEITA or IEC;Charge_sta:Charge or not + + * Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC) + + * Notes : NONE + * + ******************************************************************************* + */ + #ifdef ADC_NTC_ENABLE +uint8_t PMU_NTC_Control(void) +{ + uint16_t NTC_Adc = 0; + uint8_t NTC_Flag = TRUE; + + NTC_Adc = ADC_NTC_Value(); + + if(NTC_Adc >= 3700) ////NTCܣNTCգ NTC ܣ + { + return TRUE; + } + + if(CHIP_STA4 & 0x80) + { + if(NTC_Adc <= T_0C && NTC_Adc > T_45C) // + { + if(NTC_Low_Pro_Flag) + { + if( NTC_Adc < T_3C ) + { + NTC_Low_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + + if(NTC_High_Pro_Flag) + { + if( NTC_Adc > T_42C ) + { + NTC_High_Pro_Flag = 0; + NTC_Flag = TRUE; + } + else + { + NTC_Flag = FALSE; + } + } + } + else //쳣 + { + + if(NTC_Adc > T_0C) + { + NTC_Low_Pro_Flag = 1; + } + else + if(NTC_Adc < T_45C) + { + NTC_High_Pro_Flag = 1; + } + + CHG_CTL &= ~0x01; //Disable Charger. + + NTC_Flag = FALSE; + } + } + + return NTC_Flag; +} +#endif +/* + ******************************************************************************* + * void Charger_Handler(void) + * + * Description : Charger Handle. ---- ̳˸ NTC ̬ڳͽֹѹ⣬Ӳơ + 쳣ӲӦͱ־λԽӦ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + /* +1糬ʱ糬ʱرճʹܣȴVINγ +*/ +void Charger_Handler(void) +{ +#if 1 + if( !(CHIP_STA4 & 0x80) ) //δ⵽Power good,رChargerʹܺ󷵻ء + { + CHG_CTL &= ~0x01; //Disable Charger + IRQ_FLAG9 = 0x10; //δ磬Charg complete interruptж + Charger_Done = 0; + return; + } + + /*ֻ糬ʱʱҪVBUS²κ¿ʼCharger̡*/ + if ( IRQ_FLAG9 & 0x0C ) //糬ʱ,Tricle charg and Fast charge timeout + { + CHG_CTL &= ~0x01; //Disable Charger + if ( IRQ_FLAG10 & 0xC0 ) //Plugin\Plugout interrupt + { + IRQ_FLAG9 = 0x0C; + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + return; + } + else /*δʱPlugPlugin\Plugout int*/ + { + if( IRQ_FLAG10 & 0xC0 ) + { + IRQ_FLAG10 = 0xC0; //Clear Plugin\Plugout interrupt + } + } + +#ifdef ADC_NTC_ENABLE + /*NTC Handle*/ //ʹChargerǰȼNTC¶ȣ쳣Ͳ硣(CHIP_STA4 & 0x80):PG + if( PMU_NTC_Control() == FALSE ) //NTC硣 + { + return; + } +#endif + + if( IRQ_FLAG9 & 0x10 ) //Charg complete interrupt + { +#if ADC_ENABLE + +#ifdef _DEBUG_CHARGER + printf("Chg Done\r\n"); +#endif + if( Vbat_Adc < BAT_RECHARG ) + { + //CHG_CTL |= 0x01; //Enable Charger + IRQ_FLAG9 = 0x10; +#ifdef _DEBUG_CHARGER + printf("En Chg\r\n"); +#endif + } + else + { + CHG_CTL &= ~0x01; //Disable Charger +#ifdef _DEBUG_CHARGER + printf("Dis Chg\r\n"); +#endif + } + Charger_Done = 1; + +#endif + } + else + { + CHG_CTL |= 0x01; //Enable Charger + Charger_Done = 0; + } +#endif +} + +#endif + diff --git a/UsrSrc/discharge/discharge_module.c b/UsrSrc/discharge/discharge_module.c new file mode 100644 index 0000000..1f92a24 --- /dev/null +++ b/UsrSrc/discharge/discharge_module.c @@ -0,0 +1,189 @@ +/* + ****************************************************************************** + * + * @file discharge_module.c + * @brief discharge module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +#include "discharge_module.h" +#include "vox_module.h" +#include "adc.h" +#include "charger_module.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" + +bit gBoost_Prepared_Flag = 0; //Boost㿪 + +#if DISCHARGE_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + + +bit gBoost_UVLO_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +#if 0 +/* +******************************************************************************* +* void DisCharge_Boost_Open(void) +* +* Description : Boost Open +* VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ +* ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + void DisCharge_Boost_Open(void) +{ + if( gBoost_Prepared_Flag ) //Boost㿪 + { + BST_EN = 1; //Boost Enable쳣ʱӲرա + +#ifdef _DEBUG_DISCHARGE + printf("Bst Open\r\n"); +#endif + } +} + +/* +******************************************************************************* +* void DisCharge_Boost_Close(void) +* +* Description : Boost CloseҪdz쳣ʱӲرգڵLOW״̬£ǷҪرboost +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + void DisCharge_Boost_Close(void) + { + if( (BST_EN & 0x01) && gBoost_Prepared_Flag ) + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + +#ifdef _DEBUG_DISCHARGE + printf("Bst Close\r\n"); +#endif + } + } +#endif +/* +******************************************************************************* +* void DisCharge_Handler(void) +* +* Description : Boostŵıܰ· UVLO ŵ± +* +* Arguments : + +* Returns : + +* Notes : +* +******************************************************************************* +*/ + +void DisCharge_Handler(void) +{ + /*ŵ --- Ӳʵ*/ +#if 0 + gBoost_Prepared_Flag = 1; +#else + /*± --- Ӳʵ*/ + if( CHIP_STA3 & 0x02 ) + { + gBoost_Prepared_Flag = 0; + return; + } + + /*Boost Input UVLO Ӳʵ*/ + if( (CHIP_STA0 & 0x80) ) //־λ + { + gBoost_Prepared_Flag = 0; + gBoost_UVLO_Flag = 1; + return; + } + + /*· (ʹжϱ־λBoost·жϷ棬Ҫд1㡣)-- ·һֱûߴBOOST_HICCUP_TIM֮disable boostʱ 250msʵ֣*/ + if( IRQ_FLAG0 & 0x01 ) + { +#ifdef _DEBUG_DISCHARGE + printf("Boost Pro Output Short!\r\n"); +#endif + gBoost_Prepared_Flag = 0; + + //һֱ + if( F_sys_tim_250ms ) + { + F_sys_tim_250ms = 0; + IRQ_FLAG0 = 0x01; + + BST_EN = 1; //250msʱһBoost + } + return; + } + + gBoost_Prepared_Flag = 1; + +#if ADC_ENABLE + /* + VIN ʱBoost ڵصѹ UVLOӲر 2.8/3.0VӲ boost ʹܡ + ʵ֣ VIN3.6V VIN3.3V͵شڵ²ܿ + ֻ VIN3.6Vboost VIN3.3Vboost߼ + ֻעVINʱUVLOָBoostVINӲ + */ + if ( gBoost_UVLO_Flag ) + { + if( CHIP_STA4 & 0x80 ) //Power GOOD + { + if( Vbat_Adc >= OPEN_BOOST_VIN ) + { + gBoost_Prepared_Flag = 1; + gBoost_UVLO_Flag = 0; + } + else + { + BST_EN = 0; //Boost Disable + gBoost_Prepared_Flag = 0; + } + } + } + +#endif +#endif +} + +#endif + diff --git a/UsrSrc/gpio/gpio.c b/UsrSrc/gpio/gpio.c new file mode 100644 index 0000000..16995ec --- /dev/null +++ b/UsrSrc/gpio/gpio.c @@ -0,0 +1,66 @@ +/* + ****************************************************************************** + * + * @file gpio.c + * @brief gpio module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "gpio.h" +#include "sleep.h" +#include "userapp.h" +#include "led.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +//uint8_t System_Rst_Cnt = 0; //ϵͳλʱ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Gpio_Init(void) + * + * Description : gpio Initialization. --- ϵͳʼá + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 0 +void GPIO_Init(void) +{ + /* GPIO */ + +// SFRADDR = P0_OE; +// SFRDATA |= 0x1C; //P02,P03,P04óģʽ + + SFRADDR = P1_OE; + SFRDATA = 0x01; +} +#endif + + diff --git a/UsrSrc/hall/hall.c b/UsrSrc/hall/hall.c new file mode 100644 index 0000000..80efcf3 --- /dev/null +++ b/UsrSrc/hall/hall.c @@ -0,0 +1,165 @@ +/* + ****************************************************************************** + * + * @file hall.c + * @brief hall module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "hall.h" +#include "key.h" +#include "led.h" +#include "vox_module.h" +#include "userapp.h" +#include "charger_module.h" + + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t Hall_Sta_bk = 0xff; + +CoverStatus_E CoverStatus; + +bit CoverEvent_Flg = 0; //Hallش¼־λ +bit CoverEvent_Flg_led = 0; + +#if HALL_ENABLE + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Hall_Init(void) + * + * Description : Hall Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + #if 0 + void Hall_Init(void) +{ + while ( !(CHIP_STA0 & 0x10) ); //Hall analog first detection complete status,hall flag valid only after this bit sets. + + if(CHIP_STA0 & 0x08) //ȡHALLʼ״̬ + { + +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; +#else + CoverStatus = OPEN; +#endif + } + else + { + +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; +#endif + } + + //Hall_Sta_bk = (CHIP_STA0 & 0x08); +} + #endif +/* + ******************************************************************************* + * void Hall_Handle(void) + * + * Description : Hall Handle --- ѭеã10msCoverStatus --- ָ״̬ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + + void Hall_Handler(void) + { + uint8_t Hall_Sta = 0; + if( CHIP_STA0 & 0x10 ) + { + Hall_Sta = CHIP_STA0 & 0x08; + if( Hall_Sta != Hall_Sta_bk) + { + if(CHIP_STA0 & 0x08) //Hall ߵƽ + { + //P10 = 1; +#if HALL_OPEN_LEV_SET + CoverStatus = OPEN; +#else + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Open Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Close Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + else + { + //P10 = 0; +#if HALL_OPEN_LEV_SET + CoverStatus = CLOSE; + led_blink_1time_flag = 0; +#else + CoverStatus = OPEN; +#endif + +#ifdef _DEBUG_HALL + +#if HALL_OPEN_LEV_SET + printf("Close Hall Status:0x%x,sta0:0x%x\r\n",(uint16_t)CoverStatus,(uint16_t)CHIP_STA0); +#else + printf("Open Hall Status:0x%x\r\n",(uint16_t)CoverStatus); +#endif + +#endif + } + + CoverEvent_Flg = 1; + CoverEvent_Flg_led = 1; + LED_On_Timer = 0; + //LED_On_Timer1 = 0; + Vox_TX_Timer = 0; + Hall_Sta_bk = Hall_Sta; + } + } + } + + #endif + diff --git a/UsrSrc/key/key.c b/UsrSrc/key/key.c new file mode 100644 index 0000000..6f3a86d --- /dev/null +++ b/UsrSrc/key/key.c @@ -0,0 +1,183 @@ +/* + ****************************************************************************** + * + * @file key.c + * @brief key module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "key.h" +#include "system.h" +#include "led.h" +#include "sleep.h" +#include "adc.h" +#include "bat.h" +#include "vox_module.h" + +#if KEY_ENABLE +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit Key_Press_short_irq = 0; +bit Key_Press_l_irq = 0; +bit Key_Press_ll_irq = 0; + +bit Key_l_Flag = 0; + +idata KEY_EVENT_E Event_key = 0; + +uint8_t Key_TWS_Pair_Tim = 0; +#define KEY_TWS_PAIR_CNT 20 + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void Key_Init(void) + * + * Description : Hey Initialization + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +#if 0 + void Key_Init(void) +{ + + SFRADDR = MFP_CTL1; //Set P05 as key Function + SFRDATA &= ~0x3C; + SFRDATA |= 0x14; + + SFRADDR = PMU_CTL0; + SFRDATA |= 0x02; //Key Detect Enable + + //KEY_CTL = 0x04; //Set all of the functions about KEY are enable. +} +#endif + + +/* + ******************************************************************************* + * void Key_Handler(void) + * + * Description : Key Handler --- ѭеã5msг(ʱ2s)Ҫж̧Ŵ + CoverStatus --- ָ״̬ṩӦKey¼־λӦô + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void Key_Handler(void) + { + if( Key_l_Flag ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 0; + /*todo*/ + Event_key = KEY_EVENT_L_2S; + Key_TWS_Pair_Tim = 0; + + Bes_In_Pair_State[VOL_TYPE] = 0; + Bes_In_Pair_State[VOR_TYPE] = 0; + /**/ + +#ifdef _DEBUG_KEY + printf("long press\r\n"); +#endif + } + + if( Key_Press_ll_irq ) + { + Key_Press_ll_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_LL_8S; + +#ifdef _DEBUG_KEY + printf("supper long press\r\n"); +#endif + } + + if( Key_Press_short_irq ) + { + Key_Press_short_irq = 0; + /*todo*/ + Event_key = KEY_EVENT_SHORT; + +#ifdef _DEBUG_KEY + printf("short press\r\n"); +#endif + + } + +#ifdef XIAOMI //С + /*2sڲֺ˫ڲַ͵ָͬ*/ + if( Event_key == KEY_EVENT_L_2S ) + { + if( CHIP_STA1 & 0xA0 ) //жں + { + if( CHIP_STA1 & 0xA0 ) //˫ں + { + + } + else //ں + { + if( Key_TWS_Pair_Tim < 30) + { + if( Key_TWS_Pair_Tim % Vox_TX_Interval ) + { + HandleTxCommand(CMD_GET_INTO_PAIR,VOL_CHAN); + } + else + { + HandleTxCommand(CMD_GET_INTO_PAIR,VOR_CHAN); + } + /*յ״̬ɹ־*/ + if( Bes_In_Pair_State[VOL_TYPE] && Bes_In_Pair_State[VOR_TYPE] ) + { + + } + + Key_TWS_Pair_Tim++; + } + } + } + } + else + if( Event_key == KEY_EVENT_LL_8S ) + { + + + } + +#endif + } + + + #endif diff --git a/UsrSrc/led/led.c b/UsrSrc/led/led.c new file mode 100644 index 0000000..2b25949 --- /dev/null +++ b/UsrSrc/led/led.c @@ -0,0 +1,160 @@ +/* + ****************************************************************************** + * + * @file led.c + * @brief led module + * @ic TP3102 + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "led.h" + + +#ifdef LED_DISPLAY + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +static idata TS_LED_INFO LED; + +idata uint8_t Display_Sta = LED_OFF; // ʾ״̬ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ +#if 0 +/* +* : LED_Init +* : LEDʼ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Init(void) +/******************************************************************************/ +{ + SFRADDR = P0_OE; + SFRDATA |= 0x08; + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +} +#endif +/* +* : LED_Set +* : LEDʽ +* : Stateʽ / Period:˸(Ƶʣλms) / Times:˸0xffʱһֱ +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Set(uint8_t State,uint8_t Period,uint8_t Times) +/******************************************************************************/ +{ + LED.State = State; + LED.Flash_Duty = Period / 2; + LED.Flash_Period = Period; + LED.Flash_Times = Times; + LED.Timer = 0; +} + +/* +* : LED_Service +* : LED100msʱƬ +* : NONE +* ֵ : NONE +*/ +/******************************************************************************/ +void LED_Drv(void) +/******************************************************************************/ +{ + switch(LED.State) + { + case LED_ON: + LEDR_ON(); + break; + + case LED_OFF: + LEDR_OFF(); + break; + + case LED_FLASH: + if( LED.Timer < LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + + if( LED.Timer >= LED.Flash_Period )//LED.Timer[i]ʾۼӵʱ + { + LED.Timer = 0; + + if( LED.Flash_Times == 0xff ) + { + //LED.State = LED_KEEP_FLASHING; + break; + } + else + { + if( LED.Flash_Times > 0 ) + { + LED.Flash_Times--; + } + + if( LED.Flash_Times == 0 ) + { + LED.State = LED_OFF; + } + } + } + + break; + #if 0 + case LED_KEEP_FLASHING: + if( LED.Timer <= LED.Flash_Duty ) + { + LEDR_ON(); + } + else + { + LEDR_OFF(); + } + if( LED.Timer >= LED.Flash_Period ) + { + LED.Timer = 0; + } + break; + #endif + default: + LEDR_OFF(); + break; + + } + + Display_Sta = LED.State; // ȡǰLED״̬ + + LED.Timer += LED_PLUS_TIME; +} + +#endif + + diff --git a/UsrSrc/main.c b/UsrSrc/main.c new file mode 100644 index 0000000..33ec915 --- /dev/null +++ b/UsrSrc/main.c @@ -0,0 +1,70 @@ +/* + ****************************************************************************** + * + * @file main.c + * @brief main module + * + * + * @version 1.0 + * @date 2022/07/12 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/12 Alex build this file + ****************************************************************************** + */ +/*_____ I N C L U D E S ____________________________________________________*/ +#include "define.h" +#include "userapp.h" +#include "watchdog.h" +#include "sys_tim.h" +#include "system.h" +#include "led.h" +#include "charger_module.h" +#include "adc.h" +#include "vox_module.h" + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +#ifdef _DEBUG_MAIN +const uint8_t Ver[] = "V100"; + /*汾һӲڸĶܼ֮ǰ汾ʱ1 + ڶڹܴڸĶʱ1Գֲͬ + ԰汾ʱĶλֱ䶯ʱλ㡣*/ +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +void main(void ) +{ + System_Init(); //ϵͳʼ + +#ifdef _DEBUG_MAIN + printf("System Init(Ver:%s)\r\n",Ver); +#endif + + while(1) + { + +#if WTG_ENABLE + WDT = 1; + SWDT = 1; +#endif + Sys_Tim_Handler(); //ʱ + + UserAPP(); + } +} diff --git a/UsrSrc/sleep/sleep.c b/UsrSrc/sleep/sleep.c new file mode 100644 index 0000000..dd406fa --- /dev/null +++ b/UsrSrc/sleep/sleep.c @@ -0,0 +1,73 @@ +/* + ****************************************************************************** + * + * @file sleep.c + * @brief sleep module + * + * + * @version 1.0 + * @date 2023/03/22 17:35:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/22 Alex build this file + ****************************************************************************** + */ +#include "sleep.h" +#include "system.h" +#include "vox_module.h" + +#if SLEEP_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t Decnt_SleepDelay = 0; + +bit Enter_Sleep_Cnt_Restart_Flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * bool Check_Require_Sleep(void ) + * + * Description : ѯ߻Դ־λ + * + * Arguments : None + + * Returns : None + + * Notes : bool Flag + * + ******************************************************************************* + */ +bit Check_Require_Sleep(void ) +{ + if( ( CHIP_STA4 & 0x80 ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS Power Goodڡжϡڳ״̬£Boostϵͳģʽ */ + { +#ifdef _DEBUG_SLEEP + printf("Protect\r\n"); +#endif + Enter_Sleep_Cnt_Restart_Flag = 0; + /*Ӧıжϻ¼*/ + return false; + } + + return true; +} + +#endif + diff --git a/UsrSrc/system/system.c b/UsrSrc/system/system.c new file mode 100644 index 0000000..39efe03 --- /dev/null +++ b/UsrSrc/system/system.c @@ -0,0 +1,316 @@ +/* + ****************************************************************************** + * + * @file system.c + * @brief system module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/15 Alex build this file + * Attention:1ͬһByteжϱ־λڲͬжУжϱ־λд1壩 |= Ҫ = + 磺IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag + 2ⲿж0Ҫϵͳѹܣжϴ߼ܴԤӿڣ + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "system.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "uart.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" +#include "watchdog.h" +#include "userapp.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void System_Init(void) + * + * Description : System Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void System_Init(void) +{ + CLKPRE = 0x00; //frequency division: 2^0, 12M ϵͳ + + /* testIO LDO bias100uAء*/ + SFRADDR = 0x89; + SFRDATA |= 0x80; + + /*test*/ + SFRADDR = P0_PD; + SFRDATA &= ~0x03; + +#if UART0_ENABLE + + SFRADDR = P0_PU; + SFRDATA = 0x03; + + //UART0_Init(); + SFRADDR = MFP_CTL0; + SFRDATA = 0x05; //P01 as UART's TX,P00 as UART's RX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ + +#endif + +#if VOX_ENABLE + //Vox_init(); //ϵ󣬾ʼVOXΪԶʶģʽΪʶVOXǷLOADON׼ + VOX_CTL0 = 0xC3; //VOX ؽ롢ʶʹܣԶʶ𡣴Vox vdsǯѹʹܣҪVOX 5V +/* + SFRADDR = VOX_CON0; //VOX500mAʶ2.5uA + SFRDATA &= 0xE0; + SFRDATA |= (VOX_IOUT_500MA << 3) | VOX_ADT_Cur_2_5UA; +*/ +#endif + + //Sys_Tim0_Init(); + //TMOD &= 0xF0; + TMOD = 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run + +#if TIMER1_ENABLE + + //Sys_Tim1_Init(); + + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run + +#endif + /*test,set P1.0 output*/ +#if 0 + SFRADDR = P1_OE; + SFRDATA = 0x01; + P10 = 0; +#endif + /*COM_CTRL Set*/ + SFRADDR = P0_OE; + SFRDATA = 0x0C; //COM_CTRL(P02)LED(P03)ΪGPIO + +// COM_CTRL = ON; //P02øߣVOUTõͣUART + +#ifdef LED_DISPLAY + // LED_Init(); // LED pin ΪGPIO + + SFRADDR = P0_DRV; + SFRDATA = 0x0C; + + pin_LED_1 = 0; +#endif + +#if WTG_ENABLE + /* 65ms */ + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + /* 1s */ +// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; +#endif + +#ifdef ADC_NTC_ENABLE + + SFRADDR = MFP_CTL1; //Set P07 Pinmux As AD4 Function + SFRDATA |= 0x80; + + SFRADDR = ADCCS_CTL0; //AD0~AD4 GPIO constant 20uA current source enable. + SFRDATA = 0x10; + +#endif + + /* Interrupt Enable ӦѡҪж */ + SFRADDR = IRQ_EN3; //INT2 --- VOX EDGE LOADON + SFRDATA = 0x3C; + + SFRADDR = IRQ_EN7; //INT4 --- Key Interrupt Flag + SFRDATA = 0xF8; + + SFRADDR = IRQ_EN10; //INT4 --- Hall interrupr enable. + SFRDATA = 0x0C; + + /* ⲿжʹ */ + EX0 = 1; + EX2 = 1; + EX4 = 1; + + EAL = 1; //жϡ + + IRQ_FLAG9 = 0x1C; // Charge complete IntTricle/Fast Charge Time expire Int + IRQ_FLAG10 = 0xC0; // VBUS Plugin\Plugout Int + IRQ_FLAG0 = 0x0C; //Vox· + +#if CHARGER_ENABLE + + SFRADDR = PMU_CTL7; //ϷоƬرVBUS OVʹ + SFRDATA &= ~0x20; + + CHG_CTL |= 0x10; //糬ʱʹ + + SFRADDR = REG_CHG0; + SFRDATA |= 0x04; //VDPM + +#endif + +#if SLEEP_ENABLE + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; +#endif + +} + +/* + ******************************************************************************* + * void EX0_isr(void ) interrupt Interrupt_Vector_IE0 + * + * Description : System External Intterupt 0 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void EX0_isr(void) interrupt Interrupt_Vector_IE0 +{ + +} + +/* + ******************************************************************************* + * void EX2_isr(void) interrupt Interrupt_Vector_IE2 + * + * Description : System External Intterupt 2 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + +void EX2_isr(void) interrupt Interrupt_Vector_IE2 +{ + IRQ_FLAG3 = 0x3C; + +#if SLEEP_ENABLE +// if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } +#endif +} + +/* + ******************************************************************************* + * void EX4_isr(void) interrupt Interrupt_Vector_IE4 + * + * Description : System External Intterupt 4 + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + void EX4_isr(void) interrupt Interrupt_Vector_IE4 +{ + +#if HALL_ENABLE + + if( IRQ_FLAG7 & 0x10 ) //Key short press for 16ms-1s interrupt flag + { + Key_Press_short_irq = 1; + } + + if( IRQ_FLAG7 & 0x20 ) //Key long press for 2s interrupt flag and Key release interrupt flag + { + Key_Press_l_irq = 1; + } + + if( IRQ_FLAG7 & 0x40 ) //Key super long press for 8s interrupt flag + { + Key_Press_ll_irq = 1; + Key_Press_l_irq = 0; + } + + if( IRQ_FLAG7 & 0x08 ) + { + if( Key_Press_l_irq ) + { + Key_Press_l_irq = 0; + Key_l_Flag = 1; + } + } + + + IRQ_FLAG7 = 0xF8; +#endif + +#if SLEEP_ENABLE + + //if( !Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 1; + } + +#endif +} + diff --git a/UsrSrc/timer/sys_tim.c b/UsrSrc/timer/sys_tim.c new file mode 100644 index 0000000..c085eae --- /dev/null +++ b/UsrSrc/timer/sys_tim.c @@ -0,0 +1,304 @@ +/* + ****************************************************************************** + * + * @file sys_tim.c + * @brief Timer module + * + * + * @version 1.0 + * @date 2022/09/05 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/09/05 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "sys_tim.h" +#include "vox_module.h" +#include "system.h" +#include "charger_module.h" +#include "led.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ +uint8_t cnt_sys_tim_5ms = 0; +uint8_t cnt_sys_tim_10ms = 0; +uint8_t cnt_sys_tim_250ms = 0; +uint8_t cnt_sys_tim_100ms = 0; +uint8_t cnt_sys_tim_1s = 0; + +bit F_sys_tim_5ms = 0; +bit F_sys_tim_10ms = 0; +bit F_sys_tim_250ms = 0; +bit F_sys_tim_100ms = 0; +bit F_sys_tim_1s = 0; + +uint8_t F_sys_tim0_tick = 0; + +uint8_t cnt_sys_tim0_5ms = 0; +bit BES_Puls_Start = 0; //BES Resetź + +#if TIMER1_ENABLE +bit F_sys_tim1_tick = 0; + +#endif + +#ifdef VOX_TX_RST_PATTERN +uint8_t BES_Puls_Cnt = 0; //BES Reset +//bit BES_Puls_Start = 0; //BES Resetź +#endif + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/* + ******************************************************************************* + * void Sys_Tim_Handler(void ) + * + * Description : Timer Handle + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +void Sys_Tim_Handler(void) +{ + if(F_sys_tim0_tick == 0) + return; + F_sys_tim0_tick = 0; + //system tick + + //---------------5ms---------------------------------------- + cnt_sys_tim_5ms++; + if(cnt_sys_tim_5ms >= 5) + { + cnt_sys_tim_5ms = 0; + F_sys_tim_5ms = 1; + } + + //---------------10ms---------------------------------------- + cnt_sys_tim_10ms++; + if(cnt_sys_tim_10ms >= 10) + { + cnt_sys_tim_10ms = 0; + F_sys_tim_10ms = 1; + + } + + //---------------100ms---------------------------------------- + cnt_sys_tim_100ms++; + if(cnt_sys_tim_100ms >= 100) + { + cnt_sys_tim_100ms = 0; + F_sys_tim_100ms = 1; + } + + //------------------------------------------------- + cnt_sys_tim_250ms++; + if(cnt_sys_tim_250ms>=250) + { + cnt_sys_tim_250ms = 0; + F_sys_tim_250ms = 1; + // P10 = !P10; + //-----------------250ms------------------------- + cnt_sys_tim_1s++; + if(cnt_sys_tim_1s >= 4) + { + cnt_sys_tim_1s = 0; + F_sys_tim_1s = 1; + #if VOX_ENABLE + Boost_Open_Atleast_Tim_Cnt++; + #endif + } + } +} + +/* + ******************************************************************************* + * void Delay10ms(void) //@11.0592MHz + * + * Description : 10msʱ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#if 0 +void Delay10ms(void) //@11.0592MHz +{ + unsigned char i, j; + + i = 108; + j = 145; + do + { + while (--j); + } while (--i); +} +#endif + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B +{ + //1ms + TH0 += C_TIM0_Reload >> 8; + TL0 += C_TIM0_Reload & 0xFF; + + F_sys_tim0_tick = 1; + +#ifdef VOX_TX_RST_PATTERN + + //---------------5ms---------------------------------------- + cnt_sys_tim0_5ms++; + if(cnt_sys_tim0_5ms >= 5) + { + cnt_sys_tim0_5ms = 0; + //BES_Reset_Puls(); + /*жеúռúܶڴ棡*/ + if(BES_Puls_Start) + { + if(BES_Puls_Cnt <= 4) //5͵ƽһߵƽ + { + COM_CTRL = OFF; + } + else + { + if(BES_Puls_Cnt%2) + { + + if(BES_Puls_Cnt == 13) + { + COM_CTRL = OFF; + } + else + { + COM_CTRL = ON; + } + } + else + { + + if(BES_Puls_Cnt == 14) + { + COM_CTRL = ON; + } + else + { + COM_CTRL = OFF; + } + } + } + + BES_Puls_Cnt++; + + if(BES_Puls_Cnt >= 23) + { + BES_Puls_Start = 0; + BES_Puls_Cnt = 0; + } + } + } +#endif +} + +/* + ******************************************************************************* + * void Sys_Tim0_Init(void) + * + * Description : TImer0 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Sys_Tim0_Init(void) +{ + TMOD &= 0xF0; + TMOD |= 0x01; //mode 1, 16bit timer + + TH0 = C_TIM0_Reload >> 8; + TL0 = C_TIM0_Reload & 0xFF; + + ET0 = 1; //enable time0 interrupt + TR0 = 1; //time0 run +} +#endif +#if TIMER1_ENABLE + +/** + * @brief This function handles sys_tim Handler. + * @param None + * @retval None + * 1ms + */ +void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B +{ + //1ms + TF1 = 0; + + TH1 += C_TIM1_Reload >> 8; + TL1 += C_TIM1_Reload & 0xFF; + + F_sys_tim1_tick = 1; +} + +/* + ******************************************************************************* + * void Sys_Tim1_Init(void) + * + * Description : TImer1 Mode1 16bit timer Initialization + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Sys_Tim1_Init(void) +{ + TMOD &= 0x0F; + TMOD |= 0x10; //mode 1, 16bit timer + + TH1 = C_TIM1_Reload >> 8; + TL1 = C_TIM1_Reload & 0xFF; + + ET1 = 1; //enable time1 interrupt + TR1 = 1; //time1 run +} +#endif + +#endif + diff --git a/UsrSrc/uart/uart.c b/UsrSrc/uart/uart.c new file mode 100644 index 0000000..d39fcc3 --- /dev/null +++ b/UsrSrc/uart/uart.c @@ -0,0 +1,373 @@ +/* + ****************************************************************************** + * + * @file uart.c + * @brief uart module + * + * + * @version 1.0 + * @date 2022/12/14 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/12/14 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "uart.h" +#include "system.h" +#include "vox_module.h" + + +#if UART0_ENABLE + + /******************************************************************************\ + Macro definitions + \******************************************************************************/ +#define NONE_PARITY 0 //У +#define ODD_PARITY 1 //У +#define EVEN_PARITY 2 //żУ +#define MARK_PARITY 3 //У +#define SPACE_PARITY 4 //հУ + +#define PARITYBIT EVEN_PARITY //Уλ + + /******************************************************************************\ + Variables definitions + \******************************************************************************/ + +bit busy0; + +#ifdef VOX_RX +idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //ջ +bit Uart0_RX_Finish_Flag = 0; +#endif + +#endif + +#ifdef _DEBUG_ALL +char putchar(char c) +{ + + while(!TI0); + TI0 = 0; + return (S0BUF = c); + + // Uart0SendData(c); + // return(c); +} +#endif + +#if UART0_ENABLE + +/* + ******************************************************************************* + * void UART0_Init(void) + * + * Description : UART0 Initialization UART0debugӡ͸ + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void UART0_Init(void) +{ + SFRADDR = MFP_CTL0; + SFRDATA &= ~0x0C; + SFRDATA |= 0x04; //P01 as UART's TX + + BD = 1; //Select additional Baudrate generator + PCON |= 0x80; //Baudrate double enable + + //baudrate set + S0RELH = HIBYTE(S0REL_VALUE); + S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k + + S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity + + TI0 = 1; + RI0 = 1; + ES0 = 1; //Enable UART0 IRQ +} +#endif +/* + ******************************************************************************* + * void Uart0SendData(uint8_t Txdata) + * + * Description : UART0 Send Data + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ + #if 0 +void Uart0SendData(uint8_t Txdata) +{ + while(busy0); + ACC = Txdata; + if (P) //PУλ + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 0; //УλΪ0 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 1; //УλΪ1 +#endif + } + else + { +#if (PARITYBIT == ODD_PARITY) + TB80 = 1; //УλΪ1 +#elif (PARITYBIT == EVEN_PARITY) + TB80 = 0; //УλΪ0 +#endif + } + busy0 = 1; + S0BUF = ACC; +} +#endif + +/* + ******************************************************************************* + * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf) + * + * Description : UART0 Send Packet + * + * Arguments : NONE + + * Returns : NONE + + * Notes : NONE + * + ******************************************************************************* + */ +#ifdef VOX_TX + +void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf) +{ + uint8_t i = 0; + for(i=0;i COM0_Data_Lenth) ) //յdataRX0DataLenδ䡣 + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + } + +#elif defined(ZHONGKELANXUN) //пѶ + + switch(Rx0Status) + { + case 0: + if( S0BUF == (BOXHEADER >> 8) ) + { + Rx0Status = 1; + + RX0_Cnt = 0; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + break; + + case 1: + if(S0BUF == BOXHEADER) + { + Rx0Status = 2; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + break; + case 1: + RX0_Buffer[RX0_Cnt] = S0BUF; + + if(RX0DataLen == RX0_Cnt - 6) + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + else + { + RX0_Cnt++; + + if(RX0_Cnt == 5) + { + RX0DataLen = RX0_Buffer[4]; //ȡݳ length,lengthChecksum + } + } + } + +#elif defined(XIAOMI) //С + + switch(Rx0Status) + { + case 0: + + if(S0BUF == 0xAA) + { + Rx0Status = 1; + + RX0_Cnt = 0; + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + } + else + { + Rx0Status = 0; + + RX0_Cnt = 0; + } + break; + + case 1: + + RX0_Buffer[RX0_Cnt] = S0BUF; + + RX0_Cnt++; + + if( RX0_Cnt == Vox_Comm_Data_Len ) + { + RX0DataLen = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 9; //ȡݳȣHeadr(1Byte) + Trandsmit Dir(1Byte) + CMD(2Bytes) + datalen(2Bytes) + CRC16(2Bytes) + } + + if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //յdataRX0DataLenδ䡣 + { + RX0_Cnt = 0; + Rx0Status = 0; + Uart0_RX_Finish_Flag = 1; + } + } + + + +#endif + +#endif + } +} + +#endif + + diff --git a/UsrSrc/userapp/userapp.c b/UsrSrc/userapp/userapp.c new file mode 100644 index 0000000..04fbc8c --- /dev/null +++ b/UsrSrc/userapp/userapp.c @@ -0,0 +1,383 @@ +/* + ****************************************************************************** + * + * @file UserApp.c + * @brief UserApp module + * + * + * @version 1.0 + * @date 2023/03/27 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2023/03/27 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ + +#include "userapp.h" +#include "gpio.h" +#include "adc.h" +#include "hall.h" +#include "key.h" +#include "sleep.h" +#include "system.h" +#include "bat.h" +#include "sys_tim.h" +#include "charger_module.h" +#include "discharge_module.h" +#include "led.h" +#include "vox_module.h" + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +uint8_t LED_On_Timer = 0; //ledʱʱ +//uint8_t LED_On_Timer1 = 0; //ledʱʱ + +bit led_blink_1time_flag = 0; + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/***************************************************************************** +* Function : void LED_Display_App(void) +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +/* +磺 +1УΪʱغ״̬¶ʾ糣Ч1Hz˸ +2ɱЧϣ + +dz磺 +1״ʹÿǵЧٸߵ磺4s𣻢ڵ͵磺1Hz4s +2״ʹÿǵЧٶںУ4s𣻢ڶںУ + ۳Уһ£ú +3ظǵЧߵ磺4s𣻵͵磺1Hz4s +4غ״̬޵Чʾ + +*/ +#ifdef LED_DISPLAY + +void LED_Display_App(void) +{ +#if 0 + if( CoverEvent_Flg_led ) //Hallغ״̬͸ı䣬dz磨ߵ磩LED4s𡢣͵磩4Σ1HzLEDһº1Hz˸ + { + #if 1 + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + LED_R_FLASH(100,4); + CoverEvent_Flg_led = 0; + } + else + #endif + { + /*״̬Чʾ*/ + if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR_CHAN] != VOX_PAIR_NONE) ) ) /* ״̬жڲ֡ʾԵЧ */ + { + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) /*УLEDƵ2Hz*/ + { + if (Display_Sta != LED_FLASH) + { + LED_R_KEEP_FLASHING(50); + } + LED_On_Timer = 0; + + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*Գɹ*/ + { + if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + // CoverEvent_Flg_led = 0; + } + } + } + else + { + if ( (CHIP_STA4 & 0x80) && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + if( CoverStatus == CLOSE ) + { + CoverEvent_Flg_led = 0; + } + } + } + } + } + else + { + // гʱ, LED˸ + + // LEDָʾ + if (CHIP_STA4 & 0x80) + { + if (Display_Sta != LED_FLASH) // УLED˸ + { + LED_R_KEEP_FLASHING(100); + } + } + else // δ, Ϩ + { + LED_R_OFF(); + } + } +#endif + + if (CHIP_STA4 & 0x80) // + { + if ( Charger_Done ) // ɣLED + { + LED_R_ON(); + } + else + { + if ( CoverEvent_Flg_led && (CoverStatus == OPEN) ) //ӳпǣһ£۵ǰʲô״̬100msָԭĵЧ + { + if( !led_blink_1time_flag ) //⣺УLEDЧΪ1Hz˸100msĸߵƽЧĵ͵ƽУûЧ + { + led_blink_1time_flag = 1; + LED_R_OFF(); + CoverEvent_Flg_led = 0; + return; + } + } + + if (Display_Sta != LED_FLASH) // УLED˸ + { + LED_R_KEEP_FLASHING(100); + } + } + } + else + { + if( F_batlevel_low ) //ӵص͵磬4κ˵ϵͳϵڼ䣬Bat_levelʼΪ0Bat_levelҪADCӦĵֵҪ5sdebounceϵڼ䣬ظǵЧ᲻ȷ + { + if (CoverEvent_Flg_led) // УLED˸ + { + LED_R_FLASH(100,4); + CoverEvent_Flg_led = 0; + } + } + else + { + /*״̬Чʾ*/ + if( (CoverStatus == OPEN) && ( (Vox_Pairing_State[VOL_CHAN] != VOX_PAIR_NONE) || (Vox_Pairing_State[VOR_CHAN] != VOX_PAIR_NONE) ) ) /* ״̬жڲ֡ʾԵЧ */ + { + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_ING) || (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_ING) ) /*УLEDƵ2Hz*/ + { + if (Display_Sta != LED_FLASH) + { + LED_R_KEEP_FLASHING(50); + } + LED_On_Timer = 0; + Enter_Sleep_Cnt_Restart_Flag = 1; + + } + else + if( (Vox_Pairing_State[VOL_CHAN] == VOX_PAIR_OK) && (Vox_Pairing_State[VOR_CHAN] == VOX_PAIR_OK) ) /*Գɹ*/ + { + if( LED_On_Timer < LED_ON_CNT ) //ԳɹLED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + } + } + } + else + { + if( LED_On_Timer < LED_ON_CNT ) //ظǣӷǵ͵磬LED4s + { + LED_On_Timer++; + LED_R_ON(); + } + else + { + LED_R_OFF(); + } + } + } + } +} + +#endif +/***************************************************************************** +* Function : UserAPP +* Description : 5ms +* Input : None +* Output : None +* Return : None +* Note : None +*****************************************************************************/ +void UserAPP(void) +{ + if( F_sys_tim_5ms ) + { + F_sys_tim_5ms = 0; + +#if HALL_ENABLE + //Key_Handler(); // + Hall_Handler(); //ظǼ +#endif + +#if DISCHARGE_ENABLE + DisCharge_Handler(); //ŵboost +#endif + + } + +#ifdef LED_DISPLAY + + if(F_sys_tim_10ms) + { + F_sys_tim_10ms = 0; + LED_Drv(); + } + +#endif + + if( F_sys_tim_100ms ) + { + F_sys_tim_100ms = 0; + +#if KEY_ENABLE + Key_Handler(); +#endif + +#if CHARGER_ENABLE + Charger_Handler(); //繦 +#endif + +#if ADC_ENABLE + Vbat_Adc = Vbat_Value(); //ȡBatѹ +#endif + +#if VOX_ENABLE + Vox_Det_Machine(); //ظǺӹ߼ +#endif + +#ifdef LED_DISPLAY + LED_Display_App(); //LED Ч +#endif + +#if BAT_VALUE + check_bat_level(); // +#endif + +#ifdef VOX_RX + HandleVoxCommMsg(); +#endif + } + + if( F_sys_tim_1s ) + { + F_sys_tim_1s = 0; + +#if SLEEP_ENABLE + + /*1ѺNsSleep Mode,NҪ100ms + 2VINڵ£ϵsleep mode + */ + + if( Decnt_SleepDelay > 0 ) /*ܷʵִ˹ܣ*/ + { + Decnt_SleepDelay--; + + /*Sleep ModeгKEY\HALL\Loadon\IOFFжϣ¼ʱ*/ + if( Enter_Sleep_Cnt_Restart_Flag ) + { + Enter_Sleep_Cnt_Restart_Flag = 0; + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + + return; + } + + if( Check_Require_Sleep() ) + { + /* жʹ */ + + //SFRADDR = WKUP_EN0; + //SFRDATA = 0xE6; //wake0 up enable. + + //SFRADDR = WKUP_EN3; + //SFRDATA = 0xFF; //wake3 up enable.VOX loadon wake up. + + /* Enter Sleep */ + /* InSleep Handler */ //Disable All IRQ +#if UART0_ENABLE + ES0 = 0; //UART0 IRQ Disable +#endif + EX4 = 0; + EX2 = 0; + ET0 = 0; //timer0 IRQ Disable +#if TIMER1_ENABLE + ET1 = 0; //timer1 IRQ Disable +#endif + + SFRADDR = ADC_CTL0; + SFRDATA &= ~0x80; //ADC Disable. + + PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system + + /* OutSleep Handler */ //Enable IRQ +#if UART0_ENABLE + ES0 = 1; //UART0 IRQ +#endif + EX4 = 1; + EX2 = 1; + ET0 = 1; //timer0 IRQ +#if TIMER1_ENABLE + ET1 = 1; //timer1 IRQ +#endif + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } + else + { + Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; + } +#endif + } +} + diff --git a/UsrSrc/vox/vox_module.c b/UsrSrc/vox/vox_module.c new file mode 100644 index 0000000..926095e --- /dev/null +++ b/UsrSrc/vox/vox_module.c @@ -0,0 +1,1273 @@ +/* + ****************************************************************************** + * + * @file VOX_Module.c + * @brief VOL/R module + * + * + * @version 1.0 + * @date 2022/07/18 09:59:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/07/18 Alex build this file + ****************************************************************************** + */ +#include "vox_module.h" +#include "led.h" +#include "system.h" +#include "discharge_module.h" +#include "sleep.h" +#include "bat.h" +#include "hall.h" +#include "key.h" +#include "sys_tim.h" +#include "sys_tim.h" +#include "adc.h" + +bit Vox_Vout_Enable = OFF; //Vox־λ + +#if VOX_ENABLE + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +#define EARPHONR_WKUP_CNT 2 +#define BES_RST_PULS_CNT 20 + +#define BOOST_VOUT_HIGH_CNT 100 //ظǣָBoost Vout5.15Vʱ䡣 + +#define BES_ADDR_EXCHG_TIMOUT 30 //ظ5s󣬶ַû3sطһΡֱ10κʱ +#define BES_ADDR_EXCHG_CNT 5 + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + +bit BES_Rst_Puls_Flag = 0; +bit BES_Addr_Exchg_Flag = 0; + +bit Cover_Close_Flag = 0; +bit Cover_Open_Flag = 0; +bit EarPhone_ShutDown_Flag = 0; //ػ־λ + +bit Boost_Open_Flag = 0; //ڿBoostʱVox 5V + +uint8_t Vox_Output_Short_Debounce = 0; +uint16_t Boost_Open_Atleast_Tim_Cnt = 0; + +uint8_t Box_To_Bes_Comm_Debounce = 0; +uint8_t Box_To_Bes_Comm_Cnt = 0; + +bit Boost_Vout_Change_Flag = 0; + +#ifdef VOX_RX + +uint8_t Vox_Pairing_State[2] = {0}; //״̬0Ч1ԣ2Գɹ3ֵǰ״̬ +idata uint8_t Vox_Get_BES_Addr_Flag[2] = {0}; +idata uint8_t BES_Addr[6] = {0}; //ַVox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR + +#if defined(XIAOMI) + +idata uint8_t Random_Data[8] = {0}; + +idata uint8_t Bes_Bet_Level[2] = {0}; //ԶصϢBes_Bet_Level[0]Bes_Bet_Level[1]Ҷ +idata uint8_t Bes_Chg_Full[2] = {0}; //ԶӲǷ磺0磻1硣 +idata uint8_t Tws_Paired_Record[2] = {0}; //TWSԼ¼0TWSԼ¼1ûTWSԼ¼ +idata uint8_t Phone_Paired_Record[2] = {0}; //ֻԼ¼0ֻԼ¼1ûкֻԼ¼ +idata uint8_t Bes_OTA_State[2] = {0}; //Ĭ״̬1У0û +idata uint8_t Bes_Set_SN_State[2] = {0}; //ӦдSNǷɹ1ɹ0ʧ +idata uint8_t Bes_In_Pair_State[2] = {0}; //״̬־λ + +idata uint8_t SN_Num[22] = {0}; //SN룬ҪOTPĹ̶λûȡ +uint8_t SN_Num_Start = 0; //SN뷢ʼλãпǶʱ㡣 +bit gShip_Mode_Flag = 0; //ģʽ־λ0ػ1ģʽ + +#define COVER_OPEN_CNT 600 //1 + +uint16_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. +#define VOX_TX_CNT 50 //VOXָʱ5s + +bit SN_Num_Exchg_Flag = 0; //SN־λ + +#elif defined(QIANCHENG) + +uint8_t Vox_TX_Timer = 0; //VOXָʱ,Hall_Handler0. + +#define VOX_TX_CNT 30 //VOXָʱ3s + +#endif + + +#endif + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + +/* + ******************************************************************************* + * void VOX_EN_Type(VOR_Enable_Type_e VOR_Enable_Type) + * + * Description : VOL Open(EN_VO) + + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode) + { + COM_CTRL = ON; + + #if 1 + if( VOX_Enable_Mode == VOX_VOUT_Mode) + { + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + } + else + { + VOX_CTL0 &= ~0x30; //VOX 5v Off + } + + #else + switch(VOX_Enable_Mode) + { + case VOX_VOUT_Mode: + + VOX_CTL0 &= ~0x30; //VOX Disable 5V And Disable VOX ADT + + VOX_CTL0 |= 0x30; //VOX Enable 5V + + break; + case VOX_ADT_Mode: + + VOX_CTL0 &= ~0x30; //VOX 5v Off + + // VOX_CTL0 |= 0x03; //VOX load detect On + + break; + + default: + break; + } + #endif +} + +/* +******************************************************************************* +* void Vox_Det_Machine(void) +* +* Description : Vox Detect:ʶ (100ms) +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ +/* +1ظǿBoost denounceһʱ䣨msʱVox 5vʾЧ +2ǿBoost denounceһʱ䣨msʱVox 5v500msڻѶͿָ10s250-300ms +3Ϳָ250-300msڼ䣬VoxתADTģʽⶼLoadon״̬ҪеЧ +4ֻضֵ͵磬͹ػָ +*/ +void Vox_Det_Machine(void) +{ + /*Vox ֻÿ200msһ(28Bytes)*/ + if( IRQ_FLAG0 & 0x0C ) + { + Vox_Output_Short_Debounce++; + if( Vox_Output_Short_Debounce >= 2 ) //Vox·200ms¿Vox 5V + { + Vox_Output_Short_Debounce = 0; + IRQ_FLAG0 = 0x0C; + VOX_EN_Type(VOX_VOUT_Mode); + return; + } + } + + if( CoverEvent_Flg ) //Hall¼ + { + #if 0 + if(gBoost_Prepared_Flag && ( CHIP_STA1 & 0xA0 ) ) //1Boost㣬VoxһֱADTģʽ2loadonжڲ֣Vox 5V + #else + if( gBoost_Prepared_Flag ) + #endif + { + if( !Boost_Open_Flag ) + { + BST_EN = 1; //Boost Enable쳣ʱӲرաBoostVox 5vڿBoost֮100msʱ + Boost_Open_Flag = 1; + return; + } + + Vox_Pairing_State[VOL_CHAN] = 0; + Vox_Pairing_State[VOR_CHAN] = 0; + BES_Rst_Puls_Flag = 0; + EarPhone_ShutDown_Flag = 0; + Boost_Open_Atleast_Tim_Cnt = 0; + + if( CoverStatus == CLOSE ) //1ظǹرCOM_CTRLʾЧѯLoadonIOFF״̬۶Ƿڲ֣ظǷָ300ms10s֮رCOM_CTRL + { + Cover_Close_Flag = 1; + Cover_Open_Flag = 0; + CoverEvent_Flg = 0; + Vox_Vout_Enable = ON; + Boost_Open_Flag = 0; + COM_CTRL = OFF; + //VOX_EN_Type(VOX_VOUT_Mode); + VOX_CTL0 |= 0x30; //VOX Enable 5VVOX˵NMOS + } + else //2ǴVox 5V500msڻѶ500msvoxΪADTģʽBoost + { + Cover_Close_Flag = 0; + BES_Addr_Exchg_Flag = 0; + + /*VOUT 500msڻѶ*/ + if( Vox_TX_Timer < EARPHONR_WKUP_CNT ) //debounce 500ms + { + VOX_EN_Type(VOX_VOUT_Mode); + Vox_TX_Timer++; + } + else + { + BST_EN = 0; //Boost Disable + Cover_Open_Flag = 1; + CoverEvent_Flg = 0; + Boost_Open_Flag = 0; + Vox_TX_Timer = 0; + } + } + } + else + { + VOX_EN_Type(VOX_ADT_Mode); + } + } + + /* Ϳָ*/ +#ifdef XIAOMI + if( Cover_Open_Flag && (Event_key == KEY_EVENT_Empty) ) /*Ǻûа*/ +#else + if( Cover_Open_Flag ) /*Ǻÿ200-300msһοָҽն״̬Ϣ*/ +#endif + { +#ifdef XIAOMI + if( Vox_TX_Timer < COVER_OPEN_CNT ) +#endif + { /*200msֱVOL/VOR*/ + if( !(Vox_TX_Timer % 2*Vox_TX_Interval) ) //200msһ + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_OPEN,VOL_CHAN); //ָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); +#endif + +#endif + } + else + if( !(Vox_TX_Timer % Vox_TX_Interval) ) + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_OPEN,VOR_CHAN); //ָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); +#endif + +#endif + } + + Vox_TX_Timer++; + } +#ifdef XIAOMI + else + { + VOX_EN_Type(VOX_VOUT_Mode); + } +#endif + } + + /* Ϳظָ*/ + if( Cover_Close_Flag || EarPhone_ShutDown_Flag ) + { + /*300msָ3sظǼ֮俪VOUT;Ǽ֮俪ADT*/ + if( Vox_TX_Timer < VOX_TX_CNT ) + { + if( !(Vox_TX_Timer % 2*Vox_TX_Interval) ) //200msһ + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_CLOSE,VOL_CHAN); //ظָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); +#endif + +#endif + } + } + else + if( !(Vox_TX_Timer % Vox_TX_Interval) ) + { + if( EarPhone_ShutDown_Flag ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); /*سִڵ͵磬ػָ*/ +#endif + } + else + if( CoverStatus == CLOSE ) + { +#ifdef VOX_TX + +#if defined(QIANCHENG) //ة + + HandleTxCommand(CMD_BOX_CLOSE,VOR_CHAN); //ָֶͨ + +#elif defined(XIAOMI) //С + + HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); +#endif + +#endif + } + } + + Vox_TX_Timer++; + } + else //5s־λ + { + if( EarPhone_ShutDown_Flag ) + { + EarPhone_ShutDown_Flag = 0; + Cover_Close_Flag = 0; + Vox_Vout_Enable = OFF; + BST_EN = 0; //Boost Disable + VOX_EN_Type(VOX_ADT_Mode); + } + else + if( Cover_Close_Flag ) //ظǷӦָVOX 5V磬ȴس + { + if( ((CHIP_STA1 & 0xAC) == 0xAC) || F_batlevel_low ) //һloadonioff״̬ͬʱڣ˵1س2ﮱ3ûеص͵硣SHUT_DOWNȴ²ζ + { + if( Boost_Open_Atleast_Tim_Cnt >= TIM_SHUTDOWN_DEBOUNCE ) //Boost빤10ػԭ򣬸شﮱ״̬г硣 + { + EarPhone_ShutDown_Flag = 1; + Vox_TX_Timer = 0; //Ϊ˺淢SHUT_DOWNָ + } + } + +#if defined(XIAOMI) + + if( !SN_Num_Exchg_Flag ) + { + if( Vox_TX_Timer < 2 * VOX_TX_CNT ) + { + if( !(Vox_TX_Timer % 2*Vox_TX_Interval) ) //200msһ + { + HandleTxCommand(CMD_SN,VOL_CHAN); + } + else + if( !(Vox_TX_Timer % Vox_TX_Interval) ) + { + HandleTxCommand(CMD_SN,VOR_CHAN); + } + + Vox_TX_Timer++; + } + else + { + SN_Num_Exchg_Flag = 1; + BES_Addr_Exchg_Flag = 1; + + Vox_TX_Timer = 0; + } + } + + if( BES_Addr_Exchg_Flag ) + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_TWS_BTADDR_EXCH,VOL_CHAN); +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + } + else + { + if(Box_To_Bes_Comm_Cnt > BES_ADDR_EXCHG_CNT) //ַûʱ20sرַûVOX 5V + { + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 1; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + BES_Rst_Puls_Flag = 1; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_TWS_BTADDR_EXCH,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_TWS_BTADDR_EXCH,VOL_CHAN); +#endif + } + } + } + + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_TIMOUT) //3sطһΡط5κʱ + { + Box_To_Bes_Comm_Cnt++; + Box_To_Bes_Comm_Debounce = 0; + } + else + { + Box_To_Bes_Comm_Debounce++; + } + } + + if( BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > BES_RST_PULS_CNT ) //BES λ pattern + { + BES_Rst_Puls_Flag = 0; //긴λPattern󣬿ʼַû + + Box_To_Bes_Comm_Debounce = 0; + Box_To_Bes_Comm_Cnt = 0; + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + +#elif defined(QIANCHENG) + + if( !BES_Rst_Puls_Flag ) + { + Vox_TX_Timer++; + if( Vox_TX_Timer > (BES_RST_PULS_CNT + VOX_TX_CNT) ) //ظǺ3+2sBES λ pattern + { + BES_Rst_Puls_Flag = 1; //긴λPattern󣬿ʼַû + + BES_Addr_Exchg_Flag = 1; + + Box_To_Bes_Comm_Debounce = 0; + Box_To_Bes_Comm_Cnt = 0; + COM_CTRL = ON; +#ifdef VOX_TX + HandleTxCommand(BES_RESET,VOX_BOTH); //BES Reset壬ֻһΡ 23*5=115ms +#endif + return; /*returnԭVox_Det_Machine() 100msڣBES_RESETTimer15msáλPatternҪ115ms + ڴ˴returnԱ֤200msֻBES λpatternڲCOM_CTRL*/ + } + } + + /*ַ*/ + // if( BES_Addr_Exchg_Flag && ( CHIP_STA1 & 0xA0 ) == 0xA0 ) /*1ظǣ2˫ںСظ5s󣬷ظָ*/ + if( BES_Addr_Exchg_Flag ) + { + if( Box_To_Bes_Comm_Debounce < 1 ) + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); /*ظ5sָȡַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 0x00; + } + else + { + if(Box_To_Bes_Comm_Cnt > BES_ADDR_EXCHG_CNT) //ַûʱ20sرַûVOX 5V + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { + if( Vox_Get_BES_Addr_Flag[VOL_CHAN] != 0x00 ) /*յظַ*/ + { + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) + { + + // Box_To_Bes_Comm_Cnt = 0; + BES_Addr_Exchg_Flag = 0; + Boost_Vout_Change_Flag = 1; + Box_To_Bes_Comm_Debounce = 0; + VOX_EN_Type(VOX_VOUT_Mode); + + return; + } + else + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOR_CHAN); /*ҶָȡҶַ*/ +#endif + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 0x00; + } + } + else + if( Vox_Get_BES_Addr_Flag[VOR_CHAN] != 0x00 ) /*յҶظַٽַ*/ + { +#ifdef VOX_TX + HandleTxCommand(CMD_BES_PAIRING,VOL_CHAN); +#endif + } + } + } + + if(Box_To_Bes_Comm_Debounce > BES_ADDR_EXCHG_TIMOUT) //3sطһΡط5κʱ + { + Box_To_Bes_Comm_Cnt++; + Box_To_Bes_Comm_Debounce = 0; + } + else + { + Box_To_Bes_Comm_Debounce++; + } + } + +#endif + /* ظǣָBoost Vout5.15Vʱ1s*/ + if( Boost_Vout_Change_Flag ) + { + if( Box_To_Bes_Comm_Debounce < BOOST_VOUT_HIGH_CNT ) + { + SFRADDR = BST_CTL0; //5.15V + SFRDATA |= 0x03; + Box_To_Bes_Comm_Debounce++; + } + else + { + Boost_Vout_Change_Flag = 0; + Box_To_Bes_Comm_Debounce = 0; + SFRADDR = BST_CTL0; //5.05V + SFRDATA &= ~0x03; + SFRDATA |= 0x01; + } + } + } + } + } +} +#if defined(ZHONGKELANXUN) + +uint8_t Crc8Maxim(u8 *buf, u8 length) +{ + u8 i; + u8 crc = 0; + while(length--) + { + crc ^= *buf++; + for(i=0;i<8;i++) + { + if( crc&1 ) + { + crc = (crc >> 1)^0x8c; + } + else + { + crc >>= 1; + } + } + } + return crc; +} + +#elif defined(XIAOMI) + + /******************************************************************************\ + Functions definitions + \******************************************************************************/ + + /* + ******************************************************************************* + * u16 CalCheckCrc16(u8 * pucFrame, u16 usLen) + * + * Description : У͵ļ + * + * + * Arguments : u8 *pucFrame: ݴŵַ + u16 usLen: ݳ, byteΪλ + + * Returns : + * + * Notes : + * + ******************************************************************************* + */ + + uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen) +{ + uint16_t wCRCin = 0x0000; + uint16_t wCPoly = 0x1021; + uint8_t wChar = 0; + unsigned int i; + + while (usLen--) + { + + wChar = *(pucFrame++); + + wCRCin ^= (wChar << 8); + + for(i = 0;i < 8;i++) + { + if(wCRCin & 0x8000) + { + wCRCin = (wCRCin << 1) ^ wCPoly; + } + else + { + wCRCin = wCRCin << 1; + } + } + } + + return (wCRCin); +} +#endif + +#ifdef VOX_TX +/* + ******************************************************************************* + * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select) + * + * Description : ݰķװӦ˫ͨͨ + * Command payload + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + + * + * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ + +void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select) +{ +#if defined(QIANCHENG) //ة + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + tx_pData[2] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + #if 0 + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + #endif + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[4] = 0x02; + tx_pData[5] = bat_level; + tx_pData[6] = FW_VER; + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[i]; //Ͷַ + } + + break; + + case BES_RESET: //BES λpatten + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function + SFRDATA &= ~0x0C; + + for(i=0;i<6;i++) + { + BES_Addr[i] = 0; //屾ضַ + } + BES_Puls_Start = 1; + + return; + + default: + break; + } + + for(i=2;i<(tx_pData[4] + 5);i++) //datalen + side + cmd + { + tx_pData[1] += tx_pData[i]; //У + } + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(tx_pData[4] + 6, tx_pData); //+6ԭ򣺶һֽڷͣҪTXΪGPIOᵼһֽûüȥ +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +#elif defined(ZHONGKELANXUN) //пѶ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + + /*ݰͷ*/ + tx_pData[0] = BOXHEADER>>8; + tx_pData[1] = BOXHEADER; + /*ʶ*/ + tx_pData[2] = BOXIDCODE; + /*ͨ*/ + tx_pData[5] = nVox_Chn_Select; + /*ָ*/ + tx_pData[3] = TxCommand; + + switch(TxCommand) + { + case VHOUSE_CMD_GET_VBAT: + /*Data Length*/ + tx_pData[4] = 0x03; + tx_pData[6] = (CHIP_STA4 & 0x80) | bat_level; //bit 0~6 ʾֵֵ 0~100bit 7 Ϊ 1 ʾڸֳ磬Ϊ 0 ʾûиֳ磻 + tx_pData[7] = 0x03; //ear_vbat:Զִȡõ bit7 1 ͸Ҷ + //ûлȡ֪ԶڲڶҪ bit7 1 + break; + + case VHOUSE_CMD_PAIR: //ְ3sַָ + /*Data Length*/ + tx_pData[4] = 0x01; + break; + + case VHOUSE_CMD_GET_TWS_BTADDR: + + break; + + case CMD_BES_PAIRING: + /*Data Length*/ + tx_pData[4] = 0x06; + + for(i=0;i<6;i++) + { + tx_pData[5+i] = BES_Addr[nVox_Chn_Select][i]; //ȡַ + } + + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + +#elif defined(XIAOMI) //С + /* + + */ + + uint8_t tx_pData[11] = 0; + uint8_t i = 0; + uint16_t Checksum = 0; + uint16_t DataLen = 0; + /*ݰͷ*/ + tx_pData[0] = BOXHEADER; + /*ͨ*/ + + tx_pData[1] = nVox_Chn_Select; /*䷽Bit0-3նˣBit4-7Ͷ + 1˫ + 2 + 3PC/װ + 4 + 5Ҷ + */ + /*ָ*/ + tx_pData[2] = TxCommand; + tx_pData[3] = TxCommand >> 8; /*Сģʽֽǰ + Bit0-7 + Bit8-14Ԥ + Bit15: + 0:REQ + 1:ACK + */ + tx_pData[4] = CoverStatus; //غ״̬ + + switch(TxCommand) + { + case CMD_TWS_PAIR: //ȡMACַ + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + break; + + case CMD_TWS_BTADDR_EXCH: + /*Data Length*/ + tx_pData[5] = 0x0E; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + for(i=0;i<6;i++) + { + tx_pData[7+i] = BES_Addr[i]; //Ͷַ + } + + for(i=0;i<8;i++) + { + tx_pData[13+i] = Random_Data[i]; // + } + + break; + + case CMD_SHUT_DOWN: + /*Data Length*/ + tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = gShip_Mode_Flag; //ģʽ0ػ1ģʽ + + break; + + case CMD_PAIRING_IMD: //ִTWS + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + break; + + case CMD_CLEAR_PAIR: + /*Data Length*/ + tx_pData[5] = 0x00; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + break; + + case CMD_HEARTBEAT: + /*Data Length*/ + tx_pData[5] = 0x05; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + /* + data壺 + 1D0D12Bytesɳеİ汾ϢD0ĸ4bitΪӲPCBA汾ţD04bitD1ɳ汾š + 2D21Byteɳеͳ״̬D2bit7ΪǷPG룻D2ĵ7λʾеϢΧ0-100; + 3D31ByteɶԶϢЭеSideϢҶϢ + 4D41ByteĬĬϷ0x00 + */ + tx_pData[7] = HW_VER << 4; + tx_pData[7] = FW_VER >> 8; + tx_pData[8] = FW_VER; + + tx_pData[9] = (CHIP_STA4 & 0x80) | bat_level; + + if(nVox_Chn_Select == VOL_CHAN) + { + tx_pData[10] = Bes_Bet_Level[0]; + } + else + if(nVox_Chn_Select == VOR_CHAN) + { + tx_pData[10] = Bes_Bet_Level[1]; + } + + tx_pData[11] = 0x00; + break; + + case CMD_SN: //SNϳֶηͣD0ʾڼλʼͣһι̶9BytesһSNݲ9BytesIJ00xff + /*Data Length*/ + tx_pData[5] = 0x0A; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = SN_Num_Start; + + for(i=0;i<9;i++) + { + if( (SN_Num_Start + i) > 22 ) + { + tx_pData[8+i] = 0xFF; + } + else + { + tx_pData[8+i] = SN_Num[ SN_Num_Start + i ]; // + } + } + + SN_Num_Start += 9; + + break; + + case CMD_GET_INTO_PAIR: + /*Data Length*/ + tx_pData[5] = 0x01; //Сģʽλǰ2Bytes + tx_pData[6] = 0x00; + + tx_pData[7] = 0x01; //01״̬ + break; + + case BES_RESET: //BES λpatten + + BES_Puls_Start = 1; + + return; + + default: + break; + } + + DataLen = tx_pData[5] | (tx_pData[6] << 8) + 7; + Checksum = CalCheckCrc16( tx_pData, DataLen ); // + tx_pData[1 + DataLen] = Checksum; + tx_pData[2 + DataLen] = Checksum >> 8; + + COM_CTRL = OFF; //VOXлͨѶTXģʽ1.8V + + SFRADDR = MFP_CTL0; + SFRDATA |= 0x04; //P01 as UART's TX + +#if UART0_ENABLE + Uart0SendPacket(10 + DataLen, tx_pData); +#endif + + SFRADDR = MFP_CTL0; //Set P01 Pinmux As GPIO Function,ԭTXRXһҪ֤RXյݣTXΪGPIOģʽջģʽ + SFRDATA &= ~0x0C; + +#endif + +} + +#endif + +#ifdef VOX_RX + /* + ******************************************************************************* + * void HandleRxCommand(VOX_BES_COMMAND_E RxCommand) + * + * Description : ˷͵ݰĽ + * Ack payload: + * Header checksum side cmd len Data + * 1bytes 1byte 1byte 1byte 1byte Len bytes + * + * Arguments : VOX_BES_COMMAND_E RxCommand: + + * Returns : + * + * Notes : + * + ******************************************************************************* +*/ +void HandleRxMsg(VOX_BES_COMMAND_E RxCommand) +{ + uint8_t i = 0; + +#if defined(QIANCHENG) //ة + + switch(RxCommand) + { + case CMD_BOX_OPEN: + + case CMD_BOX_CLOSE: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Pairing_State[VOL_CHAN] = RX0_Buffer[5]; //ȡ״̬ + } + else + { + Vox_Pairing_State[VOR_CHAN] = RX0_Buffer[5]; //ȡҶ״̬ + } + + break; + + case CMD_SHUT_DOWN: + + break; + + case CMD_BES_PAIRING: + + if( RX0_Buffer[2] == VOL_CHAN ) //ݶSide + { + Vox_Get_BES_Addr_Flag[VOL_CHAN] = 1; //ȡַ״̬ + } + else + { + Vox_Get_BES_Addr_Flag[VOR_CHAN] = 1; //ȡҶַ״̬ + } + + for(i=0;i<6;i++) + { + BES_Addr[i] = RX0_Buffer[i+5]; //ȡַ + } + + break; + + default: + break; + } + +#elif defined(XIAOMI) //С + + uint8_t CMD_Type = 0; + + CMD_Type = RX0_Buffer[1] >> 4; + if( CMD_Type & TWS_PC ) //PC/װ-> + { + + } + else //-> + { + switch(RxCommand) + { + case CMD_TWS_PAIR: + + for(i=0;i> 7; //ȡǷ + Vox_Pairing_State[VOL_TYPE] = RX0_Buffer[10]; //ȡ״̬ + Tws_Paired_Record[VOL_TYPE] = RX0_Buffer[11] & 0x01; //bit0:0TWSԼ¼1ûTWSԼ¼bit1:0ֻԼ¼1ûкֻԼ¼ + Phone_Paired_Record[VOL_TYPE] = (RX0_Buffer[11] >> 1) & 0x01; + Bes_OTA_State[VOL_TYPE] = RX0_Buffer[12]; + } + else + { + Bes_Bet_Level[VOR_TYPE] = RX0_Buffer[9]&0x7F; + Bes_Chg_Full[VOR_TYPE] = RX0_Buffer[9] >> 7; + Vox_Pairing_State[VOR_TYPE] = RX0_Buffer[10]; + Tws_Paired_Record[VOR_TYPE] = RX0_Buffer[11] & 0x01; + Phone_Paired_Record[VOR_TYPE] = (RX0_Buffer[11] >> 1) & 0x01; + Bes_OTA_State[VOR_TYPE] = RX0_Buffer[12]; + } + + break; + + case CMD_SN: + + if( CMD_Type == TWS_VOL ) //ݶSide + { + Bes_Set_SN_State[VOL_TYPE] = RX0_Buffer[7]; //SNдǷɹ״̬־ + } + else + { + Bes_Set_SN_State[VOR_TYPE] = RX0_Buffer[7]; //ҶSNдǷɹ״̬־ + } + + break; + + case CMD_GET_INTO_PAIR: + if( CMD_Type == TWS_VOL ) //ݶSide + { + Bes_In_Pair_State[VOL_TYPE] = RX0_Buffer[7]; //Ƿ״̬ɹ״̬־ + } + else + { + Bes_In_Pair_State[VOR_TYPE] = RX0_Buffer[7]; //ҶǷ״̬ɹ״̬־ + } + + break; + case CMD_PAIRING_IMD: + + break; + default: + break; + } + } + + +#endif + +} + +/* +******************************************************************************* +* void HandleVoxCommMsg(void) +* +* Description : Vox ͨѶܴ100msʱáںͶͨǰҪ򿪶˵TRXܣÿֻͨһֻͨлVOL/VORͨſؽͨ +* +* Arguments : NONE + +* Returns : NONE + +* Notes : NONE +* +******************************************************************************* +*/ + +void HandleVoxCommMsg(void) +{ + +#if defined(QIANCHENG) //ة + + uint8_t CrcCheckSum = 0; + +#elif defined(ZHONGKELANXUN) //пѶ + + uint8_t CrcCheckSum = 0; + +#elif defined(XIAOMI) + + uint16_t CrcCheckSum = 0; + uint16_t Data_Len = 0; + +#endif + + uint8_t i = 0; + + /*RXݴ*/ + if( Uart0_RX_Finish_Flag ) + { + Uart0_RX_Finish_Flag = 0; + +#if defined(QIANCHENG) //ة + + for(i=2 ;i<(RX0_Buffer[4] + 5);i++) //У + { + CrcCheckSum += RX0_Buffer[i]; //У + } + + if( CrcCheckSum == RX0_Buffer[1] ) + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]); + } + else + { + return; + } + +#elif defined(XIAOMI) //С + Data_Len = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 7; + + CrcCheckSum = CalCheckCrc16( RX0_Buffer, Data_Len); // + + if( CrcCheckSum == (uint16_t)(RX0_Buffer[Data_Len+1] | RX0_Buffer[Data_Len+2] << 8) ) //УСģʽλǰ + { + HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[2]); + } + else + { + return; + } + +#endif + + } + +} + +#endif + +#endif + diff --git a/UsrSrc/watchdog/watchdog.c b/UsrSrc/watchdog/watchdog.c new file mode 100644 index 0000000..879df92 --- /dev/null +++ b/UsrSrc/watchdog/watchdog.c @@ -0,0 +1,96 @@ +/* + ****************************************************************************** + * + * @file watchdog.c + * @brief watchdog module + * + * + * @version 1.0 + * @date 2022/08/04 15:00:40 + * @author Alex Xu + * + * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. + * All Rights Reserved + * + * History: + * Revision Date Author Desc + * 1.0.0 2022/08/04 Alex build this file + ******************************************************************************/ + /*_____ I N C L U D E S ____________________________________________________*/ +#include "watchdog.h" +#if 0 +/*_____ D E F I N I T I O N S ______________________________________________*/ + + +/******************************************************************************\ + Macro definitions +\******************************************************************************/ + +/******************************************************************************\ + Variables definitions +\******************************************************************************/ + + +/******************************************************************************\ + Functions definitions +\******************************************************************************/ + + +/*_____ F U N C T I O N S __________________________________________________*/ + +/* + ******************************************************************************* + * void Watchdog_Init(uint8_t watchdog_time) + * + * Description : watchdog Initialization. WDT_TM = 0ŹʱΪϵͳʱӵ12ƵΪϵͳʱӡ + wdtrel.7=1 ŹʱΪSys_Fre/12*32wdtrel.7=0 ŹʱΪSys_Fre/12*2. + Sys_Fre = 12MHzwdtrel.7=0ʱʱΧ + (1/Sys_Fre)*12*2*256~(1/Sys_Fre)*12*2*256*128 = 5ms~65ms + + Sys_Fre = 12MHzwdtrel.7=1ʱʱΧ + (1/Sys_Fre)*12*32*256~(1/Sys_Fre)*12*32*256*128 = 80ms~1s + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ +void Watchdog_Init(uint8_t watchdog_time) +{ + switch(watchdog_time) + { + case _WDT_TIME_65ms_: + WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + break; + case _WDT_TIME_1s_: + WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32; + break; + } + SWDT = 1; //Watchdog Start +} + +/* + ******************************************************************************* + * void Watchdog_Clear(void) + * + * Description : Feed watchdog ϵͳʼʱδпŹʼڳнι + * + * Arguments : + + * Returns : + + * Notes : + * + ******************************************************************************* + */ + +void Watchdog_Clear(void) +{ + WDT = 1; + SWDT = 1; +} + +#endif \ No newline at end of file