diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx index 646f75d..2c8a7a6 100644 --- a/keilp/cc_as_stc02_ps5ws.uvprojx +++ b/keilp/cc_as_stc02_ps5ws.uvprojx @@ -13,14 +13,14 @@ 0 - STC8F2K64S4 - STC - IRAM(0-0xFF) XRAM(0-0x07FF) IROM(0-0xFFF8) CLOCK(35000000) MODP2 + stc8a8k64s4a12 + stc + - "LIB\STARTUP.A51" ("Standard 8051 Startup Code") + - 63032 - STC8.H + 0 + @@ -36,8 +36,8 @@ d:\Keil\C51\BIN\ - STC\ - STC\ + + 0 0 @@ -107,14 +107,14 @@ 65535 - S8051.DLL + - DP51.DLL - -pDP8051 - S8051.DLL + + + - TP51.DLL - -p51 + + @@ -136,7 +136,7 @@ 0 - "" () + @@ -154,12 +154,12 @@ 0 0 0 - 1 - 1 - 1 + 0 + 0 + 0 0 0 - 1 + 0 0 0 0 @@ -232,17 +232,17 @@ 1 0x0 - 0xfff9 + 0x0 0 0x0 - 0x100 + 0x0 0 0x0 - 0x800 + 0x0 0 @@ -277,7 +277,7 @@ 2 0 1 - 0 + 1 0 @@ -341,19 +341,34 @@ ..\source\app\main.c - common.c + task_adc.c + 1 + ..\source\app\task_adc.c + + + task_debug.c + 1 + ..\source\app\task_debug.c + + + task_register.c + 1 + ..\source\app\task_register.c + + + task_modbus.c 1 - ..\source\app\common.c + ..\source\app\task_modbus.c - app_task_uart0.c + app_config.c 1 - ..\source\app\app_task_uart0.c + ..\source\app\app_config.c - app_task_adc.c + task_encrypt.c 1 - ..\source\app\app_task_adc.c + ..\source\app\task_encrypt.c @@ -381,19 +396,14 @@ ..\source\msp\UART0.C - iic_sim.c + eeprom.c 1 - ..\source\msp\iic_sim.c + ..\source\msp\eeprom.c - msp_eeprom.c + uart_x.c 1 - ..\source\msp\msp_eeprom.c - - - msp_id.c - 1 - ..\source\msp\msp_id.c + ..\source\msp\uart_x.c @@ -401,19 +411,24 @@ bsp - bsp_power.c + bsp_config.c + 1 + ..\source\bsp\bsp_config.c + + + chipid.c 1 - ..\source\bsp\bsp_power.c + ..\source\bsp\chipid.c - bsp_cs1232.c + cs1232.c 1 - ..\source\bsp\bsp_cs1232.c + ..\source\bsp\cs1232.c - bsp_485.c + rs485.c 1 - ..\source\bsp\bsp_485.c + ..\source\bsp\rs485.c @@ -436,9 +451,9 @@ tpc - tpc_modbus.c + modbus.c 1 - ..\source\tpc\tpc_modbus.c + ..\source\tpc\modbus.c @@ -452,16 +467,6 @@ - - debug - - - cc_as_stc01_main.ini - 5 - ..\source\debug\cc_as_stc01_main.ini - - - diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_sym b/si4/ps5ws.si4project/soft_ps5ws.sip_sym index 754f6e3..0af0e0d 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_sym and b/si4/ps5ws.si4project/soft_ps5ws.sip_sym differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xab b/si4/ps5ws.si4project/soft_ps5ws.sip_xab index c8b4f42..1165362 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xab and b/si4/ps5ws.si4project/soft_ps5ws.sip_xab differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xad b/si4/ps5ws.si4project/soft_ps5ws.sip_xad index 9911101..078121f 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xad and b/si4/ps5ws.si4project/soft_ps5ws.sip_xad differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xc b/si4/ps5ws.si4project/soft_ps5ws.sip_xc index c159f36..56fe267 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xc and b/si4/ps5ws.si4project/soft_ps5ws.sip_xc differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xf b/si4/ps5ws.si4project/soft_ps5ws.sip_xf index 50d7c65..a0780f0 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xf and b/si4/ps5ws.si4project/soft_ps5ws.sip_xf differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xm b/si4/ps5ws.si4project/soft_ps5ws.sip_xm index b50bf1b..4d47735 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xm and b/si4/ps5ws.si4project/soft_ps5ws.sip_xm differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xr b/si4/ps5ws.si4project/soft_ps5ws.sip_xr index 593a129..a61a71f 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xr and b/si4/ps5ws.si4project/soft_ps5ws.sip_xr differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xsb b/si4/ps5ws.si4project/soft_ps5ws.sip_xsb index 704a36f..e24423a 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xsb and b/si4/ps5ws.si4project/soft_ps5ws.sip_xsb differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.sip_xsd b/si4/ps5ws.si4project/soft_ps5ws.sip_xsd index 4b902b2..bd5c37d 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.sip_xsd and b/si4/ps5ws.si4project/soft_ps5ws.sip_xsd differ diff --git a/si4/ps5ws.si4project/soft_ps5ws.siproj b/si4/ps5ws.si4project/soft_ps5ws.siproj index 218c725..e5892c6 100644 Binary files a/si4/ps5ws.si4project/soft_ps5ws.siproj and b/si4/ps5ws.si4project/soft_ps5ws.siproj differ diff --git a/source/33.txt b/source/33.txt deleted file mode 100644 index ad7917e..0000000 --- a/source/33.txt +++ /dev/null @@ -1,141 +0,0 @@ -#define, Keyword -#elif, Directive -#else, Directive -#endif, Directive -#if, Directive -#ifdef, Directive -#ifndef, Directive -#include, Keyword -#pragma, Keyword -#undef, Keyword -(, Delimiter -), Delimiter -",", Delimiter -;, Delimiter -abstract, Keyword -__abstract, Keyword -alignas, Keyword -alignof, Keyword -asm, Keyword -__asm, Keyword -assert, Debug -Assert, Debug -async, Keyword -auto, Keyword -bool, Keyword -break, Control -case, Control -catch, Control -cdecl, Keyword -__cdecl, Keyword -char, Keyword -class, Control -coclass, Control -const, Keyword -constexpr, Keyword -const_cast, Keyword -continue, Control -cout, Keyword -decltype, Keyword -default, Control -__delegate, Keyword -delete, Control -do, Control -double, Keyword -DWORD, Keyword -dynamic_cast, Keyword -each, Control -else, Control -enum, Control -__event, Keyword -except, Control -__except, Control -exception, Keyword -explicit, Keyword -export, Keyword -extern, Keyword -FALSE, Boolean -false, Boolean -FAR, Keyword -far, Keyword -final, Keyword -__finally, Control -float, Keyword -for, Control -fortran, Keyword -for_each, Control -friend, Keyword -__gc, Keyword -goto, Control -huge, Keyword -HUGE, Keyword -if, Control -inline, Keyword -INT, Keyword -int, Keyword -int16_t, Keyword -int32_t, Keyword -int64_t, Keyword -int8_t, Keyword -interface, Control -long, Keyword -LONG, Keyword -mutable, Keyword -namespace, Control -near, Keyword -NEAR, Keyword -new, Control -NULL, Null Value -nullptr, Null Value -__nullptr, Null Value -operator, Keyword -override, Keyword -PASCAL, Keyword -pascal, Keyword -private, Keyword -__property, Keyword -protected, Keyword -public, Keyword -ref, Keyword -register, Keyword -REGISTER, Keyword -reinterpret_cast, Keyword -return, Control -sealed, Keyword -short, Keyword -SHORT, Keyword -signed, Keyword -sizeof, Keyword -static, Keyword -static_cast, Keyword -struct, Control -__super, Keyword -switch, Control -template, Control -this, Keyword -thread_local, Keyword -throw, Control -TRUE, Boolean -true, Boolean -try, Control -__try, Control -ttss_task_init, Highlight -typedef, Control -typeid, Keyword -typename, Keyword -UINT, Keyword -union, Control -unsigned, Keyword -using, Keyword -value, Keyword -virtual, Keyword -VOID, Keyword -void, Keyword -volatile, Keyword -wchar_t, Keyword -while, Control -WORD, Keyword -[, Delimiter -{, Delimiter -], Delimiter -}, Delimiter diff --git a/source/app/app_algorithm.c b/source/app/app_algorithm.c deleted file mode 100644 index 8714b19..0000000 --- a/source/app/app_algorithm.c +++ /dev/null @@ -1,1005 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -/// COPYRIGHT NOTICE -/// Copyright (c) 2015, 传控科技 -/// All rights reserved. -/// -/// @file app_ALGOration.c -/// @brief app_ALGOration app -/// -///(本文件实现的功能的详述) -/// -/// @version 1.1 CCsens technology -/// @author CC -/// @date 20190105 -/// -/// -/// 修订说明:最初版本 -/// Modified by: -/// Modified date: -/// Version: -/// Descriptions: -/// 算法等 -////////////////////////////////////////////////////////////////////////// -///#include "app_calibration.h" - -#include "app_algorithm.h" -#include "app_flow.h" -#include "app_paraid.h" - -////#include "app_rfSend.h" - -#include "../clib/Clib.h" -#include "../clib/bit.h" -/// - -#ifdef D_buf_test -U8 test_buf[]; -U8 test_buf2[660]; -#endif - -#include "../bsp/bsp_power.h" - -#if 0 -s1 波形一定要去掉尖峰 -s2 波形通过滤波平滑或基本平滑,并保持单调 -s3 单点管道式算法 -s4 根据特性 必须有过零点或过相对零点 - low=0 low=0 - ```````\ /````````````\ /`````` - \ / \ / - \ low++ / \ low++ / - 0 zero....\.low_zero=low....../..................\.................../........ - \ / \ / - \ ___/ \ ___/ - \___ / \___ / - \ /high++ \ / - \___/ \___/ - high=0 - low - - /`````````\ - / \ -__________________/ \______________ - -#endif - - -//>>>>>>>>>>>>>>>>>>>>>0开机task -///L2_task_C2_init(); -#if 0 -1 尖峰 中值 -2 求零点 -3 归零及削峰 求值 -4 曲线求数量 - -1 尖峰 中值 -2 上下削峰 求值 -4 曲线求数量 - -求值 纸张 -0 ,0 -sum, 100 - -x*k = Sum -100k = Sum100 -k=Sum100/100; -x=Sum/k - Sum -x=------- - k - - Sum -x=------------ - Sum100/100 - - Sum*100 -x = ---------- - Sum100 - -U8 L2_task_ALGO_at(void) -{ - - - -} - -#endif - -vU16 L2_line_algo_media(U8 *buf,vU16 len); -TS_task_ALGO_ ts_task_ALGO; -void L2_task_ALGO_init(void) -{ -/// ts_task_ALGO.status = 0; - L1_task_init(&ts_task_ALGO.task); -/// ts_task_ALGO.p_buf2 = s_task_GC032A.buf; -/// ts_task_ALGO.t = 0; - L3_task_s_go(ts_task_ALGO,D_task_init); -} - -//>>>>>>>>>>>>>>>>>>>>>0开机task -///L2_task_ALGO_init(); - - -///L2_task_ALGO_handle(&ts_task_ALGO); - -/// 捕获到需要的行采集完成的标志后, 先中值滤波消除尖峰,然后进行整理(平移 阀值),求和 -void L2_task_ALGO_handle(TS_task_ALGO_ *s) -{ - TTSS_Task_init(): - s->ok = D_clear; - s->cali_mode = D_clear; - L2_task_go(D_task_ALGO_wait); - TTSS_Task_step(D_task_ALGO_wait): - - TTSS_Task_step(D_task_ALGO_median): - /// s->usSum = L2_line_algo_media(s_task_GC032A.buf,D_pclk_per_hs_570); - L2_task_go(D_task_ALGO_updown); - TTSS_Task_step(D_task_ALGO_updown): - s->usPaperNum = 0xAAAA; - if(s->usSum >= D_paper_EE)///摄像头外放或者强光 - { - - } - else if(s->usSum > D_paper_MAX)////纸张处于满量程 - { - s->usPaperSection = D_cam_top; - } - else if(s->usSum > D_paper_150at_bottom)///bottom --top - {/// - s->usPaperSection = D_cam_150at; - } - else if(s->usSum > D_paper_00)//// 0---max 纸张发生变化 并且 小于满量程 - { - s->usPaperSection = D_cam_00; - //s->usSum - - } - else - { - s->usPaperSection = D_cam_erro; - } - /*** - if(s_task_GC032A.buf[4] < D_F_low) - { - TS_paer_value.r123.work_mode = D_ready; - }else - { - TS_paer_value.r123.work_mode = D_clear; - } - ************/ - - /// 0----0 - /// x -----usSum - ///150----usPaper150 - /// 3000 - - s->usPaperNum = s->usSum*15; - s->ustMP = s->usPaper150 / 10; - s->usPaperNum /= s->ustMP; - /// - - #define D_debug_add_send - #ifdef D_debug_add_send - PrintAlgo_D_send_us(s->usSum);PrintAlgo_L0_uart0_uc(0x09); - PrintAlgo_D_send_us(s->usPaper150);PrintAlgo_L0_uart0_uc(0x09); - PrintAlgo_D_send_us(s->usPaperNum); - //PrintCam_L0_uart0_uc(0x0d);/PrintCam_L0_uart0_uc(0x0a); - #endif - L2_task_go(D_task_ALGO_wait); - /// L2_task_go(D_task_ALGO_cali_mode); - - - /************** - TTSS_Task_step(D_task_ALGO_cali_mode) - if(D_ON == s->cali_mode) - {///PrintFlow_L0_uart0_uc(0x30+s->cali_delay); - L2_task_go(D_task_ALGO_cali_save); - }else - { - /// ts_task_FLOW.t_stamp_set = 5;// 20s * = - /// LD_gsensor_power(D_PowerMode_suspend); - if(D_cam_EE == s->usPaperSection) - {PrintAlgo_L0_uart0_uc('a'); - LD_gsensor_power(D_PowerMode_low); - L3_task_s_go(ts_task_FLOW,0); - - L2_task_go(D_task_ALGO_cali_wait); - }else - { - L2_task_go(D_task_ALGO_cali_end); - } - } - - - - - - - - TTSS_Task_step(D_task_ALGO_cali_save) - if(s->cali_delay ++ > 8) - {///PrintFlow_L0_uart0_uc('c'); - L2_task_go(D_task_ALGO_cali_end); - }else - {///延时未溢出 - L2_task_go(D_task_ALGO_sa); - if(D_cam_150at == s->usPaperSection) - { - //PrintFlow_L0_uart0_uc('a'); - if(s->cali_timer ++ > 2) - { - s->usPaper150 = s->usSum; /// - L1_Iap_Write_us(D_paraAdd0_paper150,s->usPaper150); - L1_Iap_Write_us(D_paraAdd1_paper150,s->usPaper150); - PrintAlgo_L0_uart0_uc('f');///PrintFlow_str("flash", 5); - TS_paer_value.r123.cali_timer ++; - L2_task_go(D_task_ALGO_cali_end); - } - } - } - TTSS_Task_step(D_task_ALGO_cali_wait) - /// 只有没有中断的连续多少次的敲击才可以地进入cali 模式 - Lc_delay_ms(1); - L0_mcu_WKTC(D_WKTC_500MS); //掉电计时器 - L0_mcu_mode_powerdown();//进入休眠状态 - if(BITN_G(DR_who_wakeup, DRB_who_wakeup_action)) - { - BITN_0(DR_who_wakeup, DRB_who_wakeup_action); - PrintAlgo_L0_uart0_uc(s->cali_hit+0x30); - // PrintCam_L0_uart0_uc('#'); - if(s->cali_hit++ > 22) - {s->cali_hit = 0; - s->hit_ok = D_ready; - PrintAlgo_L0_uart0_uc('L'); - s->cali_mode = D_ON;s->cali_timer = s->cali_mode; - TS_paer_value.r123.cali_mode = 1; - L2_task_go(D_task_ALGO_sa); - } - }else - { - s->cali_hit = 0; - if(s->cali_over ++ > 25)///500ms*25 = 50s - { - s->cali_over = 0; - L2_task_go(D_task_ALGO_cali_end); - } - } - - TTSS_Task_step(D_task_ALGO_cali_end) - // PrintFlow_str("cali end", 9);// - // PrintAlgo_L0_uart0_uc('E'); - s->cali_mode = D_clear; - TS_paer_value.r123.cali_mode = s->cali_mode; - s->cali_delay = 0; -/// L3_task_s_go(ts_task_FLOW,D_task_init); -// - L2_task_go(D_task_ALGO_wait); - TTSS_Task_step(D_task_ALGO_sa) - L3_task_s_go(ts_task_FLOW,D_task_FLOW_wakeup); - L2_task_go(D_task_ALGO_wait); - - - *****************/ - TTSS_Task_end(); -} - -/**************************** - - -TTSS_Task_step(D_task_ALGO_updown) - L0_uart0_sendArray("paper =", 7); - D_send_ushex(s->usSum);L0_uart0_uc('-'); - #define D_paper_max 0x0b10 - ///0x0b1d 2845 - - - L2_task_go(D_task_ALGO_cal) -//L1_task_Tdelay(D_Tdelay_10ms); -TTSS_Task_step(D_task_ALGO_cal) - #ifdef D_debug_add_send - // L2_line_send();/// 把数据发送上去供测试使用 s_task_GC032A.buf - // D_send_us(DR_pclk_n); - // - #endif - s->usSum *= 10; // sum的最大值不能超出 - s->usPaper = s->usSum/s->usSum100; - s->ok = D_ready; - L2_task_go(D_task_ALGO_wait); - -#define D_F_low 30 -#define D_F_high 40 -#define D_F_diff 10 //D_F_high - D_F_low -cam 输出的一行数据的前一部分 -16 -16 -16 -16 -17 -18 -19 -22 -25 -26 -26 -27 -29 -28 -28 -27 -27 -26 -26 -26 -25 -25 -/// 去尖峰 削波 -/// ______/\___________ -/// / \ -/// / ...............................\--high -/// / \ -/// / \ -/// / low \---low -///-16 17-- \ -/// -***************************/ -///#define D_F_low 23 -///#define D_F_high 30 -///#define D_F_diff 5 //D_F_high - D_F_low -///#define D_F_diff (D_F_high - D_F_low) - - -vU16 L2_line_algo_media(U8 *buf,vU16 len) -{ - vU16 i,usV = 0;//,usi = 0; - U8 cache[3]; - U8 f1; - for(i = 1;i < len;i ++) - { - - cache[2] = cache[1]; - cache[1] = cache[0]; - cache[0] = buf[i]; - f1 = Lc_U8_media3(cache[2],cache[1],cache[0]); - ///-------------------------------------------------- - if(f1 > D_F_low)//> - { - if(f1 > D_F_high)//>40 - { - f1 = D_F_diff;// 10 - }else - { - f1 -= D_F_low;// 40 30 - } - }else - {// <=low - f1 = 0; - } - ///-------------------------------------------------- - /// buf[i] = f1; - usV += f1;///最大值 570*7 640*10 =6,400 65,535 - - } - return usV; -} - - - -#if 0 - - /// // s->usSum = L2_line_algo_media(test_buf,639); - if(ts_task_ALGO.usSum_temp > D_line_sum) - { - ////L3_task_s_go(ts_task_CALIB,D_task_CALIB_wait); - } - if(s->usSum_temp != s->usSum) - { - s->t++; - }else - { - s->t = 0; - } - if(s->t > 5) - { - L0_uart0_uc('X'); - }else - { - L0_uart0_uc('F'); - } - D_send_ushex(s->t);L0_uart0_uc(0x09); - - - TTSS_Task_step(D_task_ALGO_updown); - /// // s->usSum = L2_line_algo_media(test_buf,639); - if(ts_task_ALGO.usSum_temp > D_line_sum) - { - ////L3_task_s_go(ts_task_CALIB,D_task_CALIB_wait); - } - if(s->usSum_temp >= s->usSum) - { - s->t = s->usSum_temp - s->usSum; - }else - { - s->t = s->usSum - s->usSum_temp; - } - /// L0_uart0_uc(0x09); - L0_uart0_sendArray("paper =", 9); - D_send_ushex(s->usSum);L0_uart0_uc('-'); - D_send_ushex(s->usSum_temp);L0_uart0_uc('='); - s->usSum_temp = s->usSum; - #define D_paper_max 2000 - ///0x0b1d 2845 - - if(s->usSum > 0x0b10) - { - s->paperMode = D_max; - }else - { - s->paperMode = D_diff; - } - - if(s->t > D_paper_max) - { - - L0_uart0_uc('X'); - - }else - { - L0_uart0_uc('F'); - - - } - D_send_ushex(s->t);L0_uart0_uc(0x09); - L2_task_go(D_task_ALGO_cal); - //L1_task_Tdelay(D_Tdelay_10ms); - - L2_task_go(D_task_ALGO_updown); -TTSS_Task_step(D_task_ALGO_updown); - s->usLong = L2_line_algo_updown(s->p_buf2,639); - -vU16 L2_line_algo_updown(U8 *p_buf,U8 len) -{ - vU16 us_i = 0,up_point = 0,down_point = 0; - down_point = DR_pclk_n; - for(us_i = 1;us_i < len ;us_i ++) - { - if((p_buf[us_i - 1] == 0)&& - (p_buf[us_i] == 1))//// _/``上升沿 - { - if(p_buf[us_i + 1] == 0) - {//_/`\_ 尖峰需要过滤 - gRccUs03 ++; - }else - {// ___/````上升沿开始高电平 - up_point = us_i; - } - }else if((p_buf[us_i - 1] == 1)&& - (p_buf[us_i] == 0))//// ``\_ 下降沿 - { - down_point = gRccUs03; - }else - { - - } - } - us_i = down_point - up_point; - return us_i; -} - -#endif - - -#if 0 ///def D_buf_test -U8 test_buf[] -={ -19 ,// 0 -19 ,// 1 -19 ,// 2 -20 ,// 3 -20 ,// 4 -20 ,// 5 -20 ,// 6 -20 ,// 7 -20 ,// 8 -20 ,// 9 -19 ,// 10 -119 ,// 11 -19 ,// 12 -19 ,// 13 -19 ,// 14 -19 ,// 15 -19 ,// 16 -20 ,// 17 -20 ,// 18 -20 ,// 19 -20 ,// 20 -20 ,// 21 -20 ,// 22 -20 ,// 23 -20 ,// 24 -20 ,// 25 -19 ,// 26 -19 ,// 27 -19 ,// 28 -119 ,// 29 -19 ,// 30 -19 ,// 31 -19 ,// 32 -19 ,// 33 -19 ,// 34 -19 ,// 35 -19 ,// 36 -19 ,// 37 -19 ,// 38 -19 ,// 39 -19 ,// 40 -20 ,// 41 -20 ,// 42 -19 ,// 43 -19 ,// 44 -19 ,// 45 -19 ,// 46 -20 ,// 47 -20 ,// 48 -20 ,// 49 -19 ,// 50 -19 ,// 51 -19 ,// 52 -19 ,// 53 -19 ,// 54 -20 ,// 55 -20 ,// 56 -20 ,// 57 -19 ,// 58 -19 ,// 59 -19 ,// 60 -20 ,// 61 -20 ,// 62 -20 ,// 63 -20 ,// 64 -20 ,// 65 -20 ,// 66 -20 ,// 67 -20 ,// 68 -20 ,// 69 -120 ,// 70 -19 ,// 71 -19 ,// 72 -19 ,// 73 -20 ,// 74 -20 ,// 75 -20 ,// 76 -20 ,// 77 -20 ,// 78 -20 ,// 79 -20 ,// 80 -20 ,// 81 -20 ,// 82 -20 ,// 83 -20 ,// 84 -20 ,// 85 -20 ,// 86 -20 ,// 87 -20 ,// 88 -20 ,// 89 -20 ,// 90 -20 ,// 91 -20 ,// 92 -121 ,// 93 -20 ,// 94 -20 ,// 95 -20 ,// 96 -20 ,// 97 -20 ,// 98 -21 ,// 99 -21 ,// 100 -21 ,// 101 -22 ,// 102 -24 ,// 103 -26 ,// 104 -28 ,// 105 -30 ,// 106 -32 ,// 107 -35 ,// 108 -38 ,// 109 -40 ,// 110 -42 ,// 111 -44 ,// 112 -146 ,// 113 -50 ,// 114 -51 ,// 115 -52 ,// 116 -52 ,// 117 -53 ,// 118 -53 ,// 119 -54 ,// 120 -54 ,// 121 -55 ,// 122 -55 ,// 123 -55 ,// 124 -55 ,// 125 -55 ,// 126 -56 ,// 127 -55 ,// 128 -55 ,// 129 -55 ,// 130 -56 ,// 131 -55 ,// 132 -155 ,// 133 -54 ,// 134 -53 ,// 135 -53 ,// 136 -52 ,// 137 -52 ,// 138 -52 ,// 139 -51 ,// 140 -49 ,// 141 -45 ,// 142 -43 ,// 143 -41 ,// 144 -39 ,// 145 -38 ,// 146 -36 ,// 147 -34 ,// 148 -31 ,// 149 -129 ,// 150 -28 ,// 151 -28 ,// 152 -27 ,// 153 -27 ,// 154 -27 ,// 155 -27 ,// 156 -27 ,// 157 -27 ,// 158 -26 ,// 159 -26 ,// 160 -26 ,// 161 -25 ,// 162 -25 ,// 163 -24 ,// 164 -25 ,// 165 -25 ,// 166 -25 ,// 167 -25 ,// 168 -25 ,// 169 -24 ,// 170 -24 ,// 171 -24 ,// 172 -23 ,// 173 -23 ,// 174 -22 ,// 175 -23 ,// 176 -22 ,// 177 -22 ,// 178 -22 ,// 179 -22 ,// 180 -22 ,// 181 -22 ,// 182 -22 ,// 183 -21 ,// 184 -21 ,// 185 -21 ,// 186 -21 ,// 187 -21 ,// 188 -22 ,// 189 -21 ,// 190 -21 ,// 191 -21 ,// 192 -21 ,// 193 -21 ,// 194 -21 ,// 195 -21 ,// 196 -21 ,// 197 -21 ,// 198 -121 ,// 199 -21 ,// 200 -21 ,// 201 -21 ,// 202 -21 ,// 203 -21 ,// 204 -21 ,// 205 -21 ,// 206 -21 ,// 207 -21 ,// 208 -21 ,// 209 -20 ,// 210 -20 ,// 211 -20 ,// 212 -20 ,// 213 -20 ,// 214 -20 ,// 215 -21 ,// 216 -21 ,// 217 -21 ,// 218 -20 ,// 219 -21 ,// 220 -21 ,// 221 -20 ,// 222 -120 ,// 223 -20 ,// 224 -20 ,// 225 -20 ,// 226 -20 ,// 227 -20 ,// 228 -20 ,// 229 -20 ,// 230 -20 ,// 231 -20 ,// 232 -19 ,// 233 -19 ,// 234 -19 ,// 235 -19 ,// 236 -20 ,// 237 -21 ,// 238 -21 ,// 239 -21 ,// 240 -20 ,// 241 -20 ,// 242 -20 ,// 243 -20 ,// 244 -20 ,// 245 -20 ,// 246 -20 ,// 247 -20 ,// 248 -20 ,// 249 -20 ,// 250 -21 ,// 251 -21 ,// 252 -21 ,// 253 -21 ,// 254 -21 ,// 255 -20 ,// 256 -20 ,// 257 -20 ,// 258 -20 ,// 259 -20 ,// 260 -20 ,// 261 -20 ,// 262 -20 ,// 263 -20 ,// 264 -20 ,// 265 -19 ,// 266 -19 ,// 267 -19 ,// 268 -19 ,// 269 -19 ,// 270 -19 ,// 271 -19 ,// 272 -19 ,// 273 -19 ,// 274 -19 ,// 275 -19 ,// 276 -19 ,// 277 -19 ,// 278 -19 ,// 279 -19 ,// 280 -19 ,// 281 -19 ,// 282 -20 ,// 283 -20 ,// 284 -20 ,// 285 -20 ,// 286 -119 ,// 287 -19 ,// 288 -19 ,// 289 -19 ,// 290 -19 ,// 291 -19 ,// 292 -19 ,// 293 -19 ,// 294 -19 ,// 295 -19 ,// 296 -19 ,// 297 -19 ,// 298 -19 ,// 299 -19 ,// 300 -19 ,// 301 -19 ,// 302 -19 ,// 303 -19 ,// 304 -19 ,// 305 -19 ,// 306 -19 ,// 307 -49 ,// 308 -19 ,// 309 -20 ,// 310 -19 ,// 311 -19 ,// 312 -19 ,// 313 -19 ,// 314 -19 ,// 315 -20 ,// 316 -19 ,// 317 -19 ,// 318 -19 ,// 319 -19 ,// 320 -19 ,// 321 -19 ,// 322 -19 ,// 323 -19 ,// 324 -19 ,// 325 -19 ,// 326 -19 ,// 327 -19 ,// 328 -19 ,// 329 -20 ,// 330 -20 ,// 331 -20 ,// 332 -19 ,// 333 -20 ,// 334 -20 ,// 335 -20 ,// 336 -20 ,// 337 -20 ,// 338 -19 ,// 339 -19 ,// 340 -19 ,// 341 -19 ,// 342 -19 ,// 343 -19 ,// 344 -19 ,// 345 -19 ,// 346 -19 ,// 347 -20 ,// 348 -20 ,// 349 -20 ,// 350 -20 ,// 351 -20 ,// 352 -20 ,// 353 -20 ,// 354 -20 ,// 355 -19 ,// 356 -19 ,// 357 -19 ,// 358 -19 ,// 359 -19 ,// 360 -19 ,// 361 -19 ,// 362 -19 ,// 363 -19 ,// 364 -19 ,// 365 -19 ,// 366 -19 ,// 367 -19 ,// 368 -19 ,// 369 -19 ,// 370 -19 ,// 371 -19 ,// 372 -19 ,// 373 -19 ,// 374 -19 ,// 375 -19 ,// 376 -19 ,// 377 -19 ,// 378 -19 ,// 379 -19 ,// 380 -19 ,// 381 -19 ,// 382 -19 ,// 383 -19 ,// 384 -19 ,// 385 -19 ,// 386 -19 ,// 387 -20 ,// 388 -20 ,// 389 -19 ,// 390 -19 ,// 391 -19 ,// 392 -19 ,// 393 -19 ,// 394 -19 ,// 395 -19 ,// 396 -19 ,// 397 -19 ,// 398 -19 ,// 399 -19 ,// 400 -19 ,// 401 -19 ,// 402 -19 ,// 403 -19 ,// 404 -19 ,// 405 -19 ,// 406 -19 ,// 407 -19 ,// 408 -19 ,// 409 -19 ,// 410 -20 ,// 411 -19 ,// 412 -19 ,// 413 -19 ,// 414 -19 ,// 415 -19 ,// 416 -19 ,// 417 -19 ,// 418 -19 ,// 419 -19 ,// 420 -19 ,// 421 -19 ,// 422 -19 ,// 423 -19 ,// 424 -19 ,// 425 -19 ,// 426 -19 ,// 427 -19 ,// 428 -19 ,// 429 -19 ,// 430 -19 ,// 431 -19 ,// 432 -19 ,// 433 -19 ,// 434 -19 ,// 435 -19 ,// 436 -20 ,// 437 -19 ,// 438 -19 ,// 439 -19 ,// 440 -19 ,// 441 -19 ,// 442 -19 ,// 443 -19 ,// 444 -19 ,// 445 -19 ,// 446 -19 ,// 447 -19 ,// 448 -19 ,// 449 -19 ,// 450 -19 ,// 451 -19 ,// 452 -19 ,// 453 -19 ,// 454 -19 ,// 455 -19 ,// 456 -19 ,// 457 -19 ,// 458 -19 ,// 459 -19 ,// 460 -19 ,// 461 -19 ,// 462 -19 ,// 463 -19 ,// 464 -19 ,// 465 -19 ,// 466 -19 ,// 467 -19 ,// 468 -19 ,// 469 -19 ,// 470 -19 ,// 471 -19 ,// 472 -19 ,// 473 -19 ,// 474 -19 ,// 475 -19 ,// 476 -19 ,// 477 -19 ,// 478 -19 ,// 479 -19 ,// 480 -19 ,// 481 -19 ,// 482 -19 ,// 483 -19 ,// 484 -19 ,// 485 -19 ,// 486 -19 ,// 487 -19 ,// 488 -19 ,// 489 -19 ,// 490 -19 ,// 491 -19 ,// 492 -19 ,// 493 -19 ,// 494 -19 ,// 495 -19 ,// 496 -19 ,// 497 -18 ,// 498 -18 ,// 499 -18 ,// 500 -19 ,// 501 -19 ,// 502 -19 ,// 503 -19 ,// 504 -19 ,// 505 -19 ,// 506 -19 ,// 507 -19 ,// 508 -19 // 509 -}; -#endif diff --git a/source/app/app_algorithm.h b/source/app/app_algorithm.h deleted file mode 100644 index b855959..0000000 --- a/source/app/app_algorithm.h +++ /dev/null @@ -1,168 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file algorithm.h -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 -/// -/// -///algorithm///英 [??lg?r?e?m] 美 [??l???r?e?m] ///n.演算法;运算法则;计算程序 -/// -/// -/// -////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - -#ifndef _APP_algorithm_H -#define _APP_algorithm_H - -#include "../clib/Type.h" -#include "../ctask/task.h" -#include "../msp/uart0.h" -#include "../clib/clib.h" -//#include "../debug/debug_drv.h"// -//#include "../msp/msp_plcd.h" - -//#include "../msp/SHC6601_rtc.h" -///#include "app_rf.h" -//#include "app_as.h" - -#include "../tpc/tpc_uart.h" - -//>>>>>>>>>>>>>>>>>>>>>0开机task - - -#define D_task_ALGO_median 0x51 -#define D_task_ALGO_wait 0x52 - -#define D_task_ALGO_cal 0x53 -#define D_task_ALGO_updown 0x54 -#define D_task_ALGO_section 0x57 - -#define D_task_ALGO_cali_mode 0x63 -#define D_task_ALGO_para 0x64 -#define D_task_ALGO_200in 0x66 - -#define D_task_ALGO_cali_end 0x69 - -#define D_task_ALGO_cali_wait 0x70 -#define D_task_ALGO_cali_save 0x73 - - -#define D_task_ALGO_sa 0x6b - -#define D_line_sum 1000 ///判定白屏的阀值 - - - -typedef struct -{ - TS_task task; - vU16 usSum; - vU16 ustMP; - vU16 usPaper150; - vU16 usPaperNum; -// vU32 ul2; -// vU32 ul3; -// vU16 t; -/// vU16 usSum_temp; -// vU16 usSum100; -// vU16 usLong; /// 白区长度 -/// vU8 *p_buf2;// - vU8 usPaperSection; ///纸张的段数 - vU8 cali_delay; - vU8 cali_timer; - vU8 cali_over; - vU8 cali_hit; - vU8 hit_ok:1; - vU8 ok:1; - vU8 cali_mode:1; //D_OK - vU8 ok2:1; - vU8 paperMode:3;// - -// vU8 buf3[520];// - -}TS_task_ALGO_; -extern TS_task_ALGO_ ts_task_ALGO; - -extern void L2_task_ALGO_handle(TS_task_ALGO_ *s); -extern void L2_task_ALGO_init(void); -extern void L2_task_ALGO_handle22(TS_task_ALGO_ *s); - -/*********************** -10 0.93 - -20张 1.88mm --->0.094mm/paper -100 9.4 2.97mm-> 31.59574468 -150 14.1 15.9---> 169.1489362 2330 0x0924 -200 18.8 0 - - -****************/ - -#define D_paper_EE 0x0B10 ///0b1f - -#define D_paper_MAX 0x09AA ///2555 //170张 - -#define D_paper_150LR 250 ///上下浮动值 大概150/15 =10页 -#define D_paper_150at 0x087f ///150张校准 2330/150 = 15point/张纸 -#define D_paper_00 0x0015 -#define D_paper_150at_top (D_paper_150at + D_paper_150LR) -#define D_paper_150at_bottom (D_paper_150at - D_paper_150LR) - -#define D_cam_EE 0 -#define D_cam_top 1 -#define D_cam_150at 2 -#define D_cam_00 3 -#define D_cam_erro 4 -#define D_cam_noee 5 - -//<<<<<<<<<<<<<<<<<<<0开机task -#if 0 -#define PrintAlgo_L0_uart0_uchex(x) L0_uart0_uchex((x)) -#define PrintAlgo_L0_uart0_uc(x) L0_uart0_uc((x)) -#define PrintAlgo_D_send_us(x) D_send_ushex((x)) - -#define PrintAlgo_str(x,len) L0_uart0_sendArray((x),len) -#else - -#define PrintAlgo_L0_uart0_uchex(x) -#define PrintAlgo_L0_uart0_uc(x) -#define PrintAlgo_D_send_us(x) - -#define PrintAlgo_str(x,len) - -#endif -/************************************************************ -/// 去尖峰 削波 -/// ______/\___________ -/// / \ -/// / ...............................\--high -/// / \ -/// / \ -/// / low \---low -///-16 17-- \ -/// -*******************************************/ -#define D_F_low 23 -#define D_F_high 30 -#define D_F_diff 5 //D_F_high - D_F_low -///#define D_F_diff (D_F_high - D_F_low) - -#endif //_APP_algorithm_H ALGO - - - diff --git a/source/app/app_calibration.c b/source/app/app_calibration.c deleted file mode 100644 index 12ecec7..0000000 --- a/source/app/app_calibration.c +++ /dev/null @@ -1,149 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -/// COPYRIGHT NOTICE -/// Copyright (c) 2015, 传控科技 -/// All rights reserved. -/// -/// @file app_calibration.c -/// @brief app_calibration app -/// -///(本文件实现的功能的详述) -/// -/// @version 1.1 CCsens technology -/// @author CC -/// @date 20170101 -/// -/// -/// 修订说明:最初版本 -/// Modified by: -/// Modified date: -/// Version: -/// Descriptions: -/// 应用流程 一般包括上电时序等 -////////////////////////////////////////////////////////////////////////// - -#include "app_calibration.h" -#include "../clib/Clib.h" -#include "../clib/bit.h" -#include "../bsp/bsp_cam.h" -/// - -#include "../bsp/bsp_power.h" - -TS_task_CALIB_ ts_task_CALIB; - -void L2_task_CALIB_init(void) -{ - ts_task_CALIB.status = 0; - L1_task_init(&ts_task_CALIB.task); - L3_task_s_go(ts_task_CALIB,D_task_init); -} - -//>>>>>>>>>>>>>>>>>>>>>0开机task -///L2_task_CALIB_init(); - -///L2_task_CALIB_handle(&ts_task_CALIB); -void L2_task_CALIB_handle(TS_task_CALIB_ *s) -{ - TTSS_Task_init(); - if(D_ready == ts_task_power.power2) - { - ts_task_power.power2 = D_clear; - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - L1_as_readXYZ(0); - - - } - - -#if 0 - L0_uart0_uc('a'); - - ts_task_power.power2 = D_clear; - ts_task_CALIB.calib_time = D_clear; - L1_task_Tdelay(D_Tdelay_1s); - - - L2_task_go(D_task_CALIB_wait); - #endif - TTSS_Task_step(D_task_CALIB_rr); - - - TTSS_Task_step(D_task_CALIB_wait); - - if(D_ready == ts_task_power.power2) - { - ts_task_power.power2 = D_clear; - L0_uart0_uc('#'); - ts_task_CALIB.status ++; - if(ts_task_CALIB.status <= 8) - { - }else - { - L0_uart0_uc('!'); - ts_task_CALIB.status = 0; - ts_task_CALIB.calib_time = D_ready; - } - }else - { - ts_task_CALIB.status = 0; - ts_task_CALIB.calib_time = D_clear; - L0_uart0_uc('0'); - } - L2_task_go(D_task_CALIB_wait); - //L1_task_Tdelay(D_Tdelay_1s); - L1_task_Tdelay(D_Tdelay_500ms);////固定的间隔内是否连续收到校准敲击 - TTSS_Task_step(D_task_CALIB_sleep); - - L2_task_go(D_task_CALIB_init_sensor); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_end(); -} - -/********* -if(D_ready == ts_task_power.power2) -{ - ts_task_power.power2 = D_clear; - L0_uart0_uc('#'); - ts_task_CALIB.status ++; - if(ts_task_CALIB.status <= 4) - { - }else - { - L0_uart0_uc('!'); - // L1_task_Tdelay(D_Tdelay_1s); - // L2_task_go(D_task_CALIB_wait); - - } - /// L1_task_Tdelay(D_Tdelay_1s); - L2_task_go(D_task_CALIB_wait); -}else -{ - ts_task_CALIB.status = 0; - L0_uart0_uc('0'); - L1_task_Tdelay(D_Tdelay_2s); -} - - - - - -*********/ - - diff --git a/source/app/app_calibration.h b/source/app/app_calibration.h deleted file mode 100644 index a7dae87..0000000 --- a/source/app/app_calibration.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef _APP_calibration_H -#define _APP_calibration_H - -#include "../clib/Type.h" -#include "../ctask/task.h" -#include "../msp/uart0.h" -#include "../clib/clib.h" -//#include "../debug/debug_drv.h"// -//#include "../msp/msp_plcd.h" - -//#include "../msp/SHC6601_rtc.h" -///#include "app_rf.h" -//#include "app_as.h" -#include "../bsp/cw63xx.h" -#include "../bsp/bsp_msa300.h" -#include "../tpc/tpc_uart.h" -#include "../bsp/bsp_cam_isr.h" - -//>>>>>>>>>>>>>>>>>>>>>0开机task - -///#define D_task_CALIB_ask 0x56 -///#define D_task_CALIB_enter 0x57 -///#define D_task_CALIB_init 0x10 - -///#define D_task_OSD_init_key 0x11 -///#define D_task_CALIB_STEP 0x30 -///#define D_task_CALIB_heratbeat 0x70 - - -#define D_task_CALIB_send 0x40 -#define D_task_CALIB_send2 0x41 -#define D_task_CALIB_send3 0x42 - -#define D_task_CALIB_PreSend 0x43 -#define D_task_CALIB_PreSend2 0x44 - - - -#define D_task_CALIB_wait 0x51 -#define D_task_CALIB_rr 0x52 - -#define D_task_CALIB_sleep 0x53 -#define D_task_CALIB_init_sensor 0x54 -#define D_task_CALIB_wait_sensor 0x55 -#define D_task_CALIB_wakeup 0x56 -#define D_task_CALIB_wakeup2 0x57 -#define D_task_CALIB_overtime 0x58 -#define D_task_CALIB_wakeup3 0x59 - -typedef struct -{ - TS_task task; -// vU8 t_stamp;// -// vU8 first_run;// - unsigned char calib_time;// - unsigned char status;// -// unsigned char key;// -}TS_task_CALIB_; -extern TS_task_CALIB_ ts_task_CALIB; - -extern void L2_task_CALIB_handle(TS_task_CALIB_ *s); -extern void L2_task_CALIB_init(void); -extern void L2_task_CALIB_handle22(TS_task_CALIB_ *s); - - -//<<<<<<<<<<<<<<<<<<<0开机task - -#endif //_APP_calibration_H calib - - - diff --git a/source/app/app_config.c b/source/app/app_config.c new file mode 100644 index 0000000..2489081 --- /dev/null +++ b/source/app/app_config.c @@ -0,0 +1,107 @@ +#include "app_config.h" +#include "../bsp/cs1232.h" +#include "../bsp/chipid.h" +#include "../msp/eeprom.h" + +GlobalParam G; +GlobalRegister R; + +void L3_param_init(void) +{ +#if 0 + int i; + for(i=0;i>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Register CONFIG +//瀵勫瓨鍣ㄧ紪鍙蜂粠1寮濮 +//#define D_COUNT_WEIGHT(adc) (U32)(1000.0 * R.p.weight_max * (adc) / (2 * 0x7FFFFF / 1000 * D_ADS1213_GAIN_VAL * R.p.lmd)) +//#define D_blur_threshold_2_1(threshold) (U32) ( 1.0 * threshold *(2 * 0x7FFFFF / 1000 * D_ADS1213_GAIN_VAL * R.p.lmd) / (1000.0 * R.p.weight_max )) +#define D_COUNT_WEIGHT(adc) (U32)((adc) / D_ADS1213_GAIN_VAL / R.p.lmd * R.p.weight_max * 1000 / (2 * 0x7FFFFF / 1000 )) +#define D_COUNT_ADC(wInG) (U32)((wInG) * D_ADS1213_GAIN_VAL * R.p.lmd * (2 * 0x7FFFFF / 1000) / R.p.weight_max / 1000) + +#define ADC_status_chx_Ready_BASE 0x01 +#define ADC_status_ch1_Ready 0x01 +#define ADC_status_ch2_Ready 0x02 +#define ADC_status_ch3_Ready 0x04 +#define ADC_status_ch4_Ready 0x08 +#define D_ADC_CHANNEL_NUM 4 +typedef struct global_register +{ + //RO Register + U16 reserved1; + U32 total_weight; //鍑閲嶏紙鏄剧ず閲嶉噺锛*100 + U32 total_zweight; //鐨噸*100 + //RW Register + U16 reserved2; + U16 zero; //娓0鏍囧織锛屽啓鍏ヤ换浣曞兼竻0锛堝幓鐨級 + U16 status_eep_save; //eep鍐欏叆瀵勫瓨鍣紝1鍒欏啓鍏ep骞舵竻0 + //U16 reset; //reset鏍囧織锛屽啓鍏ヤ换浣曞硷紝鎵鏈夊弬鏁版仮澶嶅垵濮嬪 + struct + { //闇瑕佹寔涔呭寲鐨勫弬鏁帮紝涓嶈兘瓒呰繃72瀛楄妭锛屽惁鍒欎細瀵艰嚧eeprom婧㈠嚭 + U16 slaver_id; + U16 adc_ch_status; + U16 weight_max; //閲忕▼ + U16 lmd; //2mv/v + U16 adc_blur_mid; //涓兼护娉 + U16 adc_blur_avg; //鍧囧兼护娉 + U16 adc_blur_shift[3]; //绉讳綅婊ゆ尝鐐规暟 + U16 adc_blur_threshold[2]; //绉讳綅婊ゆ尝闃鍊 + }p; + U16 reserved3; + U32 adval[D_ADC_CHANNEL_NUM]; //4璺噸閲 + U32 ch_weight[D_ADC_CHANNEL_NUM]; //4璺噸閲 + U32 rough_weight; // 姣涢噸 +}GlobalRegister; + +extern GlobalRegister R; + +//瀵勫瓨鍣ㄥ唴瀛樺熀鍦板潃 +#define REG_MEM_BASE ((U16*)(&R)) //瀵勫瓨鍣ㄥ熀纭鍦板潃锛堟湰鏂囦欢澶栭儴涓嶅簲璇ヤ娇鐢ㄨ瀹忓畾涔夛級 +//鍙橀噺鍦板潃杞瘎瀛樺櫒 +#define MEM_2_REG(mem) (((U16*)(mem) - REG_MEM_BASE) + 1) +//瀵勫瓨鍣ㄨ浆鍙橀噺鍦板潃 +#define REG_2_MEM(reg) (REG_MEM_BASE + (U16)((reg) - 1)) +//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Global Variables CONFIG +typedef struct global_param +{ + U8 xx; +}GlobalParam; +extern struct global_param G; +//STEP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>0开机task -#define D_FLOW_t_stamp 10 - -void L2_task_FLOW_handle33(TS_task_FLOW_ *s) -{ - TTSS_Task_init(): -/// PrintFlow_L0_uart0_uc('F'); - ts_task_ALGO.paperMode = D_max; - - L2_task_go(D_task_FLOW_wakeup); - - TTSS_Task_end(); -} - - - - diff --git a/source/app/app_flow.h b/source/app/app_flow.h deleted file mode 100644 index 52a504f..0000000 --- a/source/app/app_flow.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef _APP_FLOW_H -#define _APP_FLOW_H - - - -#include "../clib/Type.h" -#include "../ctask/task.h" -#include "../msp/uart0.h" -#include "../clib/clib.h" -//#include "../debug/debug_drv.h"// -//#include "../msp/msp_plcd.h" - -//#include "../msp/SHC6601_rtc.h" -///#include "app_rf.h" -//#include "app_as.h" -#include "../tpc/tpc_uart.h" - -//>>>>>>>>>>>>>>>>>>>>>0开机task - -///#define D_task_FLOW_ask 0x56 -///#define D_task_FLOW_enter 0x57 -///#define D_task_FLOW_init 0x10 - -///#define D_task_OSD_init_key 0x11 -///#define D_task_FLOW_STEP 0x30 -///#define D_task_FLOW_heratbeat 0x70 - -#define D_task_FLOW_wait_cam1 0x51 -#define D_task_FLOW_wait_cam 0x52 - -#define D_task_FLOW_lowPower 0x53 -#define D_task_FLOW_work 0x5b -#define D_task_FLOW_cali 0x5c - -#define D_task_FLOW_init_sensor 0x54 -#define D_task_FLOW_wait_sensor 0x55 -#define D_task_FLOW_wakeup 0x56 -#define D_task_FLOW_wakeup2 0x57 -#define D_task_FLOW_overtime 0x58 -#define D_task_FLOW_wakeup3 0x59 - -typedef struct -{ - TS_task task; - vU8 t_stamp; - vU16 t_stamp2; - vU16 wakeup_timer; - - vU8 long_hit; -// vU8 first_run;// -// unsigned char area;// -// unsigned char status;// -// unsigned char key;// -}TS_task_FLOW_; -extern TS_task_FLOW_ ts_task_FLOW; - -extern void L2_task_FLOW_handle(TS_task_FLOW_ *s); -extern void L2_task_FLOW_init(void); -extern void L2_task_FLOW_handle33(TS_task_FLOW_ *s); - - -extern TS_P_rf433 TS_paer_value; -#if 0 -#define PrintFlow_L0_uart0_uchex(x) L0_uart0_uchex((x)) -#define PrintFlow_L0_uart0_uc(x) L0_uart0_uc((x)) -#define PrintFlow_D_send_us(x) D_send_ushex((x)) - -#define PrintFlow_str(x,len) L0_uart0_sendArray((x),len) -#else - -#define PrintFlow_L0_uart0_uchex(x) -#define PrintFlow_L0_uart0_uc(x) -#define PrintFlow_D_send_us(x) - -#define PrintFlow_str(x,len) - -#endif - -//<<<<<<<<<<<<<<<<<<<0开机task - -#endif - - - diff --git a/source/app/app_paraid.c b/source/app/app_paraid.c deleted file mode 100644 index bd61ebb..0000000 --- a/source/app/app_paraid.c +++ /dev/null @@ -1,124 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -/// COPYRIGHT NOTICE -/// Copyright (c) 2015, 传控科技 -/// All rights reserved. -/// -/// @file app_paraid.c -/// @brief parameter & id app -/// -///(本文件实现的功能的详述) -/// -/// @version 1.1 CCsens technology -/// @author CC -/// @date 20190107 -/// -/// -/// 修订说明:最初版本 -/// Modified by: -/// Modified date: -/// Version: -/// Descriptions: -/// -////////////////////////////////////////////////////////////////////////// - -#include "app_algorithm.h" -#include "app_paraid.h" -#include "../clib/Clib.h" -#include "../clib/bit.h" -#include "../msp/msp_eeprom.h" -// - -/// - -#define D_paraid_debug_print -/// 本机id -/// 纸张的配置参数 - -void L1_paraid_init(void) -{ - vU16 pa[2]; - -/// char *ID; -/// ID = (char idata *)0xf1;/// for (i=0; i<7; i++) { UartSend(ID[i]); } - ///UartSend(ID[i]); - -// L1_Iap_Read_us(D_paraAdd_paper150,&ts_task_ALGO.usPaper150); -// L1_Iap_Read_us(D_paraAdd_paper150,&ts_task_ALGO.usPaper150); -// L1_Iap_main(); - - - L1_Iap_Read_us(D_paraAdd0_paper150,&pa[0]); - L1_Iap_Read_us(D_paraAdd1_paper150,&pa[1]); - #ifdef D_paraid_debug_print - L0_uart0_us(pa[0]);L0_uart0_us(pa[1]); L0_uart0_uc(0xAA); - #endif - if(pa[1] == pa[0]) - { - if(0xffff != pa[1]) - { - if(pa[0] < D_paper_150at_top) - { - if(pa[0] > D_paper_150at_bottom) - { - goto GOTO_PARA_OK; - } - } - } - } - - - -/// GOTO_PARA_ERRO: - L1_Iap_Write_us(D_paraAdd0_paper150,D_paper_150at); - L1_Iap_Write_us(D_paraAdd1_paper150,D_paper_150at); - pa[0] = D_paper_150at; - - GOTO_PARA_OK: - ts_task_ALGO.usPaper150 = pa[0]; - #ifdef D_paraid_debug_print - L0_uart0_us(ts_task_ALGO.usPaper150);L0_uart0_uc(0xBB); - #endif - ///nothing - -} - - - - -void L1_Iap_Write_us(vU16 addr,vU16 val) -{ - EA = 0; - /********* - IAP_CONTR = WT_12M; //使能IAP - IAP_CMD = 3; //设置IAP擦除命令 - IAP_ADDRL = addr; //设置IAP低地址 - IAP_ADDRH = addr >> 8; //设置IAP高地址 - IAP_TRIG = 0x5a; //写触发命令(0x5a) - IAP_TRIG = 0xa5; //写触发命令(0xa5) - _nop_(); // - _nop_(); - - - IAP_CMD = 2; //设置IAP写命令 - IAP_DATA = dat; //写IAP数据 - IAP_TRIG = 0x5a; //写触发命令(0x5a) - IAP_TRIG = 0xa5; //写触发命令(0xa5) - _nop_(); - L0_Iap_Idle(); //关闭IAP功能 - ***************/ - L0_Iap_Erase(addr); - L0_Iap_Program(addr,val>>8); - L0_Iap_Program(addr+1,val&0x00ff); - EA = 1; -} - - -void L1_Iap_Read_us(vU16 addr,vU16 *val) -{ - EA = 0; - *val = L0_Iap_Read(addr); - *val <<= 8; - *val |= L0_Iap_Read(addr+1); - EA = 1; - -} diff --git a/source/app/app_paraid.h b/source/app/app_paraid.h deleted file mode 100644 index f17c65b..0000000 --- a/source/app/app_paraid.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _app_paraid_H -#define _app_paraid_H - -#include "../clib/clib.h" -extern void L1_Iap_Read_us(vU16 addr,vU16 *val); - -extern void L1_Iap_Write_us(vU16 addr,vU16 val); -#define D_paraAdd0_paper150 0x0000 -#define D_paraAdd1_paper150 0x0200 -extern void L1_paraid_init(void); - -#endif //_app_paraid_H calib - - - diff --git a/source/app/app_task_adc.c b/source/app/app_task_adc.c deleted file mode 100644 index ca31cd5..0000000 --- a/source/app/app_task_adc.c +++ /dev/null @@ -1,352 +0,0 @@ -#include "app_task_adc.h" -#include "../msp/UART0.h" - -//TS_ADC_CH_SWITCH ts_adc_ch_switch; -TS_ADC_CH_SAMPLE ts_adc_ch_sample[D_ch_max_num]; -TS_ADC_CH_BLUR ts_adc_ch_blur[D_ch_max_num]; -TS_ADC_ALL_BLUR ts_adc_all_blur; -TS_ADC_ALL_OUT ts_adc_all_out; -TS_ADC_SHOW ts_adc_show; - -void L3_task_adc_init(void) -{ - U8 i = 0; - for(i=0;ich_n)) - { - L2_task_go(D_task_ADC_CHx_WAIT_LOW_LEVEL); - } - else - { - s->adcval = s->pool; - L2_task_go(D_task_ADC_CHx_OUT); - } - - TTSS_Task_step(D_task_ADC_CHx_WAIT_LOW_LEVEL): - if(0 == L0_2dc_DOUT_AT(s->ch)) - { - L2_task_go(D_task_ADC_CHx_READ); - } - - TTSS_Task_step(D_task_ADC_CHx_READ): - s->adcval = L0_ADS1231_readCH(s->ch); - L2_task_go(D_task_ADC_CHx_OUT); - - TTSS_Task_step(D_task_ADC_CHx_OUT): - s->pool = s->adcval; - s->sum += s->adcval; - ++s->n; - if(s->n >= D_ADC_CH_SAMPLE_BUF_MAX) - { - s->n = 0; - s->sum = 0; - } - L2_task_go(D_task_ADC_CHx_SAMPLE); - - TTSS_Task_end(); -} - -//鍗曡矾婊ゆ尝浠诲姟 -#define D_task_ADC_CHx_BLUR_GET 0x51 -#define D_task_ADC_CHx_BLUR_AVG 0x52 -#define D_task_ADC_CHx_BLUR_SHIFT 0x53 -#define D_task_ADC_CHx_BLUR_COUNT 0x54 - -void L3_task_adc_ch_blur(TS_ADC_CH_BLUR *s) -{ - TTSS_Task_init(): - L2_task_go(D_task_ADC_CHx_BLUR_GET); - - TTSS_Task_step(D_task_ADC_CHx_BLUR_GET): - if(ts_adc_ch_sample[s->ch_n].n >= G.p.cc_blur_ch_avg) - { - s->SA_sum = ts_adc_ch_sample[s->ch_n].sum; - s->SA_n = ts_adc_ch_sample[s->ch_n].n; - ts_adc_ch_sample[s->ch_n].sum = 0; - ts_adc_ch_sample[s->ch_n].n = 0; - L2_task_go(D_task_ADC_CHx_BLUR_AVG); - } - - TTSS_Task_step(D_task_ADC_CHx_BLUR_AVG): - s->SA_avg = s->SA_sum / s->SA_n; - L2_task_go(D_task_ADC_CHx_BLUR_SHIFT); - - TTSS_Task_step(D_task_ADC_CHx_BLUR_SHIFT): - s->SHA_sum -= s->SHA_avg; - s->SHA_sum += s->SA_avg; - s->SHA_avg = (S32)(s->SHA_sum >> G.p.cc_blur_ch_shift); - s->n++; - L2_task_go(D_task_ADC_CHx_BLUR_COUNT); - - TTSS_Task_step(D_task_ADC_CHx_BLUR_COUNT): - G.weight[s->ch_n] = D_COUNT_WEIGHT(s->SHA_avg); - L2_task_go(D_task_ADC_CHx_BLUR_GET); - - TTSS_Task_end(); -} - - -//鍗曡矾婊ゆ尝浠诲姟 -#define D_task_ADC_ALL_BLUR_GET 0x51 -#define D_task_ADC_ALL_BLUR_SHIFT0 0x52 -#define D_task_ADC_ALL_BLUR_SHIFT1 0x53 - -void L3_task_adc_all_blur(TS_ADC_ALL_BLUR *s) -{ - TTSS_Task_init(): - L2_task_go(D_task_ADC_CHx_BLUR_GET); - - TTSS_Task_step(D_task_ADC_CHx_BLUR_GET): - //if(ts_adc_ch_blur[D_ch_max_num-1].n >= 1) - if(ts_adc_ch_blur[0].n >= 1) - { - ts_adc_ch_blur[0].n = 0; - ts_adc_ch_blur[1].n = 0; - ts_adc_ch_blur[2].n = 0; - ts_adc_ch_blur[3].n = 0; - s->sum = G.weight[0] + G.weight[1] + G.weight[2] + G.weight[3]; - L2_task_go(D_task_ADC_ALL_BLUR_SHIFT0); - } - - TTSS_Task_step(D_task_ADC_ALL_BLUR_SHIFT0): - s->SHA_sum_0 -= s->SHA_avg_0; - s->SHA_sum_0 += s->sum; - s->SHA_avg_0 = (S32)(s->SHA_sum_0 >> G.p.cc_blur_all_shift0); - s->SHA_pool_0[0] = s->SHA_pool_0[1]; - s->SHA_pool_0[1] = s->SHA_pool_0[2]; - s->SHA_pool_0[2] = s->SHA_avg_0; - L2_task_go(D_task_ADC_ALL_BLUR_SHIFT1); - - TTSS_Task_step(D_task_ADC_ALL_BLUR_SHIFT1): - s->SHA_sum_1 -= s->SHA_avg_1; - s->SHA_sum_1 += s->sum; - s->SHA_avg_1 = (S32)(s->SHA_sum_1 >> G.p.cc_blur_all_shift1); - //s->SHA_pool_1[0] = s->SHA_pool_1[1]; - //s->SHA_pool_1[1] = s->SHA_pool_1[2]; - //s->SHA_pool_1[2] = s->SHA_avg_1; - - s->n++; - L2_task_go(D_task_ADC_CHx_BLUR_GET); - - TTSS_Task_end(); -} - - -#define D_task_ADC_ALL_OUT_GET 0x51 -#define D_task_ADC_ALL_OUT_DECIDE 0x52 -#define D_task_ADC_ALL_OUT_SHOW 0x53 -#define D_task_ADC_ALL_OUT_SHOW_1 0x54 -#define D_task_ADC_ALL_OUT_DEBUG 0x55 - -void L3_task_adc_all_out(TS_ADC_ALL_OUT *s) -{ - TTSS_Task_init(): - //s->diff_threshold = (G.p.cc_blur_all_out_threshold); - //s->diff_threshold1 = (G.p.cc_blur_all_out_threshold1); - //s->diff_threshold2 = (G.p.cc_blur_all_out_threshold2); - //s->should_show_times_threshold = (G.p.cc_blur_all_out_should_show_times_threshold); - L2_task_go(D_task_ADC_ALL_OUT_GET); - - TTSS_Task_step(D_task_ADC_ALL_OUT_GET): - if(ts_adc_all_blur.n >= 1) - { - ts_adc_all_blur.n = 0; - Lc_buf_copy_uc((U8*)s->SHA_pool, (U8*)ts_adc_all_blur.SHA_pool_0, D_ADC_CH_BLUE_POOL_NUM * sizeof(S32)); - s->SHA_diff[0] = Lc_abs(s->SHA_pool[1] , s->SHA_pool[0]); - s->SHA_diff[1] = Lc_abs(s->SHA_pool[2] , s->SHA_pool[1]); - s->SHA_ddiff[0] = Lc_abs(s->SHA_diff[1] , s->SHA_diff[0]); - L2_task_go(D_task_ADC_ALL_OUT_DECIDE); - } - - TTSS_Task_step(D_task_ADC_ALL_OUT_DECIDE): - if((s->SHA_diff[1] >= G.p.cc_blur_all_out_d_threshold) || (s->SHA_diff[0] >= G.p.cc_blur_all_out_d_threshold) || (s->SHA_ddiff[0] >= G.p.cc_blur_all_out_dd_threshold)) - { - #if 1 - s->sum = s->SHA_pool[2] + s->SHA_pool[1] + s->SHA_pool[0]; - ts_adc_all_blur.SHA_sum_1 = s->sum; - ts_adc_all_blur.SHA_sum_1 <<= G.p.cc_blur_all_shift1; - ts_adc_all_blur.SHA_sum_1 /= 3; - ts_adc_all_blur.SHA_avg_1 = (S32)(ts_adc_all_blur.SHA_sum_1 >> G.p.cc_blur_all_shift1); - //s->val = ts_adc_all_blur.SHA_avg_0; - s->val = s->sum / 3; - //s->t = 0; - #else - ts_adc_all_blur.SHA_sum_1 = ts_adc_all_blur.SHA_avg_0 << G.p.cc_blur_all_shift1; - ts_adc_all_blur.SHA_avg_1 = ts_adc_all_blur.SHA_avg_0; - s->val = ts_adc_all_blur.SHA_avg_0; - //s->t = 0; - #endif - } - else - { - s->val = ts_adc_all_blur.SHA_avg_1; - //s->t = 1; - } - s->n++; - L2_task_go(D_task_ADC_ALL_OUT_GET); - TTSS_Task_end(); -} - -#define D_task_ADC_SHOW_GET 0x53 -#define D_task_ADC_SHOW_1 0x54 -#define D_task_ADC_SHOW_DEBUG 0x55 -void L3_task_adc_show(TS_ADC_SHOW *s) -{ - U8 i = 0,find = 0,j = 0; - TTSS_Task_init(): - L2_task_go(D_task_ADC_SHOW_GET); - - TTSS_Task_step(D_task_ADC_SHOW_GET): - if(ts_adc_all_out.n >= 1) - { - ts_adc_all_out.n = 0; - s->val = ts_adc_all_out.val; - L2_task_go(D_task_ADC_SHOW_1); - } - - TTSS_Task_step(D_task_ADC_SHOW_1): - if((s->val - s->pool_val) * s->pool_gt < 0) - { - //绗﹀彿鏀瑰彉锛岃鏁版竻0 - //L0_uart0_uc('-'); - L3_task_show_times_reset(); - } - s->pool_gt = (s->val >= s->pool_val) ? 1 : -1; - - s->diff_val = Lc_abs(s->val,s->pool_val); - for(i=0;idiff_val >= G.p.weight_show_limit[i].weight) - { - find = 1; - break; - } - } - if(find) - { - s->times[i]++; - for(j=0;jtimes[j] = 0; - } - } - } - else //灏忎簬鏄剧ず鍒嗚鲸鐜(<0.02kg) - { - L3_task_show_times_reset(); - } - - for(i=0;itimes[i] >= G.p.weight_show_limit[i].times) - { - L3_task_show_times_reset(); - s->pool_val = s->val; - G._total_weight = s->pool_val; - G.total_weight = L3_count_std_weight(G._total_weight); - break; - } - } - - L2_task_go(D_task_ADC_SHOW_GET); - //L2_task_go(D_task_ADC_SHOW_DEBUG); - - TTSS_Task_step(D_task_ADC_SHOW_DEBUG): - //L0_uart0_uc(s->t == 0 ? '0' : '1'); - s->u16_v = (vU16)(s->pool_val >> 16); - L0_uart0_ushex(s->u16_v,16); - s->u16_v = (vU16)(s->pool_val & 0x0000ffff); - L0_uart0_ushex(s->u16_v,16);//Lc_delay_us(500); - //L0_uart0_uc(0x0d); L0_uart0_uc(0x0a); - //L0_uart0_uc(' '); - //L0_uart0_uc(' '); - L2_task_go(D_task_ADC_SHOW_GET); - - TTSS_Task_end(); -} - - -void L3_task_show_times_reset() -{ - U8 i = 0; - for(i=0;i 5ms - if(ph4->ok) - { - ph4->ok = 0; - crc16(ph4->crc,ph4->buf,ph4->num - 2); - if(ph4->crc[0] == ph4->buf[ph4->num-2] && ph4->crc[1] == ph4->buf[ph4->num-1]) - { - L3_ph4_common_handler((TS_PH4_modbus*)(ph4->buf)); - } - else - { - L3_ph4_send_error_pkg(MODBUS_ERR_CRC); - } - } -} - - diff --git a/source/app/app_task_uart0.h b/source/app/app_task_uart0.h deleted file mode 100644 index 550bb31..0000000 --- a/source/app/app_task_uart0.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef APP_TASK_UART0_H -#define APP_TASK_UART0_H - -#include "common.h" -#include "../ctask/task.h" -#include "../tpc/tpc_modbus.h" - -//extern void L3_task_uart0_handler(TS_Handle_PH3 *ph3); -extern void L3_task_uart0_modbus_handler(TS_Handle_PH4 *ph4); - - -#endif diff --git a/source/app/app_ws.c b/source/app/app_ws.c deleted file mode 100644 index b1dad17..0000000 --- a/source/app/app_ws.c +++ /dev/null @@ -1,131 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -/// COPYRIGHT NOTICE -/// Copyright (c) 2020, 传控科技 -/// All rights reserved. -/// -/// @file app_flow.c -/// @brief app_flow app -/// -///(本文件实现的功能的详述) -/// -/// @version 1.1 CCsens technology -/// @author CC -/// @date 20170101 -/// -/// -/// 修订说明:最初版本 -/// Modified by: -/// Modified date: -/// Version: -/// Descriptions: -/// 应用流程 一般包括上电时序等 -////////////////////////////////////////////////////////////////////////// - - -#include "app_ws.h" - - -TS_P_rf433 TS_paer_value= -{ - 0xaa,///vU8 ha; -// 0xaa,///vU8 hb; - 0xad, - 0x0123, -// 0x00,///U16 paperNum:12; //12bit纸张数据 - ///U8 cameraIndex:2; //摄像头编号 - ///U8 cameraWorking:1; //是否正常工作 - ///U8 reserved: 1; //保留 - 0x56,///U8 cameraBoardPower; //电量 - 0xcc//, 0xaa///vU8 hc; -}; - - -TS_task_FLOW_ ts_task_FLOW; -void L0_p_send(void) -{ - unsigned char *p; - - TS_paer_value.ha = 0xaa; -// TS_paer_value.hb = 0xaa; -/// TS_paer_value.hc = 0xaa; -/// TS_paer_value.r123.cameraBoardPower ++; - - TS_paer_value.filter1 = 0x0a; - -///TS_paer_value.r123.cameraBoardPower = s_task_GC032A.buf[2];; - TS_paer_value.r123.cameraIndex = D_cameralIndex; - TS_paer_value.r123.cameraWorking = 0; - TS_paer_value.r123.paperNum = ts_task_ALGO.usPaperNum; -//// L1_cw63xx_sta();///只有等充满电后 才会被清零 - TS_paer_value.r123.LowPower = I2CTXD; -// TS_paer_value.r123.paperNum = 0x1234; - p = (unsigned char *)&TS_paer_value.r123; - TS_paer_value.ocr = *p; - p ++; - TS_paer_value.ocr += *p; - p ++; - TS_paer_value.ocr += *p; -// TS_paer_value.ocr = s_task_GC032A.buf[2]; -} - -void L2_task_FLOW_init(void) -{ - L1_task_init(&ts_task_FLOW.task); - L3_task_s_go(ts_task_FLOW,D_task_init); -} - -//>>>>>>>>>>>>>>>>>>>>>0开机task -#define D_FLOW_t_stamp 10 - -void L2_task_FLOW_handle33(TS_task_FLOW_ *s) -{ - TTSS_Task_init(): - PrintFlow_L0_uart0_uc('F'); - ts_task_ALGO.paperMode = D_max; - L0_nos_tick1s_start(s_nos_tick.n_stamp3); - L0_nos_tick1s_interval(s_nos_tick.n_stamp3) - - L2_task_go(D_task_FLOW_wakeup); - - TTSS_Task_step(D_task_WS_ch): - - - - - - TTSS_Task_step(D_task_WS_T):////到一定的时间 开始采集温度 进行补偿 - if(s_nos_tick.flag_1s2) - { - s_nos_tick.flag_1s2 = 0; - if(L0_nos_tick1s_interval(s_nos_tick.n_stamp3) > 60) - { - L0_nos_tick1s_start(s_nos_tick.n_stamp3); - - L0_ADS1213_CH(D_ADCCH_Toff); - L0_ADS1213_CH(D_ADCCH_1); - - L2_task_go(D_task_WS_T2); - - - }else - { - - L2_task_go(D_task_WS_ch); - } - - }else - { - L2_task_go(D_task_WS_ch); - - } - - TTSS_Task_step(D_task_WS_T2): -// L0_ADS1213_read(); - - - TTSS_Task_end(); -} - - - - diff --git a/source/app/app_ws.h b/source/app/app_ws.h deleted file mode 100644 index a449daa..0000000 --- a/source/app/app_ws.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef _APP_WS_H -#define _APP_WS_H - - - -#include "../clib/Type.h" -#include "../ctask/task.h" -#include "../msp/uart0.h" -#include "../clib/clib.h" -//#include "../debug/debug_drv.h"// -//#include "../msp/msp_plcd.h" - -//#include "../msp/SHC6601_rtc.h" -///#include "app_rf.h" -// -#include "../tpc/tpc_uart.h" -#include "../clib/bit.h" -#include "app_algorithm.h" - -//>>>>>>>>>>>>>>>>>>>>>0开机task - -///#define D_task_WS_ask 0x56 -///#define D_task_WS_enter 0x57 -///#define D_task_WS_init 0x10 - -///#define D_task_OSD_init_key 0x11 -///#define D_task_WS_STEP 0x30 -///#define D_task_WS_heratbeat 0x70 - -#define D_task_WS_wait_cam1 0x51 -#define D_task_WS_T 0x52 -#define D_task_WS_T2 0x62 - -#define D_task_WS_lowPower 0x53 -#define D_task_WS_work 0x5b -#define D_task_WS_cali 0x5c - -#define D_task_WS_ch 0x54 -#define D_task_WS_cal 0x55 - - - - -typedef struct -{ - TS_task task; - vU8 t_stamp; - vU16 t_stamp2; - vU16 wakeup_timer; - - vU8 long_hit; -// vU8 first_run;// -// unsigned char area;// -// unsigned char status;// -// unsigned char key;// -}TS_task_WS_; -extern TS_task_WS_ ts_task_WS; - -extern void L2_task_WS_handle(TS_task_WS_ *s); -extern void L2_task_WS_init(void); -extern void L2_task_WS_handle33(TS_task_WS_ *s); - - -extern TS_P_rf433 TS_paer_value; - - -//<<<<<<<<<<<<<<<<<<<0开机task - -#endif - - - diff --git a/source/app/common.c b/source/app/common.c deleted file mode 100644 index 67fc94f..0000000 --- a/source/app/common.c +++ /dev/null @@ -1,287 +0,0 @@ -#include "common.h" -//#include "../tpc/tpc_uart.h" -#include "../bsp/bsp_cs1232.h" -#include "../msp/msp_eeprom.h" -#include "../msp/msp_id.h" - -struct global_param G; -struct ts_eeprom_param eep_param; -struct ts_eeprom_enc eep_enc; - -#define EEP_SECTOR_SIZE 0x200 -#define EEP_PARAM_ADDR (EEP_SECTOR_SIZE * 1) -#define EEP_ENC_ADDR (EEP_SECTOR_SIZE * 0) - -void L3_eeprom_read_param() -{ - U8 dlen = 0; - L0_Iap_Read_array(EEP_PARAM_ADDR, (U8*)&eep_param, 2 + EEPROM_PARAM_DATA_MAX + 2); - if(eep_param.filter == EEPROM_PARAM_FILTER) - { - dlen = eep_param.len - 2; - crc16(eep_param.crc,(U8*)&eep_param,2+dlen); - if(eep_param.crc[0] == eep_param.buf[dlen] && eep_param.crc[1] == eep_param.buf[dlen+1]) - { - L0_uart0_uc('#'); - //Lc_buf_copy_uc((U8*)&G.p,(U8*)eep_param.buf,dlen); - Lc_buf_copy_uc((U8*)&G.p,(U8*)eep_param.buf,sizeof(G.p));//闃叉dlen>sizeof(G.P)寮曡捣鐨勫唴瀛橀敊璇 - } - } -} - -void L3_eeprom_persist_param() -{ - U8 dlen = sizeof(G.p); - eep_param.filter = EEPROM_PARAM_FILTER; - eep_param.len = dlen + 2; - Lc_buf_copy_uc((U8*)eep_param.buf,(U8*)&G.p,dlen); - crc16(eep_param.crc, &eep_param, 2+dlen); - eep_param.buf[dlen] = eep_param.crc[0]; - eep_param.buf[dlen+1] = eep_param.crc[1]; - - L0_Iap_Erase(EEP_PARAM_ADDR); - L0_Iap_Program_array(EEP_PARAM_ADDR, (U8*)&eep_param, 2 + dlen + 2); -} - -int L3_mcu_id_ok(void) -{ - U8 i = 0,crc[2]; - U32 enc_key; - //1.鑾峰彇MCU_ID - L0_id_get_rom(G.e.mcu_id); - for(i=0;i= weight) - { - break; - } - } - if(isalver = G.p.slaver_id; - pmodbus->oper = oper; - Lc_buf_copy_uc(pmodbus->buf,buf,bufsize); - crc16(pmodbus->crc,&pmodbus->salver,2 + bufsize); - pmodbus->buf[bufsize] = pmodbus->crc[0]; - pmodbus->buf[bufsize + 1] = pmodbus->crc[1]; - - return bufsize + 2 + 2; -} - -int L3_ph4_send_error_pkg(U8 errcode) -{ - TS_PH4_modbus modbusack; - U8 modbuslen = 0; - ModbusErrAck modbusErrAck; - modbusErrAck.errcode = errcode; - - modbuslen = L3_pack_PH4(&modbusack, MODBUS_OPER_ERR, &modbusErrAck, sizeof(modbusErrAck)); - L0_uart0_sendArray((U8*)&modbusack, modbuslen); - return 0; -} - - -TS_PH4_modbus modbusack; -Modbus03 modbus03; -Modbus03Ack modbus03Ack; -Modbus06 modbus06; -Modbus06Ack modbus06Ack; -Modbus10 modbus10; -Modbus10Ack modbus10Ack; - - -int L3_ph4_common_handler(TS_PH4_modbus *pmodbus) -{ - U8 handlerStatus = TP_HANDLED, modbuslen = 0; - switch(pmodbus->oper) - { - case 0x03: - { - U16 i = 0,j = 0,regval = 0; - modbus03.reg = ((U16)pmodbus->buf[0]) << 8 | ((U16)pmodbus->buf[1]); - modbus03.num = ((U16)pmodbus->buf[2]) << 8 | ((U16)pmodbus->buf[3]); - if((modbus03.num < 5) && (modbus03.reg < sizeof(G)/2)) //姣忔鏈澶氳鍙4涓瘎瀛樺櫒 8涓瓧鑺傦紝浠ラ槻姝㈣秺鐣 - { - for(i=0; i> 8 & 0xFF; - modbus03Ack.buf[j++] = regval & 0xFF; - } - modbus03Ack.bytes = modbus03.num * 2; - modbuslen = L3_pack_PH4(&modbusack, 0x03, &modbus03Ack, modbus03Ack.bytes + 1); - L0_uart0_sendArray((U8*)&modbusack, modbuslen); - } - break; - } - case 0x06: - { - modbus06.reg = ((U16)pmodbus->buf[0]) << 8 | ((U16)pmodbus->buf[1]); - modbus06.val = ((U16)pmodbus->buf[2]) << 8 | ((U16)pmodbus->buf[3]); - if(modbus06.reg < sizeof(G)/2) - { - if(modbus06.reg == MEM_2_REG(&G.p.zero)) - { - G._total_zweight = G._total_weight; - G.total_zweight = G._total_zweight/10; - G.total_weight = 0; - } - else if(modbus06.reg == MEM_2_REG(&G.p.reset)) - { - L3_reg_reset(); - } - else - { - *(REG_2_MEM(modbus06.reg)) = modbus06.val; - } - modbus06Ack.reg = modbus06.reg; - modbus06Ack.val = *(REG_2_MEM(modbus06.reg)); - modbuslen = L3_pack_PH4(&modbusack, 0x06, &modbus06Ack, 4); - L0_uart0_sendArray((U8*)&modbusack, modbuslen); - } - - //閲嶆柊璁$畻閲嶉噺 - G.total_weight = L3_count_std_weight(G._total_weight); - - //鎸佷箙鍖 - if(modbus06.reg > MEM_2_REG(&G.reserved2) && modbus06.reg < MEM_2_REG(&G.reserved3)) - { - L3_eeprom_persist_param(); - } - break; - } - case 0x10: - { - U16 i = 0,j = 0,regval = 0; - modbus10.reg = ((U16)pmodbus->buf[0]) << 8 | ((U16)pmodbus->buf[1]); - modbus10.num = ((U16)pmodbus->buf[2]) << 8 | ((U16)pmodbus->buf[3]); - modbus10.count = pmodbus->buf[4]; - if((modbus10.num < 21) && (modbus10.reg < sizeof(G)/2)) //姣忔鏈澶氬啓鍏20涓瘎瀛樺櫒 40涓瓧鑺傦紝浠ラ槻姝㈣秺鐣 - { - for(i=0; ibuf[5+i*2]) << 8 | ((U16)pmodbus->buf[5+i*2+1]); - *(REG_2_MEM(modbus10.reg + i)) = regval; - } - modbus10Ack.reg = modbus10.reg; - modbus10Ack.num = modbus10.num; - modbuslen = L3_pack_PH4(&modbusack, 0x10, &modbus10Ack, 4); - L0_uart0_sendArray((U8*)&modbusack, modbuslen); - } - - //閲嶆柊璁$畻閲嶉噺 - G.total_weight = L3_count_std_weight(G._total_weight); - - //鎸佷箙鍖 - if(modbus10.reg > MEM_2_REG(&G.reserved2) && modbus10.reg < MEM_2_REG(&G.reserved3)) - { - L3_eeprom_persist_param(); - } - break; - } - default: - L3_ph4_send_error_pkg(MODBUS_ERR_OPCODE); - break; - } - return handlerStatus; -} - diff --git a/source/app/common.h b/source/app/common.h deleted file mode 100644 index 6eb44e8..0000000 --- a/source/app/common.h +++ /dev/null @@ -1,238 +0,0 @@ -#ifndef APP_COMMON_H -#define APP_COMMON_H - -#include "../clib/type.h" - -#define APP_VERSION 0x10 -#define P485_SLAVER_ID 0x01 - -#define D_MCU_BIGENDIAN 1 -// #define D_MCU_LITTLEENDIAN 1 - -#define D_COUNT_WEIGHT(adc) ((S32)((1000.0 * G.p.weight_max * (adc)) / (2 * 0x7FFFFF / 1000 * D_ADS1213_GAIN_VAL * G.p.lmd))) - -enum tp_handle -{ - TP_HANDLED, - TP_UNHANDLE -}; - -/** - * EEPROM 瀛樺偍缁撴瀯 - */ -#define EEPROM_PARAM_DATA_MAX 86 -#define EEPROM_PARAM_FILTER 0xAA - -typedef struct ts_eeprom_param -{ - U8 filter; - U8 len; - U8 buf[EEPROM_PARAM_DATA_MAX]; - U8 crc[2]; -}EEPROM_PARAM; - -#define MCU_ID_LEN 7 -#define MCU_ID_KEY_LEN 4 -#define EEPROM_ENC_DATA_MAX 64 -#define EEPROM_ENC_FILTER 0xAA -typedef struct ts_eeprom_enc -{ - U8 enc_key[MCU_ID_KEY_LEN]; - U8 enc_val[MCU_ID_LEN]; - U8 crc[2]; -}EEPROM_ENC; - - -/** - * 鐢ㄦ埛鍗忚 - */ -enum PROTOCOL_OPER -{ - OPER_RESERVED = 0x00, - OPER_READ = 0x01, - OPER_WRITE = 0x02, - OPER_ACK = 0x03, - OPER_REPORT = 0x04, -}; - -enum MODBUS_OPER -{ - MODBUS_OPER_READ = 0x03, - MODBUS_OPER_WRITE = 0x06, - MODBUS_OPER_ERR = 0x8F, -}; - -enum MODBUS_ERR_CODE -{ - MODBUS_ERR_LEN = 0x01, - MODBUS_ERR_CRC = 0x02, - MODBUS_ERR_OPCODE = 0x03, -}; - -//鍗忚绫诲瀷: MODBUS RTU妯″紡 -//#define D_s_PH4_modbus_max (16) -#define D_s_PH4_modbus_max (64) - -typedef struct ts_ph4_modbus -{ - U8 salver; //浠庢満鍦板潃 - U8 oper; //鍔熻兘鐮 - U8 buf[D_s_PH4_modbus_max]; - U8 crc[2]; - U8 num; -}TS_PH4_modbus; - -typedef struct s_modbus_03 -{ - U16 reg; - U16 num; -}Modbus03; - -typedef struct s_modbus_03_ack -{ - U8 bytes; - U8 buf[D_s_PH4_modbus_max-1]; -}Modbus03Ack; - -typedef struct s_modbus_06 -{ - U16 reg; - U16 val; -}Modbus06; - -typedef struct s_modbus_06_ack -{ - U16 reg; - U16 val; -}Modbus06Ack; - -typedef struct s_modbus_10 -{ - U16 reg; - U16 num; - U8 count; -}Modbus10; - -typedef struct s_modbus_10_ack -{ - U16 reg; - U16 num; -}Modbus10Ack; - - -typedef struct s_modbus_err_ack -{ - U8 errcode; -}ModbusErrAck; - - - - - -/** - * Register Map - */ - -#define D_ch_max_num 4 -#define D_weight_std_num 10 - -#if 0 -搴忓彿 閲忕▼ 绯绘暟 -1 100kg 100% -2 200kg 100% -3 300kg 100% -4 400kg 100% -5 500kg 100% -6 600kg 100% -7 700kg 100% -8 800kg 100% -9 900kg 100% -10 1000kg 100% -#endif -typedef struct weight_stdization -{ - S16 weight_range; //閲忕▼ x 100 - S16 ratio; //閲嶉噺璁$畻绯绘暟锛岄粯璁100锛屼繚鐣欎袱浣嶅皬鏁帮紝鐩稿綋浜巟1 -}WeightStdization; - -#define D_weight_show_limit_num 5 -typedef struct weight_show_limit -{ - S16 weight; - S16 times; -}WeightShowLimit; - -//闇瑕佹寔涔呭寲鐨勫弬鏁帮紝涓嶈兘瓒呰繃72瀛楄妭锛屽惁鍒欎細瀵艰嚧eeprom婧㈠嚭 -typedef struct global_param_changable -{ - U16 reset; //reset鏍囧織锛屽啓鍏ヤ换浣曞硷紝鎵鏈夊弬鏁版仮澶嶅垵濮嬪 - U16 adc_ch_status; - S16 slaver_id; - S16 zero; //娓0鏍囧織锛屽啓鍏ヤ换浣曞兼竻0锛堝幓鐨級 - S16 weight_max; //閲忕▼ - S16 lmd; //2mv/v - S16 cc_blur_ch_avg; //鍧囧兼护娉㈢偣鏁 - S16 cc_blur_ch_shift; //绉讳綅婊ゆ尝鐐规暟 - S16 cc_blur_all_shift0; //鍜屽肩Щ浣嶆护娉㈢偣鏁1 - S16 cc_blur_all_shift1; //鍜屽肩Щ浣嶆护娉㈢偣鏁2 - S16 cc_blur_all_out_d_threshold; //绉讳綅闃堝1 - S16 cc_blur_all_out_dd_threshold;//绉讳綅闃堝2 - WeightShowLimit weight_show_limit[D_weight_show_limit_num]; - WeightStdization weight_std[D_weight_std_num]; -}GlobalNeedPersistParam; - -typedef struct mcu_encrypt_info -{ - U8 enc_key[MCU_ID_KEY_LEN]; - U8 mcu_id[MCU_ID_LEN]; - U8 mcu_enc_id[MCU_ID_LEN]; -}McuEncryptInfo; - -typedef struct global_param -{ - //RO Register - S16 reserved1; - S32 total_weight; //鍑閲嶏紙鏄剧ず閲嶉噺锛*100 - S32 total_zweight; //鐨噸*100 - - //RW Register - S16 reserved2; - GlobalNeedPersistParam p; - S16 reserved3; - - //EncryptInfo - McuEncryptInfo e; - - //Global Variables - S32 weight[D_ch_max_num]; //4璺噸閲 - S32 _total_weight; //瀹為檯閲嶉噺*1000 - S32 _total_zweight; //瀹為檯鐨噸*1000 -}GlobalParam; - -#define ADC_status_chx_Ready_BASE 0x01 -#define ADC_status_ch1_Ready 0x01 -#define ADC_status_ch2_Ready 0x02 -#define ADC_status_ch3_Ready 0x04 -#define ADC_status_ch4_Ready 0x08 - -//瀵勫瓨鍣ㄥ唴瀛樺熀鍦板潃 -#define REG_MEM_BASE ((U16*)(&G)) //瀵勫瓨鍣ㄥ熀纭鍦板潃锛堟湰鏂囦欢澶栭儴涓嶅簲璇ヤ娇鐢ㄨ瀹忓畾涔夛級 -//鍙橀噺鍦板潃杞瘎瀛樺櫒 -#define MEM_2_REG(mem) (((U16*)(mem) - REG_MEM_BASE) + 1) -//瀵勫瓨鍣ㄨ浆鍙橀噺鍦板潃 -#define REG_2_MEM(reg) (REG_MEM_BASE + (U16)((reg) - 1)) - - -extern struct global_param G; -extern struct ts_eeprom_param eep_param; -extern struct ts_eeprom_enc eep_enc; - -extern void L3_reg_init(void); -extern int L3_ph4_common_handler(TS_PH4_modbus *pmodbus); -extern int L3_ph4_send_error_pkg(U8 errcode); -extern int L3_mcu_id_ok(); -extern S32 L3_count_std_weight(S32 weight); - - -#endif - diff --git a/source/app/main.c b/source/app/main.c index 4e60ae9..daf14a2 100644 --- a/source/app/main.c +++ b/source/app/main.c @@ -79,28 +79,29 @@ stc5ac32s #include "main.h" - -/// main init -/// @param a 琚祴璇曠殑鍙橀噺锛坧aram鎻忚堪鍙傛暟锛 -/// @param s 鎸囧悜鎻忚堪娴嬭瘯淇℃伅鐨勫瓧绗︿覆 -/// @return 娴嬭瘯缁撴灉锛坮eturn鎻忚堪杩斿洖鍊硷級 -/// @see Test() 锛堟湰鍑芥暟鍙傝冨叾瀹冪殑鐩稿叧鐨勫嚱鏁帮紝杩欓噷浣滀竴涓摼鎺ワ級 -/// @note (note鎻忚堪闇瑕佹敞鎰忕殑闂) - void L0_main_init(void) { - Lc_delay_ms(200); - L0_I2C_INIT(1); - L1_app_POWER_init(); - L1_uart0_buf_init();//涓插彛鍒濆鍖 + //Lc_delay_ms(200); + L0_board_config(); + L0_uart0_buf_init();//涓插彛鍒濆鍖 EA = 1; - Lc_delay_ms(100); - + //Lc_delay_ms(100); L1_tick_init(); L0_timer0_Init(); - L0_timer1_Init(); - L0_I2C_INIT(1); - //L2_task_ALGO_init(); + + L3_reg_init(); + L3_param_init(); + L2_485_init(); + L0_ADS1213_INIT(); + + L3_task_adc_init(0); + L3_task_adc_init(1); + L3_task_adc_init(2); + L3_task_adc_init(3); + //L3_task_debug_init(); + L3_task_show_init(); + L3_task_reglisten_init(); + L0_uart0_sendArray("v2.7",4); } //=============================================== @@ -108,72 +109,39 @@ void L0_main_init(void) //=============================================== void main(void) { -//----------------------------------------------- -//绯荤粺鍒濆鍖 -//---------------------------------------------- + //鍒濆鍖 L0_main_init(); - L3_reg_init(); - L2_485_init(); - L0_ADS1213_INIT(); - L1_s2b_PH4_init(&s_uart0_rec,G.p.slaver_id); - L3_task_adc_init(); - - L0_uart0_sendArray("v2.6",4); - P35 = 0;//led on - -//----------------------------------------------- -//绯荤粺涓诲惊鐜 -//----------------------------------------------- -#if 1 //鐪嬮棬鐙 - if(!L3_mcu_id_ok()) - { - P35 = 0; - P10 = 0; - while(1) - { - if(1 == s_nos_tick.t1s_heatbeart) - { - s_nos_tick.t1s_heatbeart = 0; - L0_uart0_uc('X'); - } - } - } -#endif - //L1_ADS1213_main(); - + //楠岃瘉鍔犲瘑淇℃伅 + //L3_encrypt_handler(); + //涓诲惊鐜 while(1) { if(1 == s_nos_tick.t1s_heatbeart) { s_nos_tick.t1s_heatbeart = 0; - P35 ^= 1; + LED1 ^= 1; } - //鍗曡矾閲囬泦 - L3_task_adc_ch_sample(&ts_adc_ch_sample[0]); - L3_task_adc_ch_sample(&ts_adc_ch_sample[1]); - L3_task_adc_ch_sample(&ts_adc_ch_sample[2]); - L3_task_adc_ch_sample(&ts_adc_ch_sample[3]); + //L1_ADS1213_main(); - //鍗曡矾婊ゆ尝 - L3_task_adc_ch_blur(&ts_adc_ch_blur[0]); - L3_task_adc_ch_blur(&ts_adc_ch_blur[1]); - L3_task_adc_ch_blur(&ts_adc_ch_blur[2]); - L3_task_adc_ch_blur(&ts_adc_ch_blur[3]); - - //鍜屽兼护娉 - L3_task_adc_all_blur(&ts_adc_all_blur); - - //绉讳綅鍒囨崲杈撳嚭鏈缁堟暟鎹 - L3_task_adc_all_out(&ts_adc_all_out); - - //鏇存柊鏄剧ず鏁版嵁 - L3_task_adc_show(&ts_adc_show); + //鍗曡矾閲囬泦婊ゆ尝 + L3_task_adc_handler(0); + L3_task_adc_handler(1); + L3_task_adc_handler(2); + L3_task_adc_handler(3); + + //鏄剧ず + L3_task_adc_filter_show(&ts_adc_blur_show); + //瀵勫瓨鍣ㄥ肩洃鎺 + L3_task_reglisten_handle(&s_task_reglisten); + //杈撳嚭,鍝嶅簲485鍗忚 - L3_task_uart0_modbus_handler(&s_uart0_rec); - } - + L3_task_modbus_handler(&s_uart0_rec); + + //璋冭瘯杈撳嚭 + //L3_task_debug(&_s_task_debug); + } } //end main diff --git a/source/app/main.h b/source/app/main.h index dee4b58..ba525f9 100644 --- a/source/app/main.h +++ b/source/app/main.h @@ -36,61 +36,25 @@ #ifndef _MAIN_H #define _MAIN_H -#include "../bsp/bsp_config.h" -//#include "../bsp/adxl362.h" -//#include "../msp/stc_adc.h" #include "../msp/uart0.h" -//#include "../msp/uart2.h" -//#include "../msp/uart4.h" -//#include "../msp/uart3.h" -//#include "../msp/time.h" -//#include "../msp/msp_buzz.h" -//#include "../msp/msp_rtc.h" -//#include "../msp/msp_plcd.h" -#include "../msp/iic_sim.h" -#include "../msp/msp_eeprom.h" -#include "../msp/msp_id.h" - - -#include "../clib/Clib.h" -#include "../clib/bit.h" - -//#include "../debug/debug_drv.h" -//#include "../uartcom/uprotocol.h" -//#include "../uartcom/Uartcom0.h" -#include "../ctask/task.h" -#include "../ctask/tick.h" - -//#include "../bsp/bsp_led.h" - -#include "../bsp/bsp_power.h" - - -//#include "../bsp/Bsp_debug.h" - - -//#include "app_yeelink.h" -#include "app_flow.h" - -//#include "app_Gsensor.h" -//#include "app_io.h" -#include "../tpc/tpc_uart.h" - -#include "stdio.h" -#include "app_paraid.h" -#include "app_algorithm.h"/// +#include "../msp/eeprom.h" +#include "../bsp/bsp_config.h" +#include "../bsp/chipid.h" +#include "../bsp/cs1232.h" +#include "../bsp/rs485.h" -#include "../bsp/bsp_cs1232.h" -#include "../bsp/bsp_485.h" -#include "../app/app_task_uart0.h" -#include "../app/app_task_adc.h" +#include "../app/app_config.h" +#include "../app/task_modbus.h" +#include "../app/task_adc.h" +#include "../app/task_debug.h" +#include "../app/task_register.h" +#include "../app/task_encrypt.h" ////////////////////////////////////////////////////////////////// - #endif //#ifndef _MAIN_H diff --git a/source/app/task_adc.c b/source/app/task_adc.c new file mode 100644 index 0000000..ce38ace --- /dev/null +++ b/source/app/task_adc.c @@ -0,0 +1,418 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.c +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 +////////////////////////////////////////////////////////////////////////////// + +#include "task_adc.h" +#include "../bsp/bsp_config.h" +#include "../bsp/cs1232.h" +#include "../msp/uart0.h" + +//============================================= + +//S_TASK_ADC_CHANNEL_BLUR ts_adc_channel_blurs[D_ADC_CHANNEL_NUM]; +//S_TASK_ADC_CHANNEL_SHOW ts_adc_channel_show; + +S_TASK_ADC_CHANNEL_SAMPLE ts_adc_channel_samples[D_ADC_CHANNEL_NUM]; +//S_TASK_ADC_BLUR_MID ts_adc_blur_mid[D_ADC_CHANNEL_NUM]; +S_TASK_ADC_BLUR_AVG ts_adc_blur_avg[D_ADC_CHANNEL_NUM]; +S_TASK_ADC_BLUR_SHIFT ts_adc_blur_shift[D_ADC_CHANNEL_NUM]; +S_TASK_ADC_BLUR_OUT ts_adc_blur_out[D_ADC_CHANNEL_NUM]; +S_TASK_ADC_BLUR_SHOW ts_adc_blur_show; + +static U8 count_n(u8 n,u8 d) +{ + if(n < d) + { + return MAX_OUT_NUM + n - d ; + } + else + { + return n-d; + } +} + +U32 Abs(S32 a) +{ + if(a < 0) + { + a = -a; + } + return a; +} +//ch鏄0123锛屼唬琛4閫氶亾 +void L3_task_adc_init(U8 ch) +{ + //閫氶亾閲囬泦浠诲姟鍒濆鍖 + L1_task_init(&ts_adc_channel_samples[ch].task); + L3_task_s_go(ts_adc_channel_samples[ch],D_task_init); + ts_adc_channel_samples[ch].status = (R.p.adc_ch_status >> ch) & 0x1; + ts_adc_channel_samples[ch].pool = 0; + ts_adc_channel_samples[ch].adcval = 0; + ts_adc_channel_samples[ch].n = 0; + ts_adc_channel_samples[ch].ch = D_ADCCH_1 + ch; + +#if 0 + //閫氶亾涓兼护娉换鍔″垵濮嬪寲 + L1_task_init(&ts_adc_blur_mid[ch].task); + L3_task_s_go(ts_adc_blur_mid[ch],D_task_init); + ts_adc_blur_mid[ch].n = 0; + ts_adc_blur_mid[ch].max = R.p.adc_blur_mid; + ts_adc_blur_mid[ch].ch = D_ADCCH_1 + ch; +#endif + + //閫氶亾鍧囧兼护娉换鍔″垵濮嬪寲 + L1_task_init(&ts_adc_blur_avg[ch].task); + L3_task_s_go(ts_adc_blur_avg[ch],D_task_init); + ts_adc_blur_avg[ch].max = R.p.adc_blur_avg; + ts_adc_blur_avg[ch].avgval = 0; + ts_adc_blur_avg[ch].n = 0; + ts_adc_blur_avg[ch].ch = D_ADCCH_1 + ch; + + //閫氶亾绉讳綅婊ゆ尝浠诲姟鍒濆鍖 + L1_task_init(&ts_adc_blur_shift[ch].task); + L3_task_s_go(ts_adc_blur_shift[ch],D_task_init); + ts_adc_blur_shift[ch].n = 0; + ts_adc_blur_shift[ch].h = 0; + ts_adc_blur_shift[ch].shiftreg[0] = R.p.adc_blur_shift[0]; + ts_adc_blur_shift[ch].shiftreg[1] = R.p.adc_blur_shift[1]; + ts_adc_blur_shift[ch].shiftreg[2] = R.p.adc_blur_shift[2]; + ts_adc_blur_shift[ch].sum[0] = 0; + ts_adc_blur_shift[ch].sum[1] = 0; + ts_adc_blur_shift[ch].sum[2] = 0; + ts_adc_blur_shift[ch].shiftval[0] = 0; + ts_adc_blur_shift[ch].shiftval[1] = 0; + ts_adc_blur_shift[ch].shiftval[2] = 0; + ts_adc_blur_shift[ch].ch = D_ADCCH_1 + ch; + + //杈撳嚭鍒ゅ畾浠诲姟鍒濆鍖 + L1_task_init(&ts_adc_blur_out[ch].task); + L3_task_s_go(ts_adc_blur_out[ch],D_task_init); + ts_adc_blur_out[ch].h= 0; + ts_adc_blur_out[ch].threshold[0] = D_COUNT_ADC(R.p.adc_blur_threshold[0]); //2KG + ts_adc_blur_out[ch].threshold[1] = D_COUNT_ADC(R.p.adc_blur_threshold[1]); //0.5KG + ts_adc_blur_out[ch].newnum = 0; + ts_adc_blur_out[ch].oldnum = 0; + ts_adc_blur_out[ch].newout = 0; + ts_adc_blur_out[ch].n = 0; + ts_adc_blur_out[ch].ch = D_ADCCH_1 + ch; + +#if 0 + //閫氶亾鍒囨崲浠诲姟鍒濆鍖 + //L1_task_init(&ts_adc_channel_switch.task); + L3_task_s_go(ts_adc_channel_switch,D_task_init); +#endif + +} + + +void L3_task_show_init(void) +{ + //鏄剧ず浠诲姟鍒濆鍖 + L1_task_init(&ts_adc_blur_show.task); + L3_task_s_go(ts_adc_blur_show,D_task_init); + ts_adc_blur_show.rough_weight = 0; +} + + +//ADC Channel 閲囨牱浠诲姟 +#define D_task_ADC_CHx_SAMPLE_WAIT_LOW 0x53 +#define D_task_ADC_CHx_SAMPLE_READ 0x54 +#define D_task_ADC_CHx_SAMPLE_OUT 0x55 +void L3_task_adc_channel_sample(S_TASK_ADC_CHANNEL_SAMPLE *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_SAMPLE_WAIT_LOW); + + TTSS_Task_step(D_task_ADC_CHx_SAMPLE_WAIT_LOW) + if(s->status == ADC_CHANNEL_STATUS_READY) //闇瑕佸垽鏂璼tatus鏄惁ready锛宺eady鍒欒鍙栵紝鍚﹀垯浣跨敤pool鍊 + { + if(0 == L0_2dc_DOUT_AT(s->ch)) + { + L2_task_go(D_task_ADC_CHx_SAMPLE_READ); + } + } + else + { + s->adcval = s->pool; + L2_task_go_Tdelay(D_task_ADC_CHx_SAMPLE_OUT,D_Tdelay_Msec(15)); //寤舵椂15ms锛屾ā鎷熶竴娆¢噰鏍疯繃绋 + } + + TTSS_Task_step(D_task_ADC_CHx_SAMPLE_READ) + if(s->status == ADC_CHANNEL_STATUS_READY) //闇瑕侀噸鏂板垽鏂璼tatus鏄惁ready锛屽洜涓篶hannel_switch浠诲姟闅忔椂鍙兘淇敼status鐘舵 + { + s->adcval = Abs(L0_ADS1231_readCH(s->ch)); + L2_task_go(D_task_ADC_CHx_SAMPLE_OUT); + } + else + { + L2_task_go(D_task_ADC_CHx_SAMPLE_WAIT_LOW); + } + + TTSS_Task_step(D_task_ADC_CHx_SAMPLE_OUT) + //涓嶅垽鏂璻eady,涓嶇鏄噰闆嗗埌鐨勭湡瀹炴暟鎹繕鏄痯ool鏁版嵁锛岄兘缁х画鎵ц + s->pool = s->adcval; + s->out[s->n] = s->adcval; + //R.adval[s->ch] = s->out[s->n]; + //L0_uart0_ulhex(R.adval[s->ch]);L0_uart0_0d0a(); + s->n++; + #if 0 + L0_uart0_ulhex(s->out[count_n(s->n,1)]); + L0_uart0_uc(' '); + //L0_uart0_ulhex(ts_adc_blur_mid[s->ch].out[count_n(ts_adc_blur_mid[s->ch].n,1)]); + //L0_uart0_uc(' '); + L0_uart0_ulhex(ts_adc_blur_avg[s->ch].out[count_n(ts_adc_blur_avg[s->ch].n,1)]); + L0_uart0_uc(' '); + L0_uart0_ulhex(ts_adc_blur_shift[s->ch].shiftval[0]); + L0_uart0_uc(' '); + L0_uart0_ulhex(ts_adc_blur_shift[s->ch].shiftval[1]); + L0_uart0_uc(' '); + L0_uart0_ulhex(ts_adc_blur_shift[s->ch].shiftval[2]); + L0_uart0_uc(' '); + L0_uart0_ulhex(R.adval[s->ch]); + L0_uart0_uc(' '); + L0_uart0_ulhex(ts_adc_blur_out[s->ch].oldnum); + L0_uart0_0d0a(); + #endif + + if(s->n >= MAX_OUT_NUM) + { + s->n = 0; + } + L2_task_go(D_task_ADC_CHx_SAMPLE_WAIT_LOW); + + TTSS_Task_end(); +} + +#if 0 +//涓兼护娉换鍔 +#define D_task_ADC_CHx_FILTER_MID_GET 0x50 +#define D_task_ADC_CHx_FILTER_MID_COUNT 0x51 +#define D_task_ADC_CHx_FILTER_MID_OUT 0x52 +void L3_task_adc_filter_mid(S_TASK_ADC_BLUR_MID *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_FILTER_MID_GET); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_MID_GET) + if(ts_adc_channel_samples[s->ch].n >= s->max) + { + U8 i = 0; + for(i=0;imax;i++) + { + s->in[i] = ts_adc_channel_samples[s->ch].out[i]; + } + ts_adc_channel_samples[s->ch].n = 0; + L2_task_go(D_task_ADC_CHx_FILTER_MID_COUNT); + } + + TTSS_Task_step(D_task_ADC_CHx_FILTER_MID_COUNT) + s->midval = Lc_vS32_media(s->in, s->max); + L2_task_go(D_task_ADC_CHx_FILTER_MID_OUT); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_MID_OUT) + s->out[s->n] = s->midval; + //R.adval[s->ch] = s->out[s->n]; + s->n++; + if(s->n >= MAX_OUT_NUM) + { + s->n = 0; + } + L2_task_go(D_task_ADC_CHx_FILTER_MID_GET); + + TTSS_Task_end(); +} +#endif + + +//鍧囧兼护娉换鍔 +#define D_task_ADC_CHx_FILTER_AVG_GET 0x50 +#define D_task_ADC_CHx_FILTER_AVG_COUNT 0x51 +#define D_task_ADC_CHx_FILTER_AVG_OUT 0x52 +void L3_task_adc_filter_avg(S_TASK_ADC_BLUR_AVG *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_FILTER_AVG_GET); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_AVG_GET) + if(ts_adc_channel_samples[s->ch].n >= s->max) + { + U8 i = 0; + ts_adc_channel_samples[s->ch].n = 0; + for(i=0;imax;i++) + { + s->in[i] = ts_adc_channel_samples[s->ch].out[i]; + } + L2_task_go(D_task_ADC_CHx_FILTER_AVG_COUNT); + } + + TTSS_Task_step(D_task_ADC_CHx_FILTER_AVG_COUNT) + s->avgval = Lc_vU32_avg(s->in,s->max); + L2_task_go(D_task_ADC_CHx_FILTER_AVG_OUT); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_AVG_OUT) + s->out[s->n] = s->avgval; + //R.adval[s->ch] = s->out[s->n]; + s->n++; + if(s->n >= MAX_OUT_NUM) + { + s->n = 0; + } + L2_task_go(D_task_ADC_CHx_FILTER_AVG_GET); + + TTSS_Task_end(); + + +} + + +//绉讳綅婊ゆ尝浠诲姟 +#define D_task_ADC_CHx_FILTER_SHIFT_GET 0x50 +#define D_task_ADC_CHx_FILTER_SHIFT_COUNT 0x51 +#define D_task_ADC_CHx_FILTER_SHIFT_OUT 0x52 +void L3_task_adc_filter_shift(S_TASK_ADC_BLUR_SHIFT *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_FILTER_SHIFT_GET); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_SHIFT_GET) + if(s->h != ts_adc_blur_avg[s->ch].n) + { + s->in = ts_adc_blur_avg[s->ch].out[count_n(ts_adc_blur_avg[s->ch].n,1)]; + s->h = ts_adc_blur_avg[s->ch].n; + L2_task_go(D_task_ADC_CHx_FILTER_SHIFT_COUNT); + } + + TTSS_Task_step(D_task_ADC_CHx_FILTER_SHIFT_COUNT) + s->sum[0] -= s->shiftval[0]; + s->sum[0] += s->in; + s->shiftval[0] = s->sum[0] >> s->shiftreg[0]; + s->sum[1] -= s->shiftval[1]; + s->sum[1] += s->in; + s->shiftval[1] = s->sum[1] >> s->shiftreg[1]; + s->sum[2] -= s->shiftval[2]; + s->sum[2] += s->in; + s->shiftval[2] = s->sum[2] >> s->shiftreg[2]; + L2_task_go(D_task_ADC_CHx_FILTER_SHIFT_OUT); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_SHIFT_OUT) + s->out[0][s->n] = s->shiftval[0]; + s->out[1][s->n] = s->shiftval[1]; + s->out[2][s->n] = s->shiftval[2]; + + + //R.adval[s->ch] = s->out[0][s->n] = s->shiftval[0]; + s->n++; + if(s->n >= MAX_OUT_NUM) + { + s->n = 0; + } + L2_task_go(D_task_ADC_CHx_FILTER_SHIFT_GET); + + TTSS_Task_end(); + +} + +//杈撳嚭鍒ゅ畾浠诲姟 +#define D_task_ADC_CHx_FILTER_OUT_GET 0x50 +#define D_task_ADC_CHx_FILTER_OUT_COUNT 0x51 +#define D_task_ADC_CHx_FILTER_OUT_CHANGE 0x52 +#define D_task_ADC_CHx_FILTER_OUT_OUT 0x53 +void L3_task_adc_filter_out(S_TASK_ADC_BLUR_OUT *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_FILTER_OUT_GET); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_OUT_GET) + if(s->h != ts_adc_blur_shift[s->ch].n) + { + s->h = ts_adc_blur_shift[s->ch].n; + s->in[0] = ts_adc_blur_avg[s->ch].out[count_n(ts_adc_blur_avg[s->ch].n, 1)]; + s->in[1] = ts_adc_blur_avg[s->ch].out[count_n(ts_adc_blur_avg[s->ch].n, 2)]; + //鑾峰彇杈撳嚭鏇茬嚎val + s->newout = ts_adc_blur_shift[s->ch].out[s->oldnum][count_n(ts_adc_blur_shift[s->ch].n, 1)]; + L2_task_go(D_task_ADC_CHx_FILTER_OUT_COUNT); + } + + TTSS_Task_step(D_task_ADC_CHx_FILTER_OUT_COUNT) //鏍规嵁闃鍊奸夋嫨杈撳嚭鐨勬洸绾 + //鍒ゆ柇閫夋嫨鏂版洸绾 + if(Lc_abs(s->in[0] , s->in[1]) >= s->threshold[0])//2KG + { + s->newnum = 0; + } + else if(Lc_abs(s->in[0] , s->in[1]) >= s->threshold[1]) //0.5KG + { + s->newnum = 1; + } + else + { + s->newnum = 2; + } + //L2_task_go(D_task_ADC_CHx_FILTER_OUT_OUT); + L2_task_go(D_task_ADC_CHx_FILTER_OUT_CHANGE); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_OUT_CHANGE) + if(s->newnum != s->oldnum)//鍒囨崲绉讳綅婊ゆ尝鏃惰皟鏁村叾浠栨护娉㈢殑SUM + { + s->oldnum = s->newnum; //涓嶈兘鍙皟鏁存柊鍊硷紝鎵鏈夋洸绾块兘瑕佷竴璧疯皟鏁 + //ts_adc_blur_shift[s->ch].sum[1] = (ts_adc_blur_avg[s->ch].out[ts_adc_blur_avg[s->ch].n] * R.adc_blur_avg); + ts_adc_blur_shift[s->ch].sum[0] = s->newout << ts_adc_blur_shift[s->ch].shiftreg[0]; + ts_adc_blur_shift[s->ch].shiftval[0] = s->newout; + ts_adc_blur_shift[s->ch].sum[1] = s->newout << ts_adc_blur_shift[s->ch].shiftreg[1]; + ts_adc_blur_shift[s->ch].shiftval[1] = s->newout; + ts_adc_blur_shift[s->ch].sum[2] = s->newout << ts_adc_blur_shift[s->ch].shiftreg[2]; + ts_adc_blur_shift[s->ch].shiftval[2] = s->newout; + } + L2_task_go(D_task_ADC_CHx_FILTER_OUT_OUT); + + TTSS_Task_step(D_task_ADC_CHx_FILTER_OUT_OUT) + R.adval[s->ch] = s->newout; + //R.adval[s->ch] = ts_adc_channel_samples[s->ch].adcval; + L2_task_go(D_task_ADC_CHx_FILTER_OUT_GET); + + TTSS_Task_end(); + +} + + +//鏄剧ず浠诲姟 +#define D_task_ADC_CHx_SHOW 0x50 +void L3_task_adc_filter_show(S_TASK_ADC_BLUR_SHOW *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_SHOW); + + TTSS_Task_step(D_task_ADC_CHx_SHOW) + R.ch_weight[0] = D_COUNT_WEIGHT(R.adval[0]); + R.ch_weight[1] = D_COUNT_WEIGHT(R.adval[1]); + R.ch_weight[2] = D_COUNT_WEIGHT(R.adval[2]); + R.ch_weight[3] = D_COUNT_WEIGHT(R.adval[3]); + s->rough_weight = R.ch_weight[0] + R.ch_weight[1] + R.ch_weight[2] + R.ch_weight[3]; //姣涢噸 + if( ABS(R.rough_weight,s->rough_weight) >= 50) //鍙樺寲瓒呰繃0.05KG + { + R.rough_weight = s->rough_weight; + R.total_weight = (R.rough_weight > R.total_zweight) ? (R.rough_weight - R.total_zweight) : (0);//鍑閲 + } + L2_task_go_Tdelay(D_task_ADC_CHx_SHOW,D_Tdelay_Msec(15)); //寤舵椂15ms + + TTSS_Task_end(); +} + +void L3_task_adc_handler(u8 ch) +{ + L3_task_adc_channel_sample(&ts_adc_channel_samples[ch]); + //L3_task_adc_filter_mid(&ts_adc_blur_mid[ch]); + L3_task_adc_filter_avg(&ts_adc_blur_avg[ch]); + L3_task_adc_filter_shift(&ts_adc_blur_shift[ch]); + L3_task_adc_filter_out(&ts_adc_blur_out[ch]); +} + + + diff --git a/source/app/task_adc.h b/source/app/task_adc.h new file mode 100644 index 0000000..327b972 --- /dev/null +++ b/source/app/task_adc.h @@ -0,0 +1,119 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.h +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 + +////////////////////////////////////////////////////////////////////////////// + +#ifndef _APP_TASK_ADC_H +#define _APP_TASK_ADC_H + +#include "../app/app_config.h" +#include "../ctask/task.h" +#include "../clib/clib.h" + + +#define ADC_CHANNEL_STATUS_UNREADY 0 //UnReady鐘舵侊紝涓嶈兘璇诲彇 +#define ADC_CHANNEL_STATUS_READY 1 //ready鐘舵侊紝鍙互璇诲彇 + +//AD_CHANNEL_SAMPLE 閲囨牱 +#define MAX_OUT_NUM 6 +typedef struct _s_task_adc_channel_sample +{ + TS_task task; + vU8 status; + vU8 ch; + vU32 adcval; + vU32 pool; + vU8 n; + vU32 out[MAX_OUT_NUM]; +}S_TASK_ADC_CHANNEL_SAMPLE; + +//AD_BLUR_MID 涓兼护娉 +typedef struct _s_task_adc_blur_mid + +{ + TS_task task; + vU8 ch; + vU8 max; + vU32 in[MAX_OUT_NUM]; + vU32 midval; + vU8 n; + vU32 out[MAX_OUT_NUM]; +}S_TASK_ADC_BLUR_MID; + +//AD_BLUR_AVG 鍧囧兼护娉 +typedef struct _s_task_adc_blur_avg +{ + TS_task task; + vU8 ch; + vU8 max; + vU32 in[MAX_OUT_NUM]; + vU32 avgval; + vU8 n; + vU32 out[MAX_OUT_NUM]; +}S_TASK_ADC_BLUR_AVG; + +//AD_BLUR_SHIFT 绉讳綅婊ゆ尝 +typedef struct _s_task_adc_blur_shift +{ + TS_task task; + vU8 ch; + vU8 n; + vU8 h; + vU8 shiftreg[3]; + //vU8 max; + vU32 in; + vU32 sum[3]; + vU32 shiftval[3]; + vU32 out[3][MAX_OUT_NUM]; +}S_TASK_ADC_BLUR_SHIFT; + +//AD_BLUR_DECIDE 杈撳嚭鍒ゅ畾 +typedef struct _s_task_adc_blur_out +{ + TS_task task; + vU8 ch; + vU32 in[2]; + U32 threshold[2]; + vU8 h; + vU8 oldnum; + vU8 newnum; + vU32 newout; + vU8 n; +}S_TASK_ADC_BLUR_OUT; + +//AD_BLUR_SHOW 鏄剧ず +typedef struct _s_task_adc_blur_show +{ + TS_task task; + vU32 rough_weight; +}S_TASK_ADC_BLUR_SHOW; + + +extern S_TASK_ADC_CHANNEL_SAMPLE ts_adc_channel_samples[D_ADC_CHANNEL_NUM]; +//extern S_TASK_ADC_BLUR_MID ts_adc_blur_mid[D_ADC_CHANNEL_NUM]; +extern S_TASK_ADC_BLUR_AVG ts_adc_blur_avg[D_ADC_CHANNEL_NUM]; +extern S_TASK_ADC_BLUR_SHIFT ts_adc_blur_shift[D_ADC_CHANNEL_NUM]; +extern S_TASK_ADC_BLUR_OUT ts_adc_blur_out[D_ADC_CHANNEL_NUM]; +extern S_TASK_ADC_BLUR_SHOW ts_adc_blur_show; + + +extern void L3_task_adc_init(U8 ch); +extern void L3_task_show_init(void); +extern void L3_task_adc_handler(U8 ch); +extern void L3_task_adc_init_handler(void); +extern void L3_task_adc_channel_switch_handler(void); +extern void L3_task_adc_filter_show(S_TASK_ADC_BLUR_SHOW *s); + + + + +#endif // #ifndef _APP_TASK_ADC_H + diff --git a/source/app/task_debug.c b/source/app/task_debug.c new file mode 100644 index 0000000..9380cda --- /dev/null +++ b/source/app/task_debug.c @@ -0,0 +1,51 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.c +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 +////////////////////////////////////////////////////////////////////////////// + +#include "task_debug.h" +#include "../app/app_config.h" +#include "../bsp/bsp_config.h" +#include "../msp/uart0.h" + +S_TASK_DEBUG _s_task_debug; + +//============================================= +void L3_task_debug_init(void) +{ + L1_task_init(&_s_task_debug.task); + L3_task_s_go(_s_task_debug,D_task_init); +} + +#define D_task_ADC_CHx_DEBUG 0x53 +void L3_task_debug(S_TASK_DEBUG *s) +{ + TTSS_Task_init() + L2_task_go(D_task_ADC_CHx_DEBUG); + + TTSS_Task_step(D_task_ADC_CHx_DEBUG) + /* L0_uart0_ulhex(R.adval[0]); + L0_uart0_uc(' '); + L0_uart0_ulhex(R.adval[1]); + L0_uart0_uc(' '); + L0_uart0_ulhex(R.adval[2]); + L0_uart0_uc(' '); + L0_uart0_ulhex(R.adval[3]); + L0_uart0_uc(' ');*/ + L0_uart0_ulhex(R.total_weight); + L0_uart0_0d0a(); + L2_task_go_Tdelay(D_task_ADC_CHx_DEBUG,D_Tdelay_Msec(15)); //寤舵椂15ms + + TTSS_Task_end(); +} + + + + diff --git a/source/bsp/bsp_debug.h b/source/app/task_debug.h similarity index 50% rename from source/bsp/bsp_debug.h rename to source/app/task_debug.h index 6940097..7e96363 100644 --- a/source/bsp/bsp_debug.h +++ b/source/app/task_debug.h @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. ///------------------------------------------------------------------------- /// @file bsp_drv.h /// @brief bsp @ driver config @@ -11,26 +11,22 @@ ////////////////////////////////////////////////////////////////////////////// -#ifndef _bsp_debug_H -#define _bsp_debug_H +#ifndef _APP_TASK_DEBUG_H +#define _APP_TASK_DEBUG_H -#include "../bsp/bsp_config.h" +#include "../ctask/task.h" +#include "../clib/clib.h" -#include "../tpc/tpc_uart.h" - -#include "../msp/uart0.h" - -#define TS_debug_MAX 6 -typedef struct +typedef struct _s_task_debug { - vU8 add; - void (*p2fun)(U8 *pPara); -}TS_debug_; + TS_task task; +}S_TASK_DEBUG; + +extern S_TASK_DEBUG _s_task_debug; -extern void L3_debug_exp_protocol(TS_Handle_PH1 *p); -//extern void L3_UARTcom0_exp_protocol(void); -extern TS_debug_ volatile ts_debug[TS_debug_MAX]; +extern void L3_task_debug_init(void); +extern void L3_task_debug(S_TASK_DEBUG *s); -#endif // #ifndef _bsp_drv_H +#endif // #ifndef _APP_TASK_ADC_H diff --git a/source/app/task_encrypt.c b/source/app/task_encrypt.c new file mode 100644 index 0000000..51c2e70 --- /dev/null +++ b/source/app/task_encrypt.c @@ -0,0 +1,78 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.c +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 +////////////////////////////////////////////////////////////////////////////// + +#include "task_encrypt.h" +#include "../bsp/bsp_config.h" +#include "../msp/uart0.h" +#include "../msp/eeprom.h" +#include "../bsp/chipid.h" + +struct ts_eeprom_enc eep_enc; +struct mcu_encrypt_info enc_info; + +/** + * + * @brief: eeprom鐨凞_EEP_ENC_IN_SECTOR銆丏_EEP_ENC_IN_BLOCK涓彁鍓嶅瓨鏀句簡鍔犲瘑淇℃伅: enc_key, enc_val(enc_key+chipid璁$畻鎵寰) + * @param: void + * @return: 1 is ok , 0 is failed + * + */ +int L3_mcu_id_ok(void) +{ + U8 i = 0; + + //1. 鑾峰彇eeprom涓瓨鍌ㄧ殑enc淇℃伅 + if(L1_eep_read_block(D_EEP_ENC_IN_SECTOR, D_EEP_ENC_IN_BLOCK, D_EEP_ENC_BLOCK_SIZE, (U8*)&eep_enc,NULL) == 1) + { + //L0_uart0_sendstr("e2p read enc failed"); + return 0; + } + //L0_uart0_sendstr("e2p read enc success"); + + //2.鑾峰彇MCU_ID + L0_id_get_rom(enc_info.mcu_id); + //L0_uart0_sendArray(enc_info.mcu_id,MCU_ID_LEN); + + //3.鏍规嵁mcu_id鍜宔nc_key璁$畻enc_val + //enc_key = ((U32)eep_enc.enc_key[0] << 24) | (eep_enc.enc_key[1] << 16) | (eep_enc.enc_key[2] << 8) |(eep_enc.enc_key[3] << 0); + Lc_encrypt_id1((U8*)enc_info.mcu_enc_id, (U8*)enc_info.mcu_id, eep_enc.enc_key, MCU_ID_LEN); + +#if 1 + //4.鍒ゆ柇enc_val鏄惁涓鑷 + for(i=0;i>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Encryption CONFIG +#define MCU_ID_LEN 7 +#define MCU_ID_KEY_LEN 4 +#define EEPROM_ENC_DATA_MAX 64 +#define EEPROM_ENC_FILTER 0xAA +typedef struct ts_eeprom_enc +{ + U8 enc_key[MCU_ID_KEY_LEN]; + U8 enc_val[MCU_ID_LEN]; + //U8 crc[2]; +}EEPROM_ENC; + +typedef struct mcu_encrypt_info +{ + U8 enc_key[MCU_ID_KEY_LEN]; + U8 mcu_id[MCU_ID_LEN]; + U8 mcu_enc_id[MCU_ID_LEN]; +}McuEncryptInfo; + +extern struct ts_eeprom_enc eep_enc; +extern struct mcu_encrypt_info enc_info; +//STEP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<slaver = slaverId; + pmodbus->oper = MODBUS_OPER_READ; + pmodbus->buf[0] = reg >> 8 & 0xFF; + pmodbus->buf[1] = reg >> 0 & 0xFF; + pmodbus->buf[2] = num >> 8 * 0xFF; + pmodbus->buf[3] = num >> 0 & 0xFF; + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize); + pmodbus->buf[bufsize] = pmodbus->crc[0]; + pmodbus->buf[bufsize + 1] = pmodbus->crc[1]; + + return bufsize + 2 + 2; +} + +U8 L3_pack_modbus_06(TS_PH4_modbus *pmodbus ,U8 slaverId, U16 reg, U8 *buf) +{ + U8 bufsize = 4; + pmodbus->slaver = slaverId; + pmodbus->oper = MODBUS_OPER_WRITE; + pmodbus->buf[0] = reg >> 8 & 0xFF; + pmodbus->buf[1] = reg >> 0 & 0xFF; + pmodbus->buf[2] = buf[0]; + pmodbus->buf[3] = buf[1]; + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize); + pmodbus->buf[bufsize] = pmodbus->crc[0]; + pmodbus->buf[bufsize + 1] = pmodbus->crc[1]; + + return bufsize + 2 + 2; +} + +U8 L3_pack_modbus_10(TS_PH4_modbus *pmodbus ,U8 slaverId, U16 reg, U16 num, U8 bytes, U8 *buf) +{ + U8 bufsize = 5,i = 0; + pmodbus->slaver = slaverId; + pmodbus->oper = MODBUS_OPER_WRITE_M; + pmodbus->buf[0] = reg >> 8 & 0xFF; + pmodbus->buf[1] = reg >> 0 & 0xFF; + pmodbus->buf[2] = num >> 8 * 0xFF; + pmodbus->buf[3] = num >> 0 & 0xFF; + pmodbus->buf[4] = bytes; + + for(i=0;ibuf[5+i] = buf[i]; + } + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize + bytes); + pmodbus->buf[bufsize + bytes] = pmodbus->crc[0]; + pmodbus->buf[bufsize + bytes + 1] = pmodbus->crc[1]; + + return bufsize + bytes + 2 + 2; +} + +U8 L3_pack_modbus(TS_PH4_modbus *pmodbus, MD_SLAVER_INFO *slaver_info) +{ + switch(slaver_info->oper) + { + case MODBUS_OPER_READ: + return L3_pack_modbus_03(pmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->regnum); + case MODBUS_OPER_WRITE: + return L3_pack_modbus_06(pmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->buf); + case MODBUS_OPER_WRITE_M: + return L3_pack_modbus_10(pmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->regnum,slaver_info->bytes,slaver_info->buf); + default: + return 0; + } +} + +U8 L3_pack_modbusack(TS_PH4_modbus *pmodbus ,U8 slaver, U8 oper, U8 bufsize) +{ + pmodbus->slaver = slaver; + pmodbus->oper = oper; + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize); + pmodbus->buf[bufsize] = pmodbus->crc[0]; + pmodbus->buf[bufsize + 1] = pmodbus->crc[1]; + + return bufsize + 2 + 2; +} + +//MODBUS浠庤澶囨暟鎹鐞嗗嚱鏁 +static Modbus03Ack *pModbus03Ack; +static Modbus06Ack *pModbus06Ack; +static Modbus10Ack *pModbus10Ack; +static U16 modbuslen = 0,reg,num,val,count; +U16 L3_modbus_slaver_ack(TS_PH4_modbus *pmodbus,TS_PH4_modbus *pModbusAck) +{ + switch(pmodbus->oper) + { + case MODBUS_OPER_READ: + case MODBUS_OPER_READCONFIG: + { + U16 i = 0,j = 0,regval = 0; + pModbus03Ack = (Modbus03Ack *)pModbusAck->buf; + reg = ((U16)pmodbus->buf[0]) << 8 | ((U16)pmodbus->buf[1]); + num = ((U16)pmodbus->buf[2]) << 8 | ((U16)pmodbus->buf[3]); + if((num <= D_MODBUS_REG_MAX_NUM) && (reg <= sizeof(R)/2)) //姣忔鏈澶氳鍙朌_MODBUS_REG_MAX_NUM涓瘎瀛樺櫒.闃叉瓒婄晫 + { + for(i=0; ibuf[j++] = regval >> 8 & 0xFF; + pModbus03Ack->buf[j++] = regval & 0xFF; + } + pModbus03Ack->bytes = num * 2; + modbuslen = L3_pack_modbusack(pModbusAck, pmodbus->slaver, pmodbus->oper, pModbus03Ack->bytes + 1); + } + break; + } +#if 0 + case MODBUS_OPER_WRITE: + { + pModbus06Ack = (Modbus06Ack *)pModbusAck->buf; + reg = ((U16)pmodbus->buf[0]) << 8 | ((U16)pmodbus->buf[1]); + val = ((U16)pmodbus->buf[2]) << 8 | ((U16)pmodbus->buf[3]); + if(reg <= sizeof(R)/2) + { + *(REG_2_MEM(reg)) = val; + pModbus06Ack->reg = reg; + pModbus06Ack->val = *(REG_2_MEM(reg)); + modbuslen = L3_pack_modbusack(pModbusAck, pmodbus->slaver, pmodbus->oper, 4); + } + break; + } +#endif + case MODBUS_OPER_WRITE_M: + { + U16 i = 0; + pModbus10Ack = (Modbus10Ack *)pModbusAck->buf; + reg = ((U16)pmodbus->buf[0]) << 8 | ((U16)pmodbus->buf[1]); + num = ((U16)pmodbus->buf[2]) << 8 | ((U16)pmodbus->buf[3]); + count = pmodbus->buf[4]; + if((num <= D_MODBUS_REG_MAX_NUM) && (reg < sizeof(R)/2)) //姣忔鏈澶氬啓鍏20涓瘎瀛樺櫒 40涓瓧鑺傦紝浠ラ槻姝㈣秺鐣 + { + for(i=0; ibuf[5+i*2]) << 8 | ((U16)pmodbus->buf[5+i*2+1]); + } + pModbus10Ack->reg = reg; + pModbus10Ack->num = num; + modbuslen = L3_pack_modbusack(pModbusAck, pmodbus->slaver, pmodbus->oper, 4); + } + break; + } + default:break; + } + return modbuslen; +} + +//MODBUS涓昏澶囪疆璇㈡椂锛屼粠璁惧杩斿洖鏁版嵁澶勭悊鍑芥暟 +//MD_SLAVER_INFO闇瑕佽姝g‘瀹氫箟 +void L3_modbus_master_handler(TS_PH4_modbus *pmodbus,MD_SLAVER_INFO *p_slaver_info) +{ + switch(pmodbus->oper) + { + case MODBUS_OPER_READ: + case MODBUS_OPER_READCONFIG: + { + U8 i = 0; + for(i=0;ibuf[0];i++) + { + //姝ゅ鍋囪瀛楄妭搴忎竴鑷 + p_slaver_info->buf[i] = pmodbus->buf[i + 1]; + //TODO 瀛楄妭搴忎笉涓鑷存椂鐨勫鐞 + } + break; + } + case MODBUS_OPER_WRITE: + case MODBUS_OPER_WRITE_M: + default: break; + } +} + + +void L3_task_modbus_handler(TP_Handler_X *ph4) +{ + if(ph4->ok) + { + TS_PH4_modbus *ts_modbus = (TS_PH4_modbus *)ph4->buf; + //L0_uart0_sendArray(ph4->buf, 8); + //L0_uart0_sendArray("abcdefgh", 8); + ph4->ok = 0; + if(ts_modbus->slaver == R.p.slaver_id || ts_modbus->slaver == D_UART0_485_SLAVER_ID_BROADCAST) //浠庢満 + { + U16 acklen = L3_modbus_slaver_ack(ts_modbus,&s_uart0_ack); + L0_uart0_sendArray((U8*)&s_uart0_ack, acklen); + } + } +} + + diff --git a/source/app/task_modbus.h b/source/app/task_modbus.h new file mode 100644 index 0000000..98b32ef --- /dev/null +++ b/source/app/task_modbus.h @@ -0,0 +1,9 @@ +#ifndef APP_TASK_UART0_H +#define APP_TASK_UART0_H + +#include "../ctask/task.h" +#include "../tpc/modbus.h" + +extern void L3_task_modbus_handler(TP_Handler_X *ph4); + +#endif diff --git a/source/app/task_register.c b/source/app/task_register.c new file mode 100644 index 0000000..ac3b364 --- /dev/null +++ b/source/app/task_register.c @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.c +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 +////////////////////////////////////////////////////////////////////////////// + +#include "task_register.h" +#include "../app/app_config.h" +#include "../bsp/bsp_config.h" +#include "../msp/uart0.h" + +//============================================= + +S_TASK_REGVAL_LISTEN s_task_reglisten; + +void L3_task_reglisten_init(void) +{ + L1_task_init(&s_task_reglisten.task); + L3_task_s_go(s_task_reglisten,D_task_init); +} + +//娓呴浂浠诲姟 +#define D_task_WEIGHT_COUNT 0x50 +#define D_task_IAP 0x51 +void L3_task_reglisten_handle(S_TASK_REGVAL_LISTEN *s) +{ + + TTSS_Task_init() + L2_task_go(D_task_WEIGHT_COUNT); + + TTSS_Task_step(D_task_WEIGHT_COUNT) + if(R.zero != 0) + { + R.total_zweight = R.rough_weight; //鐨噸 = 姣涢噸 + R.total_weight = (R.rough_weight > R.total_zweight) ? (R.rough_weight - R.total_zweight) : (0);//鍑閲 + R.zero = 0; + } + L2_task_go(D_task_IAP); //寤舵椂100ms + + + TTSS_Task_step(D_task_IAP) + if(R.status_eep_save != 0) + { + R.status_eep_save = 0; + L3_reg_2_iap();//鍐欏叆IAP + } + L2_task_go_Tdelay(D_task_WEIGHT_COUNT,D_Tdelay_Msec(100)); //寤舵椂100ms + + + TTSS_Task_end(); + +} + + + + + diff --git a/source/app/task_register.h b/source/app/task_register.h new file mode 100644 index 0000000..d675a43 --- /dev/null +++ b/source/app/task_register.h @@ -0,0 +1,32 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.h +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 + +////////////////////////////////////////////////////////////////////////////// + +#ifndef _APP_TASK_REG_H +#define _APP_TASK_REG_H + +#include "../ctask/task.h" +#include "../clib/clib.h" + +typedef struct _s_task_reglisten +{ + TS_task task; +}S_TASK_REGVAL_LISTEN; + +extern S_TASK_REGVAL_LISTEN s_task_reglisten; + +extern void L3_task_reglisten_init(void); +extern void L3_task_reglisten_handle(S_TASK_REGVAL_LISTEN *s); + + +#endif // #ifndef _APP_TASK_ADC_H + diff --git a/source/bsp/backu/bsp2019浣庡姛鑰楅噰鏍穕ine鐗堟湰 20200301073727.rar b/source/bsp/backu/bsp2019浣庡姛鑰楅噰鏍穕ine鐗堟湰 20200301073727.rar deleted file mode 100644 index f3236c8..0000000 Binary files a/source/bsp/backu/bsp2019浣庡姛鑰楅噰鏍穕ine鐗堟湰 20200301073727.rar and /dev/null differ diff --git a/source/bsp/backu/bsp_433.c b/source/bsp/backu/bsp_433.c deleted file mode 100644 index 42c4d12..0000000 --- a/source/bsp/backu/bsp_433.c +++ /dev/null @@ -1,34 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file APP_433.c -/// @brief APP_POWER driver app 电源管理 - -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20181010 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - - - -/******************************************************************************/ -/***************************** Include Files **********************************/ -/******************************************************************************/ -//#include "app_Gsensor.h" - -#include "bsp_433.h" - - - - -////L0_uart0_sendArray( (unsigned char *)&TS_paer_value,5); - - - - - - - - diff --git a/source/bsp/backu/bsp_433.h b/source/bsp/backu/bsp_433.h deleted file mode 100644 index f224617..0000000 --- a/source/bsp/backu/bsp_433.h +++ /dev/null @@ -1,19 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file APP_433.c -/// @brief APP_POWER driver app 电源管理 - -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20181010 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - - -#ifndef _BSP_433_H -#define _BSP_433_H -#include "../msp/uart0.h" -#endif // #ifndef _BSP_433_H - diff --git a/source/bsp/backu/bsp_cam - 鍓湰 (2).c b/source/bsp/backu/bsp_cam - 鍓湰 (2).c deleted file mode 100644 index 83e114f..0000000 --- a/source/bsp/backu/bsp_cam - 鍓湰 (2).c +++ /dev/null @@ -1,574 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_gc6133.c.c -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 -////////////////////////////////////////////////////////////////////////////// - -#include "Bsp_debug.h" -#include "bsp_func.h" -#include "bsp_power.h" -#include "bsp_cam_isr.h" -#include "bsp_cam.h" -#include "../msp/uart0.h" -#include "cw63xx.h" -#include "../clib/Clib.h" -#include "../clib/bit.h" -#include "../msp/time.h" - -TS_P_rf433 TS_paer_value= -{ - 0xaa,///vU8 ha; -// 0xaa,///vU8 hb; - 0xad, - 0x0123, -// 0x00,///U16 paperNum:12; //12bit纸张数据 - ///U8 cameraIndex:2; //摄像头编号 - ///U8 cameraWorking:1; //是否正常工作 - ///U8 reserved: 1; //保留 - 0x56,///U8 cameraBoardPower; //电量 - 0xcc//, 0xaa///vU8 hc; - -}; - -void GC032A_port_init(void) -{ - ///00 准双向口 灌电流20mA 拉电流270-150uS - ///01 推挽输出 20mA 加限流 - ///10 高阻 - ///11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 - - //p3.6 --HSYNC -// BITN_0(P3M1,BITN6);BITN_0(P3M0,BITN6); - ///P3.7 -- VSYNC -// BITN_0(P3M1,BITN7);BITN_0(P3M0,BITN7); - L0_GC032A_standby(); - D_cam_AVDD_on(); - -} -////>>>>>>>>>>>>>>>>>>>>>_s_task_GC032A_>>>>>>>>>>>>>>>>>>>>>> - - - - -struct _s_task_GC032A_ s_task_GC032A; - -void L2_task_GC032A_init(void) -{ - L0_cam_isr_init(); - - L1_task_init(&s_task_GC032A.task); - ///L3_task_s_go(s_task_GC032A,D_task_init); - s_task_GC032A.next_line = D_clear; - s_task_GC032A.run = D_run; - s_task_GC032A.line_get = D_clear; - s_task_GC032A.cal_ok = D_clear; - s_task_GC032A.frames = 0; - s_task_GC032A.vs_ok = D_clear; - s_task_GC032A.line_en = D_ON; - s_task_GC032A.cal_en = D_OFF; -/// D_HSYNCS_open();//BITN_1(INT_CLKO, INT_EX2);//使能INT2中断 -} - -#if 10 - -///// get -void L2_task_GC032A_handle(struct _s_task_GC032A_ *s) -{ - - TTSS_Task_init(); - //PWDN引脚拉低(0 -- 正常工作,1 -- 休眠) - L0_GC032A_standby(); - L0_uart0_uc('2'); - L2_task_go(D_task_GC032A_init_DVDD); - TTSS_Task_step(D_task_GC032A_init_DVDD); - L0_GC032A_work(); - //IOVDD上电,并延时50us以上; - D_cam_DVDD_on(); - // L0_uart0_uc('3'); - L2_task_go(D_task_GC032A_init_AVDD); - //L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_AVDD); - //AVDD28上电,并延时0us以上 - D_cam_AVDD_on(); - L0_uart0_uc('4'); - L2_task_go(D_task_GC032A_init_pwdn); - TTSS_Task_step(D_task_GC032A_init_pwdn); - //提供032A系统频率 - /// L0_MCLKO_init(D_ON); - //L0_uart0_uc('n'); - //PWDN引脚拉高,延时,拉低 - L0_GC032A_standby();DL0_WDT();// - L2_task_go(D_task_GC032A_init_pwdn_wait); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_pwdn_wait); - L0_GC032A_work(); - GC032a_L0_uart0_uc('5');/// Lc_delay_ms(20); - gRccUs03 = 0; - // L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - L2_task_go(D_task_GC032A_write_reg); - //L2_task_go(0); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_write_reg); - //设置摄像头参数 大约2s时间 - if(0 != GC6133_init_reg_tbl[gRccUs03][0]) - { - //GC032a_L0_uart0_uc('k'); - L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - gRccUs03 ++; - }else - { - L2_task_go(D_task_GC032A_div); - ///L1_task_Tdelay(D_Tdelay_500ms); - L1_task_Tdelay(D_Tdelay_1s);///重要 这个时间很关键aaaaaa - } - TTSS_Task_step(D_task_GC032A_div); - //L0_GC032A_write(0xfc,0x02); //复位?? - L0_GC032A_write(0xf8,0x03);/// 恢复分频 - L0_GC032A_write(0xfa,D_0xfa);DL0_WDT();// - GC032a_L0_uart0_uc('6'); - L2_task_go(D_task_GC032A_start_time); -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over - -////等待 其他任务的启动后才工作 - TTSS_Task_step(D_task_GC032A_start_time); - D_cam_led_on();D_VSYNCS_open(); - L1_GC032A_sleep(D_wakeup); - GC032a_L0_uart0_uc('7'); -/// s->one_line_ok = D_clear;D_ledb_OFF(); - L2_task_go(D_task_GC032A_led); - TTSS_Task_step(D_task_GC032A_led); - ///vs /```24.8ms````\__________________________..1.16s...____________________________/````````\___________ - ///cam_led ```````````\_________________________________________________________/`````````````````\____ - if(D_ready == s->vs_ok)///为了关灯 - { - s_task_GC032A.vs_ok = D_clear; - D_cam_led_off(); GC032a_L0_uart0_uc('D'); - L2_task_go(D_task_GC032A_wait); - } - TTSS_Task_step(D_task_GC032A_wait);////>>>>>>>>>>>>>>>>>>>>>>>--- - ///捕获到需要的行 - - if(D_ready == s->line_get) - {DL0_WDT();// - s->line_get = D_clear; - /// 1.standby - /// D_cam_led_off(); - if(D_ON == s->line_en) - { - GC032a_L0_uart0_uc(0xfe); - GC032a_L0_uart0_uc(0xfd); - D_send_us(DR_pclk_n); - //D_send_us(s->lines); - L2_task_go(D_task_GC032A_send_line); - }else - { - L2_task_go(D_task_GC032A_cal); - } - - L1_task_Tdelay(D_Tdelay_10ms); - } - TTSS_Task_step(D_task_GC032A_send_line); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,0,199); - L2_task_go(D_task_GC032A_send2); - } - TTSS_Task_step(D_task_GC032A_send2); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,200,399); - L2_task_go(D_task_GC032A_send3); - } - TTSS_Task_step(D_task_GC032A_send3); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,400,599); - L2_task_go(D_task_GC032A_send4); - } - TTSS_Task_step(D_task_GC032A_send4); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,600,639); - L2_task_go(D_task_GC032A_send5); - } - TTSS_Task_step(D_task_GC032A_send5); - if(D_uart0_free()) - { - // 'fe','fd','fd','fc' - // GC032a_L0_uart0_uc(0xfd); - // GC032a_L0_uart0_uc(0xfc); - L2_task_go(D_task_GC032A_line1); - //L2_task_go(D_task_GC032A_sleep); - } - - TTSS_Task_step(D_task_GC032A_line1) - for(gRccUs03 = 1;gRccUs03 < 568;gRccUs03 ++) - { - if((s->buf[gRccUs03 - 1] == 0)&& - (s->buf[gRccUs03] == 1))//// _/``上升沿 - { - if(s->buf[gRccUs03 + 1] == 0) - {//_/`\_ 尖峰需要过滤 - - }else - {// ___/````上升沿开始高电平 - s->up_point = gRccUs03; - } - }else if((s->buf[gRccUs03 - 1] == 1)&& - (s->buf[gRccUs03] == 0))//// ``\_ 下降沿 - { - s->down_point = gRccUs03; - - }else - { - - } - } - L2_task_go(D_task_GC032A_line2); - - TTSS_Task_step(D_task_GC032A_line2) - - D_send_us(s->up_point); - D_send_us(s->down_point); - D_send_us(s->down_point - s->up_point); - // DR_pdata_n =0; - // 'fe','fd','fd','fc' - GC032a_L0_uart0_uc(0xfd); - GC032a_L0_uart0_uc(0xfc); - if(D_ON == s->cal_en) - { - L2_task_go(D_task_GC032A_cal); - }else - { - L2_task_go(D_task_GC032A_sleep); - } - TTSS_Task_step(D_task_GC032A_cal) - - - GC032a_L0_uart0_uc('8');//2.1ms - L2_task_go(D_task_GC032A_sleep); - - - TTSS_Task_step(D_task_GC032A_sample); - ///20181007本想调试成 分段的led 不通过vs 关断 但是发现不好调整 - ///采样的时候led打开照亮 - D_cam_led_on();GC032a_L0_uart0_uc('`'); - L2_task_go(D_task_GC032A_sleep); - // L1_task_Tdelay(D_Tdelay_500ms+6); - TTSS_Task_step(D_task_GC032A_sleep); - /// 收到外部命令run后 决定进入睡眠状态 ,低功耗处理 - ////CAL 10MS 433 10MS 总共20ms / 1160ms/vs 取行数消耗10ms - /////1160-10 - 20 = 1130ms - /// GC032a_L0_uart0_uc(0x88); - if(D_run == s->run) - { - GC032a_L0_uart0_uc('9');//2.1ms - L2_task_go(D_task_GC032A_led); - L1_task_Tdelay(D_Tdelay_10ms); - }else - { - D_cam_led_off(); - L1_GC032A_sleep(D_sleep); - L2_task_go(0); - } -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - TTSS_Task_end(); -} - -#else - -///// get -void L2_task_GC032A_handle(struct _s_task_GC032A_ *s) -{ - - TTSS_Task_init(); - //PWDN引脚拉低(0 -- 正常工作,1 -- 休眠) - L0_GC032A_standby(); - L0_uart0_uc('2'); - L2_task_go(D_task_GC032A_init_DVDD); - TTSS_Task_step(D_task_GC032A_init_DVDD); - L0_GC032A_work(); - //IOVDD上电,并延时50us以上; - D_cam_DVDD_on(); - // L0_uart0_uc('3'); - L2_task_go(D_task_GC032A_init_AVDD); - //L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_AVDD); - //AVDD28上电,并延时0us以上 - D_cam_AVDD_on(); - L0_uart0_uc('4'); - L2_task_go(D_task_GC032A_init_pwdn); - TTSS_Task_step(D_task_GC032A_init_pwdn); - //提供032A系统频率 - /// L0_MCLKO_init(D_ON); - //L0_uart0_uc('n'); - //PWDN引脚拉高,延时,拉低 - L0_GC032A_standby();DL0_WDT();// - L2_task_go(D_task_GC032A_init_pwdn_wait); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_pwdn_wait); - L0_GC032A_work(); - GC032a_L0_uart0_uc('5');/// Lc_delay_ms(20); - gRccUs03 = 0; - // L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - L2_task_go(D_task_GC032A_write_reg); - //L2_task_go(0); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_write_reg); - //设置摄像头参数 大约2s时间 - if(0 != GC6133_init_reg_tbl[gRccUs03][0]) - { - //GC032a_L0_uart0_uc('k'); - L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - gRccUs03 ++; - }else - { - L2_task_go(D_task_GC032A_div); - ///L1_task_Tdelay(D_Tdelay_500ms); - L1_task_Tdelay(D_Tdelay_1s);///重要 这个时间很关键aaaaaa - } - TTSS_Task_step(D_task_GC032A_div); - //L0_GC032A_write(0xfc,0x02); //复位?? - L0_GC032A_write(0xf8,0x03);/// 恢复分频 - L0_GC032A_write(0xfa,D_0xfa);DL0_WDT();// - GC032a_L0_uart0_uc('6'); - L2_task_go(D_task_GC032A_start_time); -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over - -////等待 其他任务的启动后才工作 - TTSS_Task_step(D_task_GC032A_start_time); - D_cam_led_on();D_VSYNCS_open(); - L1_GC032A_sleep(D_wakeup); - GC032a_L0_uart0_uc('7'); -/// s->one_line_ok = D_clear;D_ledb_OFF(); - L2_task_go(D_task_GC032A_led); - TTSS_Task_step(D_task_GC032A_led); - ///vs /```24.8ms````\__________________________..1.16s...____________________________/````````\___________ - ///cam_led ```````````\_________________________________________________________/`````````````````\____ - if(D_ready == s->vs_ok)///为了关灯 - { - s_task_GC032A.vs_ok = D_clear; - D_cam_led_off(); GC032a_L0_uart0_uc('_'); - L2_task_go(D_task_GC032A_wait); - } - TTSS_Task_step(D_task_GC032A_wait);////>>>>>>>>>>>>>>>>>>>>>>>--- - ///捕获到需要的行 - if(1 == s->line_get) - {DL0_WDT();// - s->line_get = 0; - L2_task_go(D_task_GC032A_cal);//// 单行计算 - } - TTSS_Task_step(D_task_GC032A_cal); - ///计算一个 line的数据 - ///D_txd4_wakeup(); - ///GC032a_L0_uart0_uc(0xd); GC032a_L0_uart0_uc(0xa);// - s->buf[D_pclk_per_hs + 1] =s->buf[30]; - ///GC032a_L0_uart0_uchex(s->buf[D_pclk_per_hs + 1]); - gRccUs04 = 0; - for(gRccUs03 = 0;gRccUs03 < D_pclk_per_hs_2;gRccUs03 ++) - { //s->buf[gRccUs03] = 0x10; - //debug 开关 显示当前收到的数据 - //L0_uart0_uc(s->buf[gRccUs03]); - if(s->buf[gRccUs03] >= 0x10) - { - s->buf[gRccUs03] -= 0x10; - } - s->buf[gRccUs03] >>= 1; - gRccUs04 += s->buf[gRccUs03]; - } - gRccUs04 >>= 2;//gRccUs04 >>= 4; - TS_paer_value.r123.paperNum = gRccUs04; - ///GC032a_L0_uart0_uchex((unsigned char)(gRccUs04>>8)); - s_task_GC032A.cal_ok = D_ready; - - L2_task_go(D_task_GC032A_sample);/// 发送完成延时后开始采样, - L1_task_Tdelay(D_Tdelay_300ms); //700=1a 600=1e 500 21 400 25 300 26 - - TTSS_Task_step(D_task_GC032A_sample); - ///20181007本想调试成 分段的led 不通过vs 关断 但是发现不好调整 - ///采样的时候led打开照亮 - D_cam_led_on();GC032a_L0_uart0_uc('`'); - L2_task_go(D_task_GC032A_sleep); - // L1_task_Tdelay(D_Tdelay_500ms+6); - TTSS_Task_step(D_task_GC032A_sleep); - /// 收到外部命令run后 决定进入睡眠状态 ,低功耗处理 - ////CAL 10MS 433 10MS 总共20ms / 1160ms/vs 取行数消耗10ms - /////1160-10 - 20 = 1130ms - /// GC032a_L0_uart0_uc(0x88); - if(D_run == s->run) - { - GC032a_L0_uart0_uc('r');//2.1ms - L2_task_go(D_task_GC032A_led); - }else - { - D_cam_led_off(); - L1_GC032A_sleep(D_sleep); - L2_task_go(0); - } -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - TTSS_Task_end(); -} - - - - -#endif - -void L1_GC032A_sleep(unsigned char onf) -{///FE 15 Fd 33 44//standby -///FE 05 Fd 33 44//wakeup - if(D_sleep == onf) - { - GC032a_L0_uart0_uc('L'); - /// 进入standby: - L0_GC032A_write(0xfc,0x03); L0_GC032A_write(0xf7,0x00); L0_GC032A_write(0xf9,0xcf); L0_GC032A_write(0xf3,0x00); - Lc_delay_nop(30); - Lc_delay_nop(30); - /// D_cam_AVDD_off(); - // D_cam_led_off(); - }else - { - GC032a_L0_uart0_uc('X'); - /// 退出standby: - L0_GC032A_write(0xfc,0x02); L0_GC032A_write(0xf7,0x01); L0_GC032A_write(0xf9,0xce); L0_GC032A_write(0xf3,0xff); - /// D_cam_led_on(); - } -} - -#if 10 -void L3_GC032A_fun(U8 *pPara) -{ - - -} -#else - -//// fe 01 reg data 0cx -/// Ac 01 02 03 ocr ---bsp_debug.c -/// p.cmd p.R2 p.R3 p.ocr -///Ac 00 03 01 00/// ACC_X[13:6] - -void L3_GC032A_fun(U8 *pPara) -{ - U8 i,val[2]; -// unsigned short j; - TS_P_debug *p = pPara; - switch(p->cmd) - { - - case 0x01: - ///AE 01 FE 33 44 // L0_GC032A_read(0xFE,&i,1); 读取当前页面 - ///AE 01 F0 33 44 // L0_GC032A_read(0xF0,&i,1); 读取id i= 0x23 - L0_GC032A_read(p->R2,&i,1); - L0_uart0_uc(i); - break; - //修改摄像头配置参数 - case 0x02: - /// fe 02 r2 r3 xx 设置寄存器(r2) = r3 - /// sysreg FE 02 FE 01 44 //设置当前页面01 - L0_GC032A_write(p->R2,p->R3); - L0_uart0_uc(p->R2); - L0_uart0_uc(p->R3); - break; - //启动摄像头进行拍照; - case 0x03:/// sysreg FE 03 03 04 05 //设置是否发送一line数据(数据分为一帧=640Line = 640line*480pclk ) - ///AE 03 01 33 44 //s_task_GC032A.line_onf = 01 - ///AE 03 00 33 44 //s_task_GC032A.line_onf = 00 - s_task_GC032A.line_onf = p->R2; - L0_uart0_uc(0x30|s_task_GC032A.line_onf); - break; - case 0x05: - ///AE 05 01 33 44 //进入 standby - ///AE 05 00 33 44 //退出 standby - L1_GC032A_sleep(p->R2); - L0_uart0_uc(0x30|s_task_GC032A.line_onf); - break; - case 6:///AE 06 22 33 44 - D_cam_led_off(); - break; - case 7:///AE 07 22 33 44 - D_cam_led_on(); - - break; - /******************* - case 0x00: - L0_GC032A_read(p->R2,val,p->R3); - L0_uart0_uc(p->cmd); - L0_uart0_uc(p->R2); - L0_uart0_uc(p->R3); - L0_uart0_uc('G'); - for(i = 0;i < p->R3;i++) - { - L0_uart0_uc(val[i]); - } - break; - //读取摄像头配置参数 - case 0x35: - L0_GC032A_standby();// led 17.1-16.9ma standby 6.2ma - L0_uart0_uc(0x31); - break; - case 0x36: - /// 退出standby: - L0_GC032A_work(); - L0_uart0_uc(0x30); - break; - - - ****************************/ - - default: - break; - }; -} - -#endif - - - -#if 0 -FE 02 88 15 10 13 11 15 11 16 12 14 11 15 12 16 12 16 14 17 13 17 13 16 13 16 12 16 13 16 12 18 -14 15 12 15 13 15 12 16 14 15 13 15 12 15 13 16 14 18 14 17 13 16 10 16 15 1A 15 22 2D 3A 3F 47 -41 53 5E 63 65 69 6C 6F 71 7A 72 73 75 7A 7B 7E 7D 82 85 8B 8F 90 8F 93 96 9A 9D 9A 97 98 96 99 -9A 9B 9A 9C 9E 9F 9F 9D 9A 9A 99 9C 9B 9B 9A 9A 9B 9C 9D 9F 9F A0 A1 A2 A3 A2 A2 A3 A1 A3 A4 A4 -A4 A4 A3 A3 A2 A2 A3 A5 A6 A7 A8 A7 A6 A6 A5 A6 A6 A8 AA AA AA AA AA AB AB AB AC AC AB AC AC AD -AF AE AD AD AC AC AB AC AC AD AD AE AE AE AF AD AE AE AD AE AE AE AE AE AF AF AF AF AF AF B0 B1 -B1 B1 B2 B1 B1 B1 B1 B1 B1 B2 B2 B2 B3 B2 B2 B2 B3 B3 B3 B4 B4 B4 B4 B4 B4 B4 B4 B4 B4 B4 B4 B5 -B4 B5 B6 B5 B5 B4 B4 B4 B3 B4 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B6 B6 B5 B6 B6 B6 B6 B6 B6 B6 -B6 B6 B6 B6 B6 B6 B6 B6 B7 B6 B6 B7 B6 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 -B8 B7 B7 B8 B8 B7 B8 B8 B7 B8 B9 B8 B8 B8 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B8 B7 B7 B8 B8 -B8 B8 B8 B8 B8 B8 B7 B7 B7 B7 B8 B8 B9 B8 B9 B8 B8 B8 B8 B7 B7 B7 B7 B7 B8 B8 B8 B8 B8 B8 B8 B8 -B9 B8 B8 B8 B8 B9 BA B8 B8 B8 B7 B8 B8 B8 B8 B8 B8 B8 B9 B8 B7 B7 B7 B7 B7 B7 B6 B6 B7 B7 B7 B7 -B7 B7 B7 B8 B8 B8 B8 B8 B8 B8 B8 B8 B9 B9 B9 B8 B9 B8 B8 B9 BA B9 B8 B8 B8 B8 B9 B8 B9 B8 B8 B8 -B8 B8 B9 B9 B8 B9 B9 B9 B9 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B9 B9 B8 B9 B9 B9 B9 B9 B9 BA B9 -B9 B9 B9 B9 B8 B9 B9 B9 B9 B9 B9 B9 B8 B9 B9 B9 B9 B9 B9 B9 B9 B9 BB B9 B9 B9 B9 B9 B9 B9 BA BA -BB B9 B8 B8 B8 B8 B8 B9 B9 BA BA B9 BA B9 B9 B9 B9 B9 B8 B8 B8 B8 B9 B9 B9 B9 BA BA BB B9 B9 B9 -B9 B9 B9 B9 B9 B9 B9 B9 B9 B9 B9 B9 BA B9 B9 B9 B9 BA BA BB BB BA BB BA B9 B9 B9 B9 B9 B9 B9 BA -BB BA BA BA BA B9 B8 B8 B8 B8 B8 B9 B9 BA BB BB BB BA BA B9 B9 B9 B9 B9 BA fd fc - - - -#endif - - - - - - - - - - - - - - diff --git a/source/bsp/backu/bsp_cam - 鍓湰.c b/source/bsp/backu/bsp_cam - 鍓湰.c deleted file mode 100644 index e9c132c..0000000 --- a/source/bsp/backu/bsp_cam - 鍓湰.c +++ /dev/null @@ -1,574 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_gc6133.c.c -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 -////////////////////////////////////////////////////////////////////////////// - -#include "Bsp_debug.h" -#include "bsp_func.h" -#include "bsp_power.h" -#include "bsp_cam_isr.h" -#include "bsp_cam.h" -#include "../msp/uart0.h" -#include "cw63xx.h" -#include "../clib/Clib.h" -#include "../clib/bit.h" -#include "../msp/time.h" - -TS_P_rf433 TS_paer_value= -{ - 0xaa,///vU8 ha; -// 0xaa,///vU8 hb; - 0xad, - 0x0123, -// 0x00,///U16 paperNum:12; //12bit纸张数据 - ///U8 cameraIndex:2; //摄像头编号 - ///U8 cameraWorking:1; //是否正常工作 - ///U8 reserved: 1; //保留 - 0x56,///U8 cameraBoardPower; //电量 - 0xcc//, 0xaa///vU8 hc; - -}; - -void GC032A_port_init(void) -{ - ///00 准双向口 灌电流20mA 拉电流270-150uS - ///01 推挽输出 20mA 加限流 - ///10 高阻 - ///11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 - - //p3.6 --HSYNC -// BITN_0(P3M1,BITN6);BITN_0(P3M0,BITN6); - ///P3.7 -- VSYNC -// BITN_0(P3M1,BITN7);BITN_0(P3M0,BITN7); - L0_GC032A_standby(); - D_cam_AVDD_on(); - -} -////>>>>>>>>>>>>>>>>>>>>>_s_task_GC032A_>>>>>>>>>>>>>>>>>>>>>> - - - - -struct _s_task_GC032A_ s_task_GC032A; - -void L2_task_GC032A_init(void) -{ - L0_cam_isr_init(); - - L1_task_init(&s_task_GC032A.task); - ///L3_task_s_go(s_task_GC032A,D_task_init); - s_task_GC032A.next_line = D_clear; - s_task_GC032A.run = D_run; - s_task_GC032A.line_get = D_clear; - s_task_GC032A.cal_ok = D_clear; - s_task_GC032A.frames = 0; - s_task_GC032A.vs_ok = D_clear; - s_task_GC032A.line_en = D_ON; - s_task_GC032A.cal_en = D_OFF; -/// D_HSYNCS_open();//BITN_1(INT_CLKO, INT_EX2);//使能INT2中断 -} - -#if 10 - -///// get -void L2_task_GC032A_handle(struct _s_task_GC032A_ *s) -{ - - TTSS_Task_init(); - //PWDN引脚拉低(0 -- 正常工作,1 -- 休眠) - L0_GC032A_standby(); - L0_uart0_uc('2'); - L2_task_go(D_task_GC032A_init_DVDD); - TTSS_Task_step(D_task_GC032A_init_DVDD); - L0_GC032A_work(); - //IOVDD上电,并延时50us以上; - D_cam_DVDD_on(); - // L0_uart0_uc('3'); - L2_task_go(D_task_GC032A_init_AVDD); - //L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_AVDD); - //AVDD28上电,并延时0us以上 - D_cam_AVDD_on(); - L0_uart0_uc('4'); - L2_task_go(D_task_GC032A_init_pwdn); - TTSS_Task_step(D_task_GC032A_init_pwdn); - //提供032A系统频率 - /// L0_MCLKO_init(D_ON); - //L0_uart0_uc('n'); - //PWDN引脚拉高,延时,拉低 - L0_GC032A_standby();DL0_WDT();// - L2_task_go(D_task_GC032A_init_pwdn_wait); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_pwdn_wait); - L0_GC032A_work(); - GC032a_L0_uart0_uc('5');/// Lc_delay_ms(20); - gRccUs03 = 0; - // L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - L2_task_go(D_task_GC032A_write_reg); - //L2_task_go(0); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_write_reg); - //设置摄像头参数 大约2s时间 - if(0 != GC6133_init_reg_tbl[gRccUs03][0]) - { - //GC032a_L0_uart0_uc('k'); - L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - gRccUs03 ++; - }else - { - L2_task_go(D_task_GC032A_div); - ///L1_task_Tdelay(D_Tdelay_500ms); - L1_task_Tdelay(D_Tdelay_1s);///重要 这个时间很关键aaaaaa - } - TTSS_Task_step(D_task_GC032A_div); - //L0_GC032A_write(0xfc,0x02); //复位?? - L0_GC032A_write(0xf8,0x03);/// 恢复分频 - L0_GC032A_write(0xfa,D_0xfa);DL0_WDT();// - GC032a_L0_uart0_uc('6'); - L2_task_go(D_task_GC032A_start_time); -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over - -////等待 其他任务的启动后才工作 - TTSS_Task_step(D_task_GC032A_start_time); - D_cam_led_on();D_VSYNCS_open(); - L1_GC032A_sleep(D_wakeup); - GC032a_L0_uart0_uc('7'); -/// s->one_line_ok = D_clear;D_ledb_OFF(); - L2_task_go(D_task_GC032A_led); - TTSS_Task_step(D_task_GC032A_led); - ///vs /```24.8ms````\__________________________..1.16s...____________________________/````````\___________ - ///cam_led ```````````\_________________________________________________________/`````````````````\____ - if(D_ready == s->vs_ok)///为了关灯 - { - s_task_GC032A.vs_ok = D_clear; - D_cam_led_off(); GC032a_L0_uart0_uc('D'); - L2_task_go(D_task_GC032A_wait); - } - TTSS_Task_step(D_task_GC032A_wait);////>>>>>>>>>>>>>>>>>>>>>>>--- - ///捕获到需要的行 - - if(D_ready == s->line_get) - {DL0_WDT();// - s->line_get = D_clear; - /// 1.standby - /// D_cam_led_off(); - if(D_ON == s->line_en) - { - GC032a_L0_uart0_uc(0xfe); - GC032a_L0_uart0_uc(0xfd); - D_send_us(DR_pclk_n); - //D_send_us(s->lines); - L2_task_go(D_task_GC032A_send_line); - }else - { - L2_task_go(D_task_GC032A_cal); - } - - L1_task_Tdelay(D_Tdelay_10ms); - } - TTSS_Task_step(D_task_GC032A_send_line); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,0,199); - L2_task_go(D_task_GC032A_send2); - } - TTSS_Task_step(D_task_GC032A_send2); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,200,399); - L2_task_go(D_task_GC032A_send3); - } - TTSS_Task_step(D_task_GC032A_send3); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,400,509); - L2_task_go(D_task_GC032A_send5); - } - TTSS_Task_step(D_task_GC032A_send4); - if(D_uart0_free()) - { - L0_uart0_sendArraylong(s->buf,600,639); - L2_task_go(D_task_GC032A_send5); - } - TTSS_Task_step(D_task_GC032A_send5); - if(D_uart0_free()) - { - // 'fe','fd','fd','fc' - // GC032a_L0_uart0_uc(0xfd); - // GC032a_L0_uart0_uc(0xfc); - L2_task_go(D_task_GC032A_line1); - //L2_task_go(D_task_GC032A_sleep); - } - - TTSS_Task_step(D_task_GC032A_line1) - for(gRccUs03 = 1;gRccUs03 < 568;gRccUs03 ++) - { - if((s->buf[gRccUs03 - 1] == 0)&& - (s->buf[gRccUs03] == 1))//// _/``上升沿 - { - if(s->buf[gRccUs03 + 1] == 0) - {//_/`\_ 尖峰需要过滤 - - }else - {// ___/````上升沿开始高电平 - s->up_point = gRccUs03; - } - }else if((s->buf[gRccUs03 - 1] == 1)&& - (s->buf[gRccUs03] == 0))//// ``\_ 下降沿 - { - s->down_point = gRccUs03; - - }else - { - - } - } - L2_task_go(D_task_GC032A_line2); - - TTSS_Task_step(D_task_GC032A_line2) - - D_send_us(s->up_point); - D_send_us(s->down_point); - D_send_us(s->down_point - s->up_point); - // DR_pdata_n =0; - // 'fe','fd','fd','fc' - GC032a_L0_uart0_uc(0xfd); - GC032a_L0_uart0_uc(0xfc); - if(D_ON == s->cal_en) - { - L2_task_go(D_task_GC032A_cal); - }else - { - L2_task_go(D_task_GC032A_sleep); - } - TTSS_Task_step(D_task_GC032A_cal) - - - GC032a_L0_uart0_uc('8');//2.1ms - L2_task_go(D_task_GC032A_sleep); - - - TTSS_Task_step(D_task_GC032A_sample); - ///20181007本想调试成 分段的led 不通过vs 关断 但是发现不好调整 - ///采样的时候led打开照亮 - D_cam_led_on();GC032a_L0_uart0_uc('`'); - L2_task_go(D_task_GC032A_sleep); - // L1_task_Tdelay(D_Tdelay_500ms+6); - TTSS_Task_step(D_task_GC032A_sleep); - /// 收到外部命令run后 决定进入睡眠状态 ,低功耗处理 - ////CAL 10MS 433 10MS 总共20ms / 1160ms/vs 取行数消耗10ms - /////1160-10 - 20 = 1130ms - /// GC032a_L0_uart0_uc(0x88); - if(D_run == s->run) - { - GC032a_L0_uart0_uc('9');//2.1ms - L2_task_go(D_task_GC032A_led); - L1_task_Tdelay(D_Tdelay_10ms); - }else - { - D_cam_led_off(); - L1_GC032A_sleep(D_sleep); - L2_task_go(0); - } -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - TTSS_Task_end(); -} - -#else - -///// get -void L2_task_GC032A_handle(struct _s_task_GC032A_ *s) -{ - - TTSS_Task_init(); - //PWDN引脚拉低(0 -- 正常工作,1 -- 休眠) - L0_GC032A_standby(); - L0_uart0_uc('2'); - L2_task_go(D_task_GC032A_init_DVDD); - TTSS_Task_step(D_task_GC032A_init_DVDD); - L0_GC032A_work(); - //IOVDD上电,并延时50us以上; - D_cam_DVDD_on(); - // L0_uart0_uc('3'); - L2_task_go(D_task_GC032A_init_AVDD); - //L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_AVDD); - //AVDD28上电,并延时0us以上 - D_cam_AVDD_on(); - L0_uart0_uc('4'); - L2_task_go(D_task_GC032A_init_pwdn); - TTSS_Task_step(D_task_GC032A_init_pwdn); - //提供032A系统频率 - /// L0_MCLKO_init(D_ON); - //L0_uart0_uc('n'); - //PWDN引脚拉高,延时,拉低 - L0_GC032A_standby();DL0_WDT();// - L2_task_go(D_task_GC032A_init_pwdn_wait); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_init_pwdn_wait); - L0_GC032A_work(); - GC032a_L0_uart0_uc('5');/// Lc_delay_ms(20); - gRccUs03 = 0; - // L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - L2_task_go(D_task_GC032A_write_reg); - //L2_task_go(0); - L1_task_Tdelay(D_Tdelay_10ms); - TTSS_Task_step(D_task_GC032A_write_reg); - //设置摄像头参数 大约2s时间 - if(0 != GC6133_init_reg_tbl[gRccUs03][0]) - { - //GC032a_L0_uart0_uc('k'); - L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - gRccUs03 ++; - }else - { - L2_task_go(D_task_GC032A_div); - ///L1_task_Tdelay(D_Tdelay_500ms); - L1_task_Tdelay(D_Tdelay_1s);///重要 这个时间很关键aaaaaa - } - TTSS_Task_step(D_task_GC032A_div); - //L0_GC032A_write(0xfc,0x02); //复位?? - L0_GC032A_write(0xf8,0x03);/// 恢复分频 - L0_GC032A_write(0xfa,D_0xfa);DL0_WDT();// - GC032a_L0_uart0_uc('6'); - L2_task_go(D_task_GC032A_start_time); -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over - -////等待 其他任务的启动后才工作 - TTSS_Task_step(D_task_GC032A_start_time); - D_cam_led_on();D_VSYNCS_open(); - L1_GC032A_sleep(D_wakeup); - GC032a_L0_uart0_uc('7'); -/// s->one_line_ok = D_clear;D_ledb_OFF(); - L2_task_go(D_task_GC032A_led); - TTSS_Task_step(D_task_GC032A_led); - ///vs /```24.8ms````\__________________________..1.16s...____________________________/````````\___________ - ///cam_led ```````````\_________________________________________________________/`````````````````\____ - if(D_ready == s->vs_ok)///为了关灯 - { - s_task_GC032A.vs_ok = D_clear; - D_cam_led_off(); GC032a_L0_uart0_uc('_'); - L2_task_go(D_task_GC032A_wait); - } - TTSS_Task_step(D_task_GC032A_wait);////>>>>>>>>>>>>>>>>>>>>>>>--- - ///捕获到需要的行 - if(1 == s->line_get) - {DL0_WDT();// - s->line_get = 0; - L2_task_go(D_task_GC032A_cal);//// 单行计算 - } - TTSS_Task_step(D_task_GC032A_cal); - ///计算一个 line的数据 - ///D_txd4_wakeup(); - ///GC032a_L0_uart0_uc(0xd); GC032a_L0_uart0_uc(0xa);// - s->buf[D_pclk_per_hs + 1] =s->buf[30]; - ///GC032a_L0_uart0_uchex(s->buf[D_pclk_per_hs + 1]); - gRccUs04 = 0; - for(gRccUs03 = 0;gRccUs03 < D_pclk_per_hs_2;gRccUs03 ++) - { //s->buf[gRccUs03] = 0x10; - //debug 开关 显示当前收到的数据 - //L0_uart0_uc(s->buf[gRccUs03]); - if(s->buf[gRccUs03] >= 0x10) - { - s->buf[gRccUs03] -= 0x10; - } - s->buf[gRccUs03] >>= 1; - gRccUs04 += s->buf[gRccUs03]; - } - gRccUs04 >>= 2;//gRccUs04 >>= 4; - TS_paer_value.r123.paperNum = gRccUs04; - ///GC032a_L0_uart0_uchex((unsigned char)(gRccUs04>>8)); - s_task_GC032A.cal_ok = D_ready; - - L2_task_go(D_task_GC032A_sample);/// 发送完成延时后开始采样, - L1_task_Tdelay(D_Tdelay_300ms); //700=1a 600=1e 500 21 400 25 300 26 - - TTSS_Task_step(D_task_GC032A_sample); - ///20181007本想调试成 分段的led 不通过vs 关断 但是发现不好调整 - ///采样的时候led打开照亮 - D_cam_led_on();GC032a_L0_uart0_uc('`'); - L2_task_go(D_task_GC032A_sleep); - // L1_task_Tdelay(D_Tdelay_500ms+6); - TTSS_Task_step(D_task_GC032A_sleep); - /// 收到外部命令run后 决定进入睡眠状态 ,低功耗处理 - ////CAL 10MS 433 10MS 总共20ms / 1160ms/vs 取行数消耗10ms - /////1160-10 - 20 = 1130ms - /// GC032a_L0_uart0_uc(0x88); - if(D_run == s->run) - { - GC032a_L0_uart0_uc('r');//2.1ms - L2_task_go(D_task_GC032A_led); - }else - { - D_cam_led_off(); - L1_GC032A_sleep(D_sleep); - L2_task_go(0); - } -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - TTSS_Task_end(); -} - - - - -#endif - -void L1_GC032A_sleep(unsigned char onf) -{///FE 15 Fd 33 44//standby -///FE 05 Fd 33 44//wakeup - if(D_sleep == onf) - { - GC032a_L0_uart0_uc('L'); - /// 进入standby: - L0_GC032A_write(0xfc,0x03); L0_GC032A_write(0xf7,0x00); L0_GC032A_write(0xf9,0xcf); L0_GC032A_write(0xf3,0x00); - Lc_delay_nop(30); - Lc_delay_nop(30); - /// D_cam_AVDD_off(); - // D_cam_led_off(); - }else - { - GC032a_L0_uart0_uc('X'); - /// 退出standby: - L0_GC032A_write(0xfc,0x02); L0_GC032A_write(0xf7,0x01); L0_GC032A_write(0xf9,0xce); L0_GC032A_write(0xf3,0xff); - /// D_cam_led_on(); - } -} - -#if 10 -void L3_GC032A_fun(U8 *pPara) -{ - - -} -#else - -//// fe 01 reg data 0cx -/// Ac 01 02 03 ocr ---bsp_debug.c -/// p.cmd p.R2 p.R3 p.ocr -///Ac 00 03 01 00/// ACC_X[13:6] - -void L3_GC032A_fun(U8 *pPara) -{ - U8 i,val[2]; -// unsigned short j; - TS_P_debug *p = pPara; - switch(p->cmd) - { - - case 0x01: - ///AE 01 FE 33 44 // L0_GC032A_read(0xFE,&i,1); 读取当前页面 - ///AE 01 F0 33 44 // L0_GC032A_read(0xF0,&i,1); 读取id i= 0x23 - L0_GC032A_read(p->R2,&i,1); - L0_uart0_uc(i); - break; - //修改摄像头配置参数 - case 0x02: - /// fe 02 r2 r3 xx 设置寄存器(r2) = r3 - /// sysreg FE 02 FE 01 44 //设置当前页面01 - L0_GC032A_write(p->R2,p->R3); - L0_uart0_uc(p->R2); - L0_uart0_uc(p->R3); - break; - //启动摄像头进行拍照; - case 0x03:/// sysreg FE 03 03 04 05 //设置是否发送一line数据(数据分为一帧=640Line = 640line*480pclk ) - ///AE 03 01 33 44 //s_task_GC032A.line_onf = 01 - ///AE 03 00 33 44 //s_task_GC032A.line_onf = 00 - s_task_GC032A.line_onf = p->R2; - L0_uart0_uc(0x30|s_task_GC032A.line_onf); - break; - case 0x05: - ///AE 05 01 33 44 //进入 standby - ///AE 05 00 33 44 //退出 standby - L1_GC032A_sleep(p->R2); - L0_uart0_uc(0x30|s_task_GC032A.line_onf); - break; - case 6:///AE 06 22 33 44 - D_cam_led_off(); - break; - case 7:///AE 07 22 33 44 - D_cam_led_on(); - - break; - /******************* - case 0x00: - L0_GC032A_read(p->R2,val,p->R3); - L0_uart0_uc(p->cmd); - L0_uart0_uc(p->R2); - L0_uart0_uc(p->R3); - L0_uart0_uc('G'); - for(i = 0;i < p->R3;i++) - { - L0_uart0_uc(val[i]); - } - break; - //读取摄像头配置参数 - case 0x35: - L0_GC032A_standby();// led 17.1-16.9ma standby 6.2ma - L0_uart0_uc(0x31); - break; - case 0x36: - /// 退出standby: - L0_GC032A_work(); - L0_uart0_uc(0x30); - break; - - - ****************************/ - - default: - break; - }; -} - -#endif - - - -#if 0 -FE 02 88 15 10 13 11 15 11 16 12 14 11 15 12 16 12 16 14 17 13 17 13 16 13 16 12 16 13 16 12 18 -14 15 12 15 13 15 12 16 14 15 13 15 12 15 13 16 14 18 14 17 13 16 10 16 15 1A 15 22 2D 3A 3F 47 -41 53 5E 63 65 69 6C 6F 71 7A 72 73 75 7A 7B 7E 7D 82 85 8B 8F 90 8F 93 96 9A 9D 9A 97 98 96 99 -9A 9B 9A 9C 9E 9F 9F 9D 9A 9A 99 9C 9B 9B 9A 9A 9B 9C 9D 9F 9F A0 A1 A2 A3 A2 A2 A3 A1 A3 A4 A4 -A4 A4 A3 A3 A2 A2 A3 A5 A6 A7 A8 A7 A6 A6 A5 A6 A6 A8 AA AA AA AA AA AB AB AB AC AC AB AC AC AD -AF AE AD AD AC AC AB AC AC AD AD AE AE AE AF AD AE AE AD AE AE AE AE AE AF AF AF AF AF AF B0 B1 -B1 B1 B2 B1 B1 B1 B1 B1 B1 B2 B2 B2 B3 B2 B2 B2 B3 B3 B3 B4 B4 B4 B4 B4 B4 B4 B4 B4 B4 B4 B4 B5 -B4 B5 B6 B5 B5 B4 B4 B4 B3 B4 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B6 B6 B5 B6 B6 B6 B6 B6 B6 B6 -B6 B6 B6 B6 B6 B6 B6 B6 B7 B6 B6 B7 B6 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 -B8 B7 B7 B8 B8 B7 B8 B8 B7 B8 B9 B8 B8 B8 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B7 B8 B7 B7 B8 B8 -B8 B8 B8 B8 B8 B8 B7 B7 B7 B7 B8 B8 B9 B8 B9 B8 B8 B8 B8 B7 B7 B7 B7 B7 B8 B8 B8 B8 B8 B8 B8 B8 -B9 B8 B8 B8 B8 B9 BA B8 B8 B8 B7 B8 B8 B8 B8 B8 B8 B8 B9 B8 B7 B7 B7 B7 B7 B7 B6 B6 B7 B7 B7 B7 -B7 B7 B7 B8 B8 B8 B8 B8 B8 B8 B8 B8 B9 B9 B9 B8 B9 B8 B8 B9 BA B9 B8 B8 B8 B8 B9 B8 B9 B8 B8 B8 -B8 B8 B9 B9 B8 B9 B9 B9 B9 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B8 B9 B9 B8 B9 B9 B9 B9 B9 B9 BA B9 -B9 B9 B9 B9 B8 B9 B9 B9 B9 B9 B9 B9 B8 B9 B9 B9 B9 B9 B9 B9 B9 B9 BB B9 B9 B9 B9 B9 B9 B9 BA BA -BB B9 B8 B8 B8 B8 B8 B9 B9 BA BA B9 BA B9 B9 B9 B9 B9 B8 B8 B8 B8 B9 B9 B9 B9 BA BA BB B9 B9 B9 -B9 B9 B9 B9 B9 B9 B9 B9 B9 B9 B9 B9 BA B9 B9 B9 B9 BA BA BB BB BA BB BA B9 B9 B9 B9 B9 B9 B9 BA -BB BA BA BA BA B9 B8 B8 B8 B8 B8 B9 B9 BA BB BB BB BA BA B9 B9 B9 B9 B9 BA fd fc - - - -#endif - - - - - - - - - - - - - - diff --git a/source/bsp/backu/bsp_cam.c b/source/bsp/backu/bsp_cam.c deleted file mode 100644 index 00e44f6..0000000 --- a/source/bsp/backu/bsp_cam.c +++ /dev/null @@ -1,706 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_gc6133.c.c -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 -////////////////////////////////////////////////////////////////////////////// - -#include "Bsp_debug.h" -#include "bsp_func.h" -#include "bsp_power.h" -#include "bsp_cam_isr.h" -#include "bsp_cam.h" -#include "../msp/uart0.h" -#include "cw63xx.h" -#include "../clib/Clib.h" -#include "../clib/bit.h" -#include "../msp/time.h" - -/// 第一个比第二个延迟20ms 发送 这样同样触发后,第一个10.5ms发送完成 第二个还没有发送,不构成干扰 - -#define D_p_send_delay(); L1_task_Cdelay(D_Cdelay_15ms*(1+D_cameralIndex)); - -////>>>>>>>>>>>>>>>>>>>>>_s_task_GC032A_>>>>>>>>>>>>>>>>>>>>>> - - -void L0_p_send(void); -extern TS_P_rf433 TS_paer_value; - - -struct _s_task_GC032A_ s_task_GC032A; - -void L2_task_GC032A_init(void) -{ - L0_cam_isr_init(); - - L1_task_init(&s_task_GC032A.task); - - s_task_GC032A.next_line = D_clear; - s_task_GC032A.line_ok = D_run; - s_task_GC032A.line_get = D_clear; - s_task_GC032A.cal_ok = D_clear; - s_task_GC032A.vs_ok = D_clear; -} - -//// 采集单行的程序 20190217 -//// step01 上电时序初始化 -///step02 输入配置寄存器 -///step03 打开中断进入采集模式 -///step04 捕捉第一帧数据 开始采样每一行 同时可以关闭led节约电 -/// step05 捕获到需要的行数 采集到需要的一行数据 -/// step06------>进入休眠状态 -/// |----->持续采集下一行 - - -#if(MODE_CAM_LINE == MODE_CAM) - - -#if 0 - -/// 采集完后延时一定时间 打开led灯 为下次的cam工作提供光源 -/// 等待run信号 如果关闭工作,休眠 fixme:冷启动还是热启动 -void L2_task_GC032A_handle(struct _s_task_GC032A_ *s) -{ - TTSS_Task_init() - //#define D_pclk_per_hs 6 -// PrintCam_L0_uart0_uc('$'); - L2_task_go(D_task_GC032A_init_standby); - TTSS_Task_step(D_task_GC032A_init_standby) - L0_GC032A_standby(); - D_cam_led_on(); - //PWDN引脚拉低(0 -- 正常工作,1 -- 休眠) - // PrintCam_L0_uart0_uc('2'); - L2_task_go(D_task_GC032A_init_DVDD); - TTSS_step01(D_task_GC032A_init_DVDD); - L0_GC032A_work(); - //IOVDD上电,并延时50us以上; - L2_task_go(D_task_GC032A_init_AVDD); - TTSS_Task_step(D_task_GC032A_init_AVDD); - //AVDD28上电,并延时0us以上 - D_cam_AVDD_on(); - L2_task_go(D_task_GC032A_init_pwdn); - TTSS_Task_step(D_task_GC032A_init_pwdn); - //提供032A系统频率 - L0_MCLKO_init(D_ON); - L2_task_GC032A_init(); - //PWDN引脚拉高,延时,拉低 - L0_GC032A_standby(); - DL0_WDT();// - L2_task_go(D_task_GC032A_init_pwdn_wait); - L1_task_Cdelay(D_Cdelay_15ms); - TTSS_Task_step(D_task_GC032A_init_pwdn_wait); - L0_GC032A_work(); - gRccUs03 = 0; - L2_task_go(D_task_GC032A_write_reg); - L1_task_Cdelay(D_Cdelay_15ms); - TTSS_Task_step(D_task_GC032A_write_reg); - //设置摄像头参数 大约2s时间 - if(0 != GC6133_init_reg_tbl[gRccUs03][0]) - { - //GC032a_L0_uart0_uc('k'); - L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - gRccUs03 ++; - }else - { - L2_task_go(D_task_GC032A_div); - L1_task_Tdelay(D_Tdelay_1s);///重要 这个时间很关键aaaaaa - } - TTSS_Task_step(D_task_GC032A_div); - //L0_GC032A_write(0xfc,0x02); //复位?? - L0_GC032A_write(0xf8,0x03);/// 恢复分频 - L0_GC032A_write(0xfa,D_0xfa);DL0_WDT(); - L2_task_go(D_task_GC032A_wakup_sample); -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over - -////等待 其他任务的启动后才工作 - TTSS_step03(D_task_GC032A_wakup_sample) - L1_GC032A_sleep(D_wakeup); - GC032a_L0_uart0_uc('w'); - ///D_ledb_OFF(); - L2_task_go((D_task_GC032A_wakup_sample2)); - L1_task_Tdelay(D_Tdelay_1s5); - TTSS_step04(D_task_GC032A_wakup_sample2); - D_VSYNCS_open();////后台的中断开始工作 - L2_task_go(D_task_GC032A_one_frame); -////////////////////////////////////////////////////////////////////////////// - TTSS_step04(D_task_GC032A_one_frame); - ////捕获到一帧数据的开始((来自于后台的中断)) - ///vs /```24.8ms````\__________________________..1.16s...____________________________/````````\___________ - ///cam_led ```````````\_________________________________________________________/`````````````````\____ - if(D_ready == s->vs_ok)///为了关灯 - { - /// PrintCam_L0_uart0_uc('V'); - s_task_GC032A.vs_ok = D_clear; - D_cam_led_off(); - L2_task_go(D_task_GC032A_wait); - //L1_task_Tdelay(D_Tdelay_50ms); ////取决于getline的行数 和cam需要亮灯的时间 - } - TTSS_step05(D_task_GC032A_wait);////>>>>>>>>>>>>>>>>>>>>>>>--- - ///捕获到需要的Line(来自于后台的中断) - if(D_clear != s->line_get) - {DL0_WDT(); ////memo20190217 : 间隔1.15s - //PrintCam_L0_uart0_uc(s->line_get);// L2_line_send(); - s->buf2_ok = D_ready;///buf2_ok数据准备好可供算法查询 - L2_task_go(D_task_GC032A_sleep); - /// L1_task_Tdelay(D_Tdelay_10ms); - } - TTSS_Task_step(D_task_GC032A_sleep) - ///采样结束 - L1_GC032A_sleep(D_sleep); - L0_GC032A_standby(); - L0_MCLKO_init(D_OFF); - D_cam_led_off(); - L2_task_go(D_task_FLOW_PreSend); - - ////>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - TTSS_Task_step(D_task_FLOW_PreSend); - D_txd4_wakeup();///上升沿 1ms后433 从sleep到可以发送 - /// TS_paer_value.r123.cameraBoardPower = s->t_stamp+0x30; - L0_p_send(); - //D_txd4_low(); - L2_task_go(D_task_FLOW_send); - // L1_task_Tdelay(D_Tdelay_10ms); - ///L1_task_Cdelay(60);//2ms---mcu+433无法接收 - TTSS_Task_step(D_task_FLOW_send); - //D_txd4_wakeup(); - L0_uart0_sendArray((unsigned char *)&TS_paer_value,6); - L2_task_go(D_task_FLOW_send2); - TTSS_Task_step(D_task_FLOW_send2); - if(D_uart0_free()) - { - L2_task_go(D_task_FLOW_send3);/// - D_p_send_delay(); - - } - TTSS_Task_step(D_task_FLOW_send3); - L0_uart0_sendArray((unsigned char *)&TS_paer_value,6); - L2_task_go(D_task_FLOW_send4); - TTSS_Task_step(D_task_FLOW_send4); - if(D_uart0_free()) - { - L2_task_go(D_task_FLOW_send5); - } - TTSS_Task_step(D_task_FLOW_send5); - D_txd4_low();///共计耗时15ms - D_cam_AVDD_off();///注意影响发送 - L2_task_go(0); - -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - TTSS_Task_end(); -} -#endif - -#elif(MODE_CAM_FRAME == MODE_CAM) - -#elif(MODE_CAM_TEST == MODE_CAM) - -#define PrintCam_L0_uart0_uc(x) L0_uart0_uc(x) -#define PrintCam_D_send_us(x) L0_uart0_us(x) - -///#define L0_uart0_sendArraylong(a,start,end) L0_uart0_sendArray(a(start)) - -/// 采集完后延时一定时间 打开led灯 为下次的cam工作提供光源 -/// 等待run信号 如果关闭工作,休眠 fixme:冷启动还是热启动 -void L2_task_GC032A_handleTest(struct _s_task_GC032A_ *s) -{ - TTSS_Task_init() - //#define D_pclk_per_hs 6 -// PrintCam_L0_uart0_uc('$'); - L2_task_go(D_task_GC032A_init_standby); - TTSS_Task_step(D_task_GC032A_init_standby) - L0_GC032A_standby(); - D_cam_led_on(); - //PWDN引脚拉低(0 -- 正常工作,1 -- 休眠) - // PrintCam_L0_uart0_uc('2'); - L2_task_go(D_task_GC032A_init_DVDD); - TTSS_step01(D_task_GC032A_init_DVDD); - L0_GC032A_work(); - //IOVDD上电,并延时50us以上; - L2_task_go(D_task_GC032A_init_AVDD); - TTSS_Task_step(D_task_GC032A_init_AVDD); - //AVDD28上电,并延时0us以上 - D_cam_AVDD_on(); - L2_task_go(D_task_GC032A_init_pwdn); - TTSS_Task_step(D_task_GC032A_init_pwdn); - //提供032A系统频率 - L0_MCLKO_init(D_ON); - L2_task_GC032A_init(); - //PWDN引脚拉高,延时,拉低 - L0_GC032A_standby(); - DL0_WDT();// - L2_task_go(D_task_GC032A_init_pwdn_wait); - L1_task_Cdelay(D_Cdelay_15ms); - TTSS_Task_step(D_task_GC032A_init_pwdn_wait); - L0_GC032A_work(); - gRccUs03 = 0; - L2_task_go(D_task_GC032A_write_reg); - L1_task_Cdelay(D_Cdelay_15ms); - TTSS_Task_step(D_task_GC032A_write_reg); - //设置摄像头参数 大约2s时间 - if(0 != GC6133_init_reg_tbl[gRccUs03][0]) - { - L0_GC032A_write(GC6133_init_reg_tbl[gRccUs03][0],GC6133_init_reg_tbl[gRccUs03][1]);/// - gRccUs03 ++; - }else - { - L2_task_go(D_task_GC032A_div); - L1_task_Tdelay(D_Tdelay_1s);///重要 这个时间很关键aaaaaa - } - TTSS_Task_step(D_task_GC032A_div); - //L0_GC032A_write(0xfc,0x02); //复位?? - L0_GC032A_write(0xf8,0x03);/// 恢复分频 - L0_GC032A_write(0xfa,D_0xfa);DL0_WDT(); - L2_task_go(D_task_GC032A_wakup_sample); -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over -///------------------------------------------------------cam init over - -////等待 其他任务的启动后才工作 - TTSS_step03(D_task_GC032A_wakup_sample) - L1_GC032A_sleep(D_wakeup); - ///D_ledb_OFF(); - L2_task_go((D_task_GC032A_wakup_sample2)); - L1_task_Tdelay(D_Tdelay_1s5); - TTSS_step04(D_task_GC032A_wakup_sample2); - D_VSYNCS_open();////后台的中断开始工作 - PrintCam_L0_uart0_uc('w'); - L2_task_go(D_task_GC032A_one_frame); -////////////////////////////////////////////////////////////////////////////// - TTSS_step04(D_task_GC032A_one_frame); - - - PrintCam_L0_uart0_uc('.'); - - ////捕获到一帧数据的开始((来自于后台的中断)) - ///vs /```24.8ms````\__________________________..1.16s...____________________________/````````\___________ - ///cam_led ```````````\_________________________________________________________/`````````````````\____ - if(D_ready == s->vs_ok)///为了关灯 - { - s->vs_ok = D_clear; - PrintCam_L0_uart0_uc('V'); -/// D_cam_led_off(); - D_HSYNCS_open(); - L2_task_go(D_task_GC032A_send2); - //L1_task_Tdelay(D_Tdelay_50ms); ////取决于getline的行数 和cam需要亮灯的时间 - } - - TTSS_Task_step(D_task_GC032A_send2)///----------------------开始一行一行的发送 - - if(1 == s_task_GC032A.line_ok) - { - s_task_GC032A.line_ok = 0; - ///采样结束 - PrintCam_L0_uart0_uc(0xfe); - PrintCam_L0_uart0_uc(0xfd); - ///PrintCam_D_send_us(DR_pclk_n); - PrintCam_D_send_us(DR_line_n); - L0_uart0_sendArray(&s_task_GC032A.buf[0],200); - - L2_task_go(D_task_GC032A_06); - /// L1_task_Tdelay(D_Tdelay_50ms); - }else { } - TTSS_step06(D_task_GC032A_06); - /********************************************************* - TTS_for_add(s_task_GC032A.lines,0,627)///[0]--[199]199 - - /// s_task_GC032A.buf[s_task_GC032A.lines] = s_task_GC032A.lines; - s_task_GC032A.buf[s_task_GC032A.lines] = 0; - TTS_for_add_end() - - **************************************************/ - if(D_uart0_send_over()) - { - L0_uart0_sendArray(&s_task_GC032A.buf[200],200); - L2_task_go(D_task_GC032A_07); - } - TTSS_step06(D_task_GC032A_07); - if(D_uart0_send_over()) - { - L0_uart0_sendArray(&s_task_GC032A.buf[400],200); - L2_task_go(D_task_GC032A_08); - } - TTSS_step06(D_task_GC032A_08); - if(D_uart0_send_over()) - { - L0_uart0_sendArray(&s_task_GC032A.buf[600],D_pclk_per_hs-600);/// 628point - - // 'fe','fd','fd','fc' 46 44 20 46 43 0d 0a - PrintCam_L0_uart0_uc(0xfd); - PrintCam_L0_uart0_uc(0xfc); - s_task_GC032A.next_line = 1; - L2_task_go(D_task_GC032A_send2); - L1_task_Tdelay(D_Tdelay_10ms); - } -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - TTSS_Task_end(); -} -#endif - -void L1_GC032A_sleep(unsigned char onf) -{///FE 15 Fd 33 44//standby -///FE 05 Fd 33 44//wakeup - if(D_sleep == onf) - { - // GC032a_L0_uart0_uc('L'); - /// 进入standby: - L0_GC032A_write(0xfc,0x03); L0_GC032A_write(0xf7,0x00); L0_GC032A_write(0xf9,0xcf); L0_GC032A_write(0xf3,0x00); - Lc_delay_nop(30); - Lc_delay_nop(30); - }else - { - // GC032a_L0_uart0_uc('X'); - /// 退出standby: - L0_GC032A_write(0xfc,0x02); L0_GC032A_write(0xf7,0x01); L0_GC032A_write(0xf9,0xce); L0_GC032A_write(0xf3,0xff); - } -} - -void L2_line_send(void) -{ -#if 0 - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); -// PrintCam_L0_uart0_uc(0xfe); -// PrintCam_L0_uart0_uc(0xfd); -PrintCam_D_send_us(DR_pclk_n); -/// PrintCam_D_send_us(s_task_GC032A.usSum); - PrintCam_L0_uart0_uc(0x09); -// PrintCam_D_send_us(0x1234); PrintCam_D_send_us(0x5678); PrintCam_D_send_us(0xabcd); - -// PrintCam_L0_uart0_uc(0x0d); -// PrintCam_L0_uart0_uc(0x0a); - PrintCam_L0_uart0_sendArray(&(s_task_GC032A.buf[50]),40); - - PrintCam_L0_uart0_uc(0x09); - PrintCam_L0_uart0_sendArray(&(s_task_GC032A.buf[50]),40); - PrintCam_L0_uart0_uc(0x09); - PrintCam_L0_uart0_sendArray(&s_task_GC032A.buf[D_pclk_per_hs_570-21],20); - - ///Lc_hex2ascii(&(s_task_GC032A.buf[0]),10,ts_uart_send_shop.buf); -// Lc_hex2ascii(&s_task_GC032A.buf[D_pclk_per_hs_570-10],2,ts_uart_send_shop.buf2); -// L0_uart0_sendArray(ts_uart_send_shop.buf2,2*3); -///#ifdef D_debug_add_send - -// PrintCam_L0_uart0_uc('P'); - - ///L0_uart0_sendArraylong(s_task_GC032A.buf,D_pclk_per_hs_570-10,D_pclk_per_hs_570); - // 'fe','fd','fd','fc' -// PrintCam_L0_uart0_uc(0xfd); -// PrintCam_L0_uart0_uc(0xfc); - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); -///#else - /***** - ?? - 10 10 10 10 10 10 10 10 10 10 - 10 10 10 10 11 11 11 11 11 11 - 11 11 11 11 11 11 11 11 11 11 - 11 11 - 10 10 10 10 10 10 10 10 10 10 - 10 10 10 10 10 10 10 10 10 10 - CRpaper =04F8-g-offdiff :. - - ******/ - ///vU16 i; for(i = 0;i <= D_pclk_per_hs_570; i ++) {s_task_GC032A.buf[i]=i; } - PrintCam_L0_uart0_uc(0xfe); - PrintCam_L0_uart0_uc(0xfd); - PrintCam_D_send_us(DR_pclk_n); - L0_uart0_sendArray(s_task_GC032A.buf,200); - L0_uart0_sendArray(&s_task_GC032A.buf[200],200); - L0_uart0_sendArray(&s_task_GC032A.buf[400],(D_pclk_per_hs_570-400)); - -// PrintCam_D_send_us(ts_task_ALGO.usSum_temp); -//// PrintCam_D_send_us(s_task_GC032A.down_point); -// PrintCam_D_send_us(s_task_GC032A.down_point - s_task_GC032A.up_point); - // DR_pdata_n =0; -// PrintCam_D_send_us(0x1234); - // 'fe','fd','fd','fc' -// PrintCam_L0_uart0_uc(0xfd); -// PrintCam_L0_uart0_uc(0xfc); - #endif -/* */ -} - - -#if 0 - -void GC032A_port_init(void) -{ - ///00 准双向口 灌电流20mA 拉电流270-150uS - ///01 推挽输出 20mA 加限流 - ///10 高阻 - ///11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 - - //p3.6 --HSYNC -// BITN_0(P3M1,BITN6);BITN_0(P3M0,BITN6); - ///P3.7 -- VSYNC -// BITN_0(P3M1,BITN7);BITN_0(P3M0,BITN7); - L0_GC032A_standby(); - D_cam_AVDD_on(); - -} - - - - - - - -//// AX CMD R2 R3 R4 -/// Ae 01 01 03 04 -void L3_GC032A_fun(U8 *pPara) -{ - *pPara = 0; -} - /******** -void L3_GC032A_fun(U8 *pPara) -{ - U8 i,val[2]; - // unsigned short j; - TS_P_debug *p = pPara; - switch(p->cmd) - { - - case 3: //Ae 03 03 04 00 - //xx 03 R2 R3 xx - - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); - PrintCam_L0_uart0_uc('l'); - Lc_delay_ms(12); - s_task_GC032A.vline_get = p->R2 << 8; - s_task_GC032A.vline_get |= p->R3; - L0_uart0_uchex(p->R2); - Lc_delay_ms(12); - L0_uart0_uchex(p->R3); - Lc_delay_ms(1200); - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); - - break; - - default: - break; - }; - - -} -********/ -///#else - -//// fe 01 reg data 0cx -/// Ac 01 02 03 ocr ---bsp_debug.c -/// U8 i,val[2]; -// unsigned short j; - TS_P_debug *p = pPara; - switch(p->cmd) - { - - case 0x01: p.cmd p.R2 p.R3 p.ocr -///Ac 00 03 01 00/// ACC_X[13:6] - -void L3_GC032A_fun(U8 *pPara) -{ - U8 i,val[2]; -// unsigned short j; - TS_P_debug *p = pPara; - switch(p->cmd) - { - - case 0x01: - ///AE 01 FE 33 44 // L0_GC032A_read(0xFE,&i,1); 读取当前页面 - ///AE 01 F0 33 44 // L0_GC032A_read(0xF0,&i,1); 读取id i= 0x23 - L0_GC032A_read(p->R2,&i,1); - PrintCam_L0_uart0_uc(i); - break; - //修改摄像头配置参数 - case 0x02: - /// fe 02 r2 r3 xx 设置寄存器(r2) = r3 - /// sysreg FE 02 FE 01 44 //设置当前页面01 - L0_GC032A_write(p->R2,p->R3); - PrintCam_L0_uart0_uc(p->R2); - PrintCam_L0_uart0_uc(p->R3); - break; - //启动摄像头进行拍照; - case 0x03:/// sysreg FE 03 03 04 05 //设置是否发送一line数据(数据分为一帧=640Line = 640line*480pclk ) - ///AE 03 01 33 44 //s_task_GC032A.line_onf = 01 - ///AE 03 00 33 44 //s_task_GC032A.line_onf = 00 - s_task_GC032A.line_onf = p->R2; - PrintCam_L0_uart0_uc(0x30|s_task_GC032A.line_onf); - break; - case 0x05: - ///AE 05 01 33 44 //进入 standby - ///AE 05 00 33 44 //退出 standby - L1_GC032A_sleep(p->R2); - PrintCam_L0_uart0_uc(0x30|s_task_GC032A.line_onf); - break; - case 6:///AE 06 22 33 44 - D_cam_led_off(); - break; - case 7:///AE 07 22 33 44 - D_cam_led_on(); - - break; - /******************* - case 0x00: - L0_GC032A_read(p->R2,val,p->R3); - PrintCam_L0_uart0_uc(p->cmd); - PrintCam_L0_uart0_uc(p->R2); - PrintCam_L0_uart0_uc(p->R3); - PrintCam_L0_uart0_uc('G'); - for(i = 0;i < p->R3;i++) - { - PrintCam_L0_uart0_uc(val[i]); - } - break; - //读取摄像头配置参数 - case 0x35: - L0_GC032A_standby();// led 17.1-16.9ma standby 6.2ma - PrintCam_L0_uart0_uc(0x31); - break; - case 0x36: - /// 退出standby: - L0_GC032A_work(); - PrintCam_L0_uart0_uc(0x30); - break; - - - ****************************/ - - default: - break; - }; -} - -#endif - - - -#if 0 -254 253 - -FE FD 02 7F ///639 -1A 1B 1B 1B 1B 1B 1A 1C 1B 1B 1B 1A 1A 19 19 1A 19 1A 19 1A 19 1A 19 19 18 19 19 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 17 16 17 16 18 18 18 18 18 18 18 18 18 18 18 18 17 17 17 17 18 18 17 17 17 17 17 16 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 19 19 19 19 19 19 18 18 19 19 19 18 18 18 1A 19 19 19 19 19 1A 1A 1A 1A 1A 1A 19 19 18 19 19 19 1A 1A 1A 1B 1B 1B 1C 1C 1C 1C 1C 1C 1C 1D 1D 1D 1C 1C 1C 1C 1D 1E 1C 1C 1C 1D 1C 1C 1C 1C 1C 1C 1C 1D 1D 1D 1D 1C 1B 1A 1B 1A 1B 1D 1D 1D 1D 1D 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1B 1B 1B 1B 1B 1B 1C 1C 1C 1C 1B 1B 1C 1C 1C 1E 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1B 1C 1B 1C 1C 1D 1D 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1D 1D 1D 1C 1C 1C 1C 1C 1D 1D 1E 1D 1E 1F 1F 1E 1E 1E 1E 1E 1E 1E 1E 1D 1D 1C 1C 1C 1C 1C 1C 1C 1C 1C 1D 1D 1D 1D 1C 1D 1D 1D 1D 1D 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1D 1C 1C 1C 1C 1C 1C 1C 1B 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1B 1C 1C 1C 1C 1C 1C 1D 1C 1C 1C 1C 1D 1F 1F 1D 1C 1C 1B 1C 1C 1C 1C 1C 1C 1B 1B 1B 1B 1B 1B 1B 1C 1C 1C 1C 1C 1D 1C 1C 1C 1D 1D 1D 1D 1E 1D 1C 1C 1C 1C 1C 1C 1C 1C 1D 1D 1E 1E 1E 1D 1D 1D 1D 1C 1D 1C 1C 1C 1C 1D 1D 1D 1D 1C 1C 1C 1C 1C 1C 1B 1B 1C 1C 1C 1C 1B 1B 1B 1B 1D 1B 1C 1B 1B 1B 1C 1D 1C 1B 19 1A 19 1B 1C 1A 1A 1A 1A 1A 1A 1B 1B 1B 1A 1B 19 1B 1A 1A 1A 1A 1A 19 18 19 19 1A 1A 1A 1A 1A 19 19 18 18 18 18 18 1A 18 18 18 18 18 18 18 18 19 1A 19 19 19 19 19 19 19 1A 1A 1A 1A 19 19 18 18 18 18 18 18 19 18 18 18 19 18 18 18 18 18 1A 18 18 18 18 18 18 18 18 17 17 17 18 18 18 18 17 17 17 17 17 16 17 17 18 18 19 19 19 19 19 19 18 18 18 18 18 18 17 17 18 18 17 17 17 17 17 17 19 17 17 17 17 17 17 17 17 17 17 17 17 18 17 17 17 17 17 17 17 17 16 16 17 17 17 17 17 16 16 17 17 17 17 16 16 16 16 16 16 16 17 16 16 16 16 16 16 16 16 16 16 18 19 16 16 16 16 15 16 17 17 16 15 15 16 16 16 15 14 14 15 17 15 15 15 15 16 16 16 16 16 15 16 16 16 15 15 15 15 15 -FD FC -253 252 - -254 253 /639./ 253 252 - - -#endif - - - - - -#if 0/// memo -//memo20190217 : 间隔1.15s - /********* - [15:37:04.337]收←◆v 4.337 - [15:37:05.487]收←◆v 5.487 1.15 - [15:37:06.637]收←◆v 6.637 1.15 - [15:37:07.787]收←◆k 7.787 1.15 - [15:37:08.947]收←◆v 8.947 1.16 - [15:37:10.097]收←◆v 10.097 1.15 - [15:37:11.247]收←◆v 11.247 1.15 - [15:37:12.397]收←◆v 12.397 1.15 - [15:37:13.547]收←◆k 13.547 1.15 - 48 31 61 77 77 77 77 2E 56 77 77 77 33 76 01 D3 56 2E 77 77 77 00 - - ***/ - -void GC032A_port_init(void) -{ - ///00 准双向口 灌电流20mA 拉电流270-150uS - ///01 推挽输出 20mA 加限流 - ///10 高阻 - ///11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 - //p3.6 --HSYNC -// BITN_0(P3M1,BITN6);BITN_0(P3M0,BITN6); - ///P3.7 -- VSYNC -// BITN_0(P3M1,BITN7);BITN_0(P3M0,BITN7); -// L0_GC032A_standby(); -// D_cam_AVDD_on(); -} - -void L2_line_send(void) -{ -// /// vU16 usi; - PrintCam_D_send_us(0x1234); - PrintCam_D_send_us(0x5678); - PrintCam_D_send_us(0xabcd); -#if 0 - - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); -// PrintCam_L0_uart0_uc(0xfe); -// PrintCam_L0_uart0_uc(0xfd); - PrintCam_D_send_us(DR_pclk_n); - PrintCam_D_send_us(0x1234); - PrintCam_D_send_us(0x5678); - PrintCam_D_send_us(0xabcd); - - PrintCam_L0_uart0_uc(0x0d); - PrintCam_L0_uart0_uc(0x0a); - - PrintCam_L0_uart0_sendArray(&(s_task_GC032A.buf[0]),2); - - PrintCam_L0_uart0_uc(0x09); -/// PrintCam_L0_uart0_sendArray(&s_task_GC032A.buf[D_pclk_per_hs_570-10],9); - ///Lc_hex2ascii(&(s_task_GC032A.buf[0]),10,ts_uart_send_shop.buf); - Lc_hex2ascii(&s_task_GC032A.buf[D_pclk_per_hs_570-10],2,ts_uart_send_shop.buf2); - L0_uart0_sendArray(ts_uart_send_shop.buf2,2*3); -///#ifdef D_debug_add_send - - PrintCam_L0_uart0_uc('P'); - - ///L0_uart0_sendArraylong(s_task_GC032A.buf,D_pclk_per_hs_570-10,D_pclk_per_hs_570); - // 'fe','fd','fd','fc' -// PrintCam_L0_uart0_uc(0xfd); -// PrintCam_L0_uart0_uc(0xfc); -// PrintCam_L0_uart0_uc(0x0d); -// PrintCam_L0_uart0_uc(0x0a); -///#else - - [18:41:16.591]ê?????02 FE FD 02 42 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 12 12 12 13 13 14 15 16 16 17 18 18 17 17 16 16 17 19 1C 1F 25 28 2A 2C 2D 2E 2F 30 31 31 32 32 32 32 31 31 32 32 32 32 33 33 33 33 33 33 33 33 33 33 33 33 33 32 32 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 34 33 34 34 34 34 34 34 34 34 34 34 34 35 35 34 35 35 35 35 35 35 36 35 35 36 36 11 11 11 FD FC - - - - PrintCam_L0_uart0_uc(0xfe); - PrintCam_L0_uart0_uc(0xfd); - PrintCam_D_send_us(DR_pclk_n); - L0_uart0_sendArraylong(s_task_GC032A.buf,0,199); - L0_uart0_sendArraylong(s_task_GC032A.buf,200,399); - if(D_pclk_per_hs < 600) - { - L0_uart0_sendArraylong(s_task_GC032A.buf,400,599); - }else - { - L0_uart0_sendArraylong(s_task_GC032A.buf,400,599); - L0_uart0_sendArraylong(s_task_GC032A.buf,600,(D_pclk_per_hs-1)); - } -// PrintCam_D_send_us(ts_task_ALGO.usSum_temp); -//// PrintCam_D_send_us(s_task_GC032A.down_point); -// PrintCam_D_send_us(s_task_GC032A.down_point - s_task_GC032A.up_point); - // DR_pdata_n =0; -// PrintCam_D_send_us(0x1234); - // 'fe','fd','fd','fc' - PrintCam_L0_uart0_uc(0xfd); - PrintCam_L0_uart0_uc(0xfc); - #endif -/* */ -} - -#endif - - diff --git a/source/bsp/backu/bsp_cam.h b/source/bsp/backu/bsp_cam.h deleted file mode 100644 index bc1f645..0000000 --- a/source/bsp/backu/bsp_cam.h +++ /dev/null @@ -1,189 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_gc6133.c.h -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 - -////////////////////////////////////////////////////////////////////////////// - -#ifndef _bsp_cam_H -#define _bsp_cam_H - -#include "../bsp/bsp_config.h" - -#include "../tpc/tpc_uart.h" - -#include "../msp/uart0.h" - -#include "bsp_gc032a.h" - -//>>>>>>>>>>>>>>>>>>>>>0gc63xxtask - -//#define D_i2c_addr_gc61xx 0x80 //page8/30 @pdf -#define D_i2c_addr_gc032A 0x42 //page15/31 @pdf -///// 400KHz Tlow > 1.3us -#define L0_GC032A_write(R,D) L2_I2C_WriteCmd(D_i2c_addr_gc032A,(R),(D)) -#define L0_GC032A_read(R,D,N) L2_I2C_ReadReg(D_i2c_addr_gc032A,(R),(D),(N)) -#define L0_GC032A_reg(R,D) L2_tws_ReadReg(D_i2c_addr_gc032A,(R),(D)) - - /// p55 pwdn - /// p54 inclk - /// p3.7 vsync - /// p3.6 hsync -#if 0 -#define L0_GC032A_work() D_P55_OFF(); -#define L0_GC032A_standby() - -#else -#define L0_GC032A_work() D_P55_OFF();D_stdIO_P1_ALL();\ - D_stdIO_P5(BITN4);\ - D_stdIO_P5(BITN5);\ - D_stdIO_P3(BITN7);\ - D_stdIO_P3(BITN6); -#define L0_GC032A_standby() D_HighR_P1_ALL();\ - D_HighI_P5(BITN4);\ - D_HighI_P5(BITN5);\ - D_HighI_P3(BITN7);\ - D_HighI_P3(BITN6);D_P55_ON(); -///pwdn 100uAD_P55_OFF();// - - -#endif - - - -#define GC6123_SERIAL_write_cmos_sensor L0_GC032A_write - -///#define D_pclk_per_hs 628 -///#define D_pclk_per_hs 688 -#define D_pclk_per_hs 639 ///027F - -#define D_pclk_per_hs_570 570 - -//#define D_pclk_per_hs 580 - -#define D_pclk_per_hs_2 D_pclk_per_hs -///#define D_pclk_per_hs_2 (110) - -//#define D_pclk_per_hs 6 - -struct _s_task_GC032A_ -{ - TS_task task; -/// vU32 t_stamp; - unsigned short lines; ///当前行采样结束 - unsigned short frames; ///当前行采样结束 - - unsigned char next_line:1; ///下一行采样开始 - unsigned char cal_ok:1; ///当前行采样结束// - unsigned char lamp:1; ///当前灯的标志 - unsigned char line_get:1; ///当前需要的行采样结束 可以计算了 - unsigned char line_ok:1; /// 采样的开关 - unsigned char vs_ok:1; /// 开始一帧的采样 代表收到了vs信号 - unsigned char line_onf:2; /// D_line_onf_get=0发送需要发送的一个line\\ D_line_onf_all=1 发送连续line - - -// volatile unsigned short usHs_count; -// volatile unsigned short usPclk; - unsigned char buf2_ok; - -/// volatile unsigned short usN; -////// unsigned short usMax; - unsigned char buf[D_pclk_per_hs +2]; -}; -#define D_line_onf_all 1 -#define D_line_onf_get 0 - - -extern struct _s_task_GC032A_ s_task_GC032A; - - -void L2_task_GC032A_init(void); - -#define D_task_GC032A_init_standby 0x36 - -#define D_task_GC032A_init_DVDD 0x30 -#define D_task_GC032A_init_AVDD 0x31 -#define D_task_GC032A_init_pwdn 0x32 -#define D_task_GC032A_init_pwdn_wait 0x33 - - -#define D_task_FLOW_PreSend 0xa3 -#define D_task_FLOW_PreSend2 0xa4 - - - - -#define D_task_FLOW_send 0x90 -#define D_task_FLOW_send2 0x91 -#define D_task_FLOW_send3 0x92 -#define D_task_FLOW_send4 0x93 -#define D_task_FLOW_send5 0x94 - - - -#define D_task_GC032A_write_reg 0x40 -#define D_task_GC032A_wakup_sample 0x41 -#define D_task_GC032A_start_time2 0x43 - -#define D_task_GC032A_wakup_sample2 0x44 - - -#define D_task_GC032A_wait 0x51 -#define D_task_GC032A_one_frame 0x52 -#define D_task_GC032A_write_reg2 0x53 -#define D_task_GC032A_div 0x54 -#define D_task_GC032A_dat 0x55 - - -#define D_task_GC032A_led 0x56 - - - -#define D_task_GC032A_send_line 0x61 -#define D_task_GC032A_send2 0x62 -#define D_task_GC032A_send3 0x63 -#define D_task_GC032A_send4 0x64 - -////#define D_task_GC032A_over 0x63 -#define D_task_GC032A_cal 0x65 -///#define D_task_GC032A_send_over 0x64 - -#define D_task_GC032A_sleep 0x67 -#define D_task_GC032A_06 0x68 -#define D_task_GC032A_07 0x69 -#define D_task_GC032A_08 0x6a -#define D_task_GC032A_09 0x6b - -#define D_task_GC032A_sample 0x68 - -#define D_task_GC032A_end 0x69 - -#define D_task_GC032A_next_line 0x70 - - -extern void L2_task_GC032A_handle(struct _s_task_GC032A_ *s); -extern void L2_task_GC032A_handleTest(struct _s_task_GC032A_ *s); - - -//////////////////////////////////////////////////////////////////// - - -extern void GC032A_port_init(void); -extern void L3_GC032A_fun(U8 *pPara); - -extern void L1_GC032A_sleep(unsigned char onf); - -#define D_cam_led_on(); L1_cw63_reg_set(D_power_VCC2,D_CW63XX_ON|D_CW63XX_3V2);//P34 = 1;/////s_task_GC032A.lamp = D_ON; -#define D_cam_led_off(); L1_cw63_reg_set(D_power_VCC2,D_CW63XX_OFF|D_CW63XX_3V2);///P34 = 0;/////s_task_GC032A.lamp = D_OFF; - - - - -#endif // #ifndef _bsp_gc6133_H - diff --git a/source/bsp/backu/bsp_cam_isr.c b/source/bsp/backu/bsp_cam_isr.c deleted file mode 100644 index f3a7f8f..0000000 --- a/source/bsp/backu/bsp_cam_isr.c +++ /dev/null @@ -1,218 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_gc6133.c.c -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 -///------------------------------------------------------------------------- -/// @version 1.2 -/// @author CC -/// @date 20180703 -/// @note cc_AS_stc02 -////////////////////////////////////////////////////////////////////////////// - -//#include "Bsp_debug.h" -#include "bsp_func.h" -#include "bsp_cam_isr.h" -#include "bsp_cam.h" -#include "../msp/uart0.h" -#include "cw63xx.h" -#include "../clib/Clib.h" -#include "../clib/bit.h" -#include "../msp/time.h" -#define D_pclk_div_hs 1 ///D_pclk_per_hs*D_pclk_div_hs < 680 - -///vs p3.7 int3 -///hs p3.6 int2 -///pclk p3.2 int0 -/// row line确可以表示一条线 一行的意思.而column则形象的表示一个纵向的“列 - -#define D_line_get 10 -#define D_row_get2 4 -#ifdef doc_98989 -vs /```24.8ms````\_______________________________..1.16s..._____________________________________________/```````````\__________ -hs /\————————/\_2.14MS_/\____/\____/\____ ...... __/\____/\____/\__480个__/\____/\____/\____/\————————/\ - -hs /``\________________________hs______________________/``\ -pclk |||||||||||||||||||||||||||||||||||||||||||||||640 - - -Line0 L1 L2 L1 L1 L1 L1 L1 L1 L480 ----------------------------------------------------------------------- - 1 1 1 1 1 1 1 1 1 --- --- 1 - 2 2 2 2 2 2 2 2 2 --- --- 2 - 3 3 3 3 3 3 3 3 3 --- --- 3 - 4 4 4 4 4 4 4 4 4 --- --- 4 - 5 5 5 5 5 5 5 5 5 --- --- 5 - 6 6 6 6 6 6 6 6 6 --- --- 6 - 7 7 7 7 7 7 7 7 7 --- --- 7 - 8 8 8 8 8 8 8 8 8 --- --- 8 - 9 9 9 9 9 9 9 9 9 --- --- 9 - 10 10 10 10 10 10 10 10 10 --- --- 10 - 11 11 11 11 11 11 11 11 11 --- --- 11 - 12 12 12 12 12 12 12 12 12 --- --- 12 - 13 13 13 13 13 13 13 13 13 --- --- 13 - 14 14 14 14 14 14 14 14 14 --- --- 14 - . . . . . . . . . --- --- . - . . . . . . . . . --- --- . - . . . . . . . . . --- --- . - . . . . . . . . . --- --- . - 640 640 640 640 640 640 640 640 640 --- --- 640 - -#endif ///doc_98989 - - -void L0_cam_isr_init(void) -{ - IT0 = 1;///int0 下降沿触发 = 0 上下沿均可触发 -/// IT0 = 0;////int0 下降沿触发 = 0 上下沿均可触发 -/// L0_INT0_OPEN(); - D_HSYNCS_close(); - D_VSYNCS_open(); - D_PCLK_close(); - -} - -#if(MODE_CAM_LINE == MODE_CAM) - - -#if 0 -////////// -/////一帧数据的开始 -void L0_VSYNCS_Isr (void) interrupt D_ISR_int3////下降沿 -{////找到一帧数据的开头:第一行 - L0_INT3_CLEAR(); - ///s_task_GC032A.usHs_count = 0; - DR_line_n = 0; -/// s_task_GC032A.next_line = D_ready;///启动第一行 这样确保帧头是第一行,对齐的/// -/// s_task_GC032A.one_line_ok = D_clear; - s_task_GC032A.line_get = D_clear; - s_task_GC032A.vs_ok = D_ready; - //s_task_GC032A.frames ++; - //if(s_task_GC032A.frames > 10) - {/// 时间溢出 - ///s_task_GC032A.frames = 0; - } - D_ledb_OFF(); -/// D_leda_ON(); - D_HSYNCS_open(); -} - -/////一行line row数据的开始 -void L0_HSYNCS_Isr(void) interrupt D_ISR_int2/// using 1 /下降沿 -{///hs 下沿有效 - L0_INT2_CLEAR(); - //// hs信号的计数在vs有效的时候清零,这样usHs_count=D_row_get就代表 - //// 当前一帧画面里面的第D_row_get个hs,也就是一个画面中的第几行数据 - ///if(D_ready == s_task_GC032A.next_line) - {///D_P33_REV(); - //D_leda_OFF(); - /// s_task_GC032A.next_line = D_clear;///因为接收一行数据的时间远远小于发送的时间 - ///因此添加这个为了提高可靠性 - ///发送完了后由“gc032a任务”启动 - s_task_GC032A.lines = DR_line_n;////保存当前的行号到缓存中,因为行号变化的速度超过 - ////发送的速度,当在"gc032A任务"中使用的时候DR_line_n 已经变化了 - ///0 24 58 94 129 165 200 236 271 307 342 378 - D_PCLK_open(); - //D_P35_REV() ; - DR_pclk_n = 0; - if(DR_line_n >= D_line_get) - { - s_task_GC032A.line_get = D_ready; - D_HSYNCS_close();D_PCLK_close(); - } - } - DR_line_n ++;///当前行数增加 -} - -////s_task_GC032A.buf 存放的是一行的数据 -//// pclk int0 每个点的采样 -void L0_PCLK_Isr(void) interrupt D_ISR_int0 /// using 10/// -{///PCLK -// D_P34_REV(); - DR_Dat = P1; - s_task_GC032A.buf[DR_pclk_n] = DR_Dat; // s_task_GC032A.buf[DR_pclk_n] = 0xaa;//P1&0xf0; //s_task_GC032A.buf[s_task_GC032A.usN] = s_task_GC032A.usN; - DR_pclk_n++;// D_P34_REV(); - if(DR_pclk_n > D_pclk_per_hs)////一行的有效数据接收完成 采样了 D_pclk_per_hs个固定数据 - { - D_PCLK_close(); - - //D_ledb_REV() ; - DR_pclk_n = D_pclk_per_hs; ///fixme - DR_pclk_n = 0; -/// s_task_GC032A.one_line_ok = D_ready;////给“gc032a任务”传递消息 可以开始计算或者发送了 - D_ledb_ON(); - } -} -#endif - -#elif(MODE_CAM_FRAME == MODE_CAM) - -#elif(MODE_CAM_TEST == MODE_CAM) -/////连续发送 -void L0_VSYNCS_Isr (void) interrupt D_ISR_int3////下降沿 -{////找到一帧数据的开头:第一行 - ///s_task_GC032A.usHs_count = 0; - DR_line_n = 0; - s_task_GC032A.next_line = 1;///启动第一行 这样确保帧头是第一行,对齐的/// - s_task_GC032A.vs_ok = D_ready; -} - -/////一行line row数据的开始 -void L0_HSYNCS_Isr(void) interrupt D_ISR_int2/// using 1 /下降沿 -{///hs 下沿有效 - //// hs信号的计数在vs有效的时候清零,这样usHs_count=D_row_get就代表 - //// 当前一帧画面里面的第D_row_get个hs,也就是一个画面中的第几行数据 - if(s_task_GC032A.next_line) - {///D_P33_REV(); - s_task_GC032A.next_line = 0;///因为接收一行数据的时间远远小于发送的时间 - ///因此添加这个为了提高可靠性 - ///发送完了后由“gc032a任务”启动 - s_task_GC032A.lines = DR_line_n;////保存当前的行号到缓存中,因为行号变化的速度超过 - ////发送的速度,当在"gc032A任务"中使用的时候DR_line_n 已经变化了 - ///0 24 58 94 129 165 200 236 271 307 342 378 - - /***** - if(D_line_get == DR_line_n) - { - s_task_GC032A.line_get = 1; - } - ******/ - D_PCLK_open();///启动记录下一行数据 - DR_pclk_n = 0; - } - DR_line_n ++;///当前行数增加 -} - -////s_task_GC032A.buf 存放的是一行的数据 -//// pclk int0 每个点的采样 -void L0_PCLK_Isr(void) interrupt D_ISR_int0 //// using 10/// -{///PCLK -// D_P34_REV(); -//// DR_Dat = P1; s_task_GC032A.buf[DR_pclk_n] = DR_Dat; - s_task_GC032A.buf[DR_pclk_n] = P1; - - - ////s_task_GC032A.buf[DR_pclk_n] = 0xcc; - ///s_task_GC032A.buf[DR_pclk_n] = DR_pclk_n; - DR_pclk_n++;// D_P34_REV(); - if(DR_pclk_n > D_pclk_per_hs) ////一行的有效数据接收完成 采样了 D_pclk_per_hs个固定数据 - { - D_PCLK_close(); - DR_pclk_n = D_pclk_per_hs; ///fixme - - s_task_GC032A.line_ok = 1; ////给“gc032a任务”传递消息 可以开始计算或者发送了 - } -} - - -////收到 next_line 记录当前第几行lines,启动 pclk,采集数据到buf中,然后line_ok -///// send buf, set next_line after send buf over - -#endif - - diff --git a/source/bsp/backu/bsp_cam_isr.h b/source/bsp/backu/bsp_cam_isr.h deleted file mode 100644 index bac07b9..0000000 --- a/source/bsp/backu/bsp_cam_isr.h +++ /dev/null @@ -1,62 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_gc6133.c.h -/// @brief bsp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180331 -/// @note cc_AS_stc02 - -////////////////////////////////////////////////////////////////////////////// - -#ifndef _bsp_cam_isr_H -#define _bsp_cam_isr_H - -#include "../bsp/bsp_config.h" - -#include "../tpc/tpc_uart.h" - -#include "../msp/uart0.h" - -#include "bsp_gc032a.h" - -#define D_VSYNCS_open(); L0_INT3_OPEN(); -#define D_VSYNCS_close(); L0_INT3_CLOSE(); - -#define D_HSYNCS_open(); L0_INT2_OPEN(); -#define D_HSYNCS_close(); L0_INT2_CLOSE(); - -#define D_PCLK_open(); L0_INT0_OPEN(); -#define D_PCLK_close(); L0_INT0_CLOSE(); - - -#define DR_pclk_n gRccUs05 - -#define DR_line_n gRccUs01 -#define DR_line_n_H gRccUs01_H -#define DR_line_n_L gRccUs01_L - - -///// #define DR_Hs_count gRccUs02//s_task_GC032A.usPclk -///#define DR_Dat CCAP1L -#define DR_Dat SPDAT - -//>>>>>>>>>>>>>>>>>>>>>0gc63xxtask - -//#define D_row_max 640 - -//////////////////////////////////////////////////////////////////// - - -extern void L0_cam_isr_init(void) ; - - - - - - - -#endif // #ifndef _bsp_cam_isr_H - diff --git a/source/bsp/backu/bsp_func.c b/source/bsp/backu/bsp_func.c deleted file mode 100644 index bcc170f..0000000 --- a/source/bsp/backu/bsp_func.c +++ /dev/null @@ -1,53 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_func.c -/// @brief bsp @ fuctiong ; io复用选择等,和cpu型号息息相关 -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20180308 -/// @note cc_AS_stc02 - - - -////////////////////////////////////////////////////////////////////////////// - -#include "bsp_func.h" -#include "../msp/uart0.h" -//#include "../tpc/tpc_modbus.h" - -///struct _s_sysclk s_sysclk; - - -////MCLK0 配置 不需要的时候关闭以节约电 -void L0_MCLKO_init(U8 onf) -{ - BITN_1(P_SW2,EAXFR); - CKSEL &= B0000_0011; - if (D_ON == onf) - { - ///----------------------------------------------------- - // p107@stc8.pdf - ///step 1 :设置system out clock - //BITS_CLR(CKSEL,BITC_4,BIT4); /// 对REG的 从BITx开始 清除 N位 - ///多位配置,一定要配对使用,先清除再设置。 - BITS_SET(CKSEL,D_CLKODIV_DIV8);/// sytem out clock 300k - ///step 2 :设置IO - BITN_0(CKSEL,MCLKO_S);/// P5.4 SELECTED - BITN_0(P5M1,BITN4);BITN_1(P5M0,BITN4);/// 01 推挽 - } - else - { - BITS_CLR(CKSEL,BITC_4,BIT4); - BITN_1(P5M1,BITN4);BITN_0(P5M0,BITN4);/// 00 准双向口01 推挽输出10 高阻11 开漏 - //// 32k 下L1_task_Tdelay(D_Tdelay_ms); 变成了大约8s - ///fixme - /// BITN_1(P5M1,BITN4);BITN_0(P5M0,BITN4);/// 00 准双向口01 推挽输出10 高阻11 开漏 - ///? 使用10 功耗增加11.130 使用01 功耗为10.65 - //P54 = 1; 推挽 居然比高阻省电 另外推挽下面 =1比=0省电 10uA - } - BITN_0(P_SW2,EAXFR); -} - - diff --git a/source/bsp/backu/bsp_func.h b/source/bsp/backu/bsp_func.h deleted file mode 100644 index 194f7f0..0000000 --- a/source/bsp/backu/bsp_func.h +++ /dev/null @@ -1,52 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file bsp_func.c -/// @brief bsp_func -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - -#ifndef _bsp_func_H -#define _bsp_func_H - -#include "../bsp/bsp_config.h" -#include "../clib/bit.h" -struct _s_sysclk -{ - U32 m; - U32 clk; - U32 out; -}; - -extern struct _s_sysclk s_sysclk; - -#define P3130 0 -//#define P1617 0 -#define P3736 1 - -extern void L0_MCLKO_init(U8 onf); - - -#define D_CLKODIV_NONE 0 - -#define D_CLKODIV_DIV1 B0001_0000 -#define D_CLKODIV_DIV2 B0010_0000 -#define D_CLKODIV_DIV4 B0100_0000 -#define D_CLKODIV_DIV8 B0110_0000 -#define D_CLKODIV_DIV16 B1000_0000 -#define D_CLKODIV_DIV32 B1010_0000 -#define D_CLKODIV_DIV64 B1100_0000 -#define D_CLKODIV_DIV128 B1110_0000 - -#define D_CLKODIV_MCLKO_S BITN3 - -#define D_CLKODIV_MCKSEL_IN24M B0000_0000 -#define D_CLKODIV_MCKSEL_EXTERN B0000_0001 -#define D_CLKODIV_MCKSEL_IN32K B0000_0011 - -#endif // #ifndef _bsp_func_H - diff --git a/source/bsp/backu/bsp_gc032a.c b/source/bsp/backu/bsp_gc032a.c deleted file mode 100644 index 6650b50..0000000 --- a/source/bsp/backu/bsp_gc032a.c +++ /dev/null @@ -1,773 +0,0 @@ -#include "bsp_gc032a.h" -#if 0 -const U8 GC6133_init_reg_sys[][2]= { - - /*System*/ - {0xf3,0xff}, - {0xf5,0x06}, - {0xf7,0x01}, - {0xf9,0xce}, - {0xfa,0x00}, -//1002 {0xf8,0x03},//////分频 {0xf8,0x03}, -{0xf8,0x0f},//////分频 {0xf8,0x03}, - // {0xfa,D_0xfa}, // cc add - /// {0xfd,D_0xfa}, // cc add - /// {0xfa,D_0xfa}, // cc add - /// {0xfd,D_0xfa}, // cc add -///20181002启动时使用较高频率 当启动后恢复低频率 - {0xfc,0x02}, - {0x00,0x00} -/// ///20181003 -// -}; - - -const U8 GC6133_init_reg_tbl[][2]= { - {0xfe,0x02},//page 2 - {0x81,0x03}, - - {0xfe,0x00}, - {0x77,0x64}, - {0x78,0x40}, - {0x79,0x60}, - /*ANALOG & CISCTL*/ - {0xfe,0x00},//page 0 - {0x03,0x01}, - {0x04,0xce}, - {0x05,0x01}, - {0x06,0xad}, - {0x07,0x00}, - {0x08,0x10}, - {0x0a,0x00}, - {0x0c,0x00}, - {0x0d,0x01}, - {0x0e,0xe8}, - {0x0f,0x02}, - {0x10,0x88}, - {0x17,0x54}, - {0x19,0x08}, - {0x1a,0x0a}, - {0x1f,0x40}, - {0x20,0x30}, - {0x2e,0x80}, - {0x2f,0x2b}, - {0x30,0x1a}, - {0xfe,0x02}, - {0x03,0x02}, - {0x05,0xd7}, - {0x06,0x60}, - {0x08,0x80}, - {0x12,0x89}, - - /* BLK*/ - {0xfe,0x00},//page 1 - {0x18,0x02}, - {0xfe,0x02},//page 2 - {0x40,0x22}, - {0x45,0x00}, - {0x46,0x00}, - {0x49,0x20}, - {0x4b,0x3c}, - {0x50,0x20}, - {0x42,0x10}, - - /*ISP*/ - {0xfe,0x01},//page 1 - {0x0a,0xc5}, - {0x45,0x00}, - {0xfe,0x00},//page 0 - {0x40,0xff}, - {0x41,0x25}, - {0x42,0xcd},///cc201805 close AWB{0x42,0xcf}, -/// {0x44,0x83},///P0:0x44 Output_format [7] YUV420_row_switch 5’h03: Y Cr Y Cb - {0x44,B1001_0000},///P0:0x44 Output_format [7] YUV420_row_switch 5’h10: only Y - - {0x43,0x12},////{0x43,D_P00x43},// ///EABLE CrCb fixed en 02 -/** P0:0x43 special_effect 7 0x00 RW [7] NA - [6] subsample2 - [5] subsample4 - [4] GAMMA_en - [3:2] only_edge_map - [1] CrCb_ fixed_en - [0] inverse color*/ - {0xda,0x00}, - {0xdb,0x00}, - /////{0x46,0x22}, -////------------------------------------- -{0x46,B0010_1000},// hs high pclk polarity {0x46,0x22}, -/* P0:0x46 sync_mode 8 0x0f RW -[7] data delay half -[6] hsync delay half -[5] odd_even_col_switch -[4] odd_even_row_switch - -[3] opclk gated in HB -[2] opclk polarity -[1] hsync polarity -[0] vsync polarity*/ -// {0x4c,D_P00x4c},//lsc test image -// {0x4D,0xfc},//lsc test image - -// {0x4a,0x86},//////div_gate+clk_en 82 -/**P0:0x4a Clock_gating_e -n -8 0x82 RW [7] ISP quiet mode -[6] close AAA pclk -[5]vb change -[4]vb chang flop ---------------------- -[3]hb change -[2] DIV_gatedclk_en -[1] exception -[0] AEC_delay_mode*/ - -////------------------------------------- - {0x49,0x03}, - {0x52,0x02}, - {0x54,0x00}, - {0xfe,0x02}, - {0x22,0xf6}, - - /*Shading*/ - {0xfe,0x01},//page 1 - {0xc1,0x38}, - {0xc2,0x4c}, - {0xc3,0x00}, - {0xc4,0x32}, - {0xc5,0x24}, - {0xc6,0x16}, - {0xc7,0x08}, - {0xc8,0x08}, - {0xc9,0x00}, - {0xca,0x20}, - {0xdc,0x8a}, - {0xdd,0xa0}, - {0xde,0xa6}, - {0xdf,0x75}, - - /*AWB*//*20170110*/ - {0xfe, 0x01},//page 1 - {0x7c, 0x09}, - {0x65, 0x06}, - {0x7c, 0x08}, - {0x56, 0xf4}, - {0x66, 0x0f}, - {0x67, 0x84}, - {0x6b, 0x80}, - {0x6d, 0x12}, - {0x6e, 0xb0}, - {0xfe, 0x01}, - {0x90, 0x00}, - {0x91, 0x00}, - {0x92, 0xf4}, - {0x93, 0xd5}, - {0x95, 0x0f}, - {0x96, 0xf4}, - {0x97, 0x2d}, - {0x98, 0x0f}, - {0x9a, 0x2d}, - {0x9b, 0x0f}, - {0x9c, 0x59}, - {0x9d, 0x2d}, - {0x9f, 0x67}, - {0xa0, 0x59}, - {0xa1, 0x00}, - {0xa2, 0x00}, - {0x86, 0x00}, - {0x87, 0x00}, - {0x88, 0x00}, - {0x89, 0x00}, - {0xa4, 0x00}, - {0xa5, 0x00}, - {0xa6, 0xd4}, - {0xa7, 0x9f}, - {0xa9, 0xd4}, - {0xaa, 0x9f}, - {0xab, 0xac}, - {0xac, 0x9f}, - {0xae, 0xd4}, - {0xaf, 0xac}, - {0xb0, 0xd4}, - {0xb1, 0xa3}, - {0xb3, 0xd4}, - {0xb4, 0xac}, - {0xb5, 0x00}, - {0xb6, 0x00}, - {0x8b, 0x00}, - {0x8c, 0x00}, - {0x8d, 0x00}, - {0x8e, 0x00}, - {0x94, 0x50}, - {0x99, 0xa6}, - {0x9e, 0xaa}, - {0xa3, 0x0a}, - {0x8a, 0x00}, - {0xa8, 0x50}, - {0xad, 0x55}, - {0xb2, 0x55}, - {0xb7, 0x05}, - {0x8f, 0x00}, - {0xb8, 0xb3}, - {0xb9, 0xb6}, - - - /*CC*/ - {0xfe,0x01},//page 0 - {0xd0,0x40}, - {0xd1,0xf8}, - {0xd2,0x00}, - {0xd3,0xfa}, - {0xd4,0x45}, - {0xd5,0x02}, - - {0xd6,0x30}, - {0xd7,0xfa}, - {0xd8,0x08}, - {0xd9,0x08}, - {0xda,0x58}, - {0xdb,0x02}, - {0xfe,0x00}, - - /*Gamma*/ - {0xfe,0x00},//page 0 - {0xba,0x00}, - {0xbb,0x04}, - {0xbc,0x0a}, - {0xbd,0x0e}, - {0xbe,0x22}, - {0xbf,0x30}, - {0xc0,0x3d}, - {0xc1,0x4a}, - {0xc2,0x5d}, - {0xc3,0x6b}, - {0xc4,0x7a}, - {0xc5,0x85}, - {0xc6,0x90}, - {0xc7,0xa5}, - {0xc8,0xb5}, - {0xc9,0xc2}, - {0xca,0xcc}, - {0xcb,0xd5}, - {0xcc,0xde}, - {0xcd,0xea}, - {0xce,0xf5}, - {0xcf,0xff}, - - /*Auto Gamma*/ - {0xfe,0x00}, - {0x5a,0x08}, - {0x5b,0x0f}, - {0x5c,0x15}, - {0x5d,0x1c}, - {0x5e,0x28}, - {0x5f,0x36}, - {0x60,0x45}, - {0x61,0x51}, - {0x62,0x6a}, - {0x63,0x7d}, - {0x64,0x8d}, - {0x65,0x98}, - {0x66,0xa2}, - {0x67,0xb5}, - {0x68,0xc3}, - {0x69,0xcd}, - {0x6a,0xd4}, - {0x6b,0xdc}, - {0x6c,0xe3}, - {0x6d,0xf0}, - {0x6e,0xf9}, - {0x6f,0xff}, - - /*Gain*/ - {0xfe,0x00}, - {0x70,0x50}, - - /*AEC*/ - {0xfe,0x00},//page 0 - {0x4f,0x00},///cc201805 close ACE /// {0x4f,0x01}, - {0xfe,0x01},//page 1 - {0x0d,0x00},//08 add 20170110 - {0x12,0xa0}, - {0x13,0x3a}, - {0x44,0x04}, - {0x1f,0x30}, - {0x20,0x40}, - {0x26,0x9a}, - {0x3e,0x20}, - {0x3f,0x2d}, - {0x40,0x40}, - {0x41,0x5b}, - {0x42,0x82}, - {0x43,0xb7}, - {0x04,0x0a}, - {0x02,0x79}, - {0x03,0xc0}, - - /*measure window*/ - {0xfe,0x01},//page 1 - {0xcc,0x08}, - {0xcd,0x08}, - {0xce,0xa4}, - {0xcf,0xec}, - - /*DNDD*/ - {0xfe,0x00}, - {0x81,0xb8}, - {0x82,0x12}, - {0x83,0x0a}, - {0x84,0x01}, - {0x86,0x50}, - {0x87,0x18}, - {0x88,0x10}, - {0x89,0x70}, - {0x8a,0x20}, - {0x8b,0x10}, - {0x8c,0x08}, - {0x8d,0x0a}, - - /*Intpee*/ - {0xfe,0x00}, - {0x8f,0xaa}, - {0x90,0x9c}, - {0x91,0x52}, - {0x92,0x03}, - {0x93,0x03}, - {0x94,0x08}, - {0x95,0x44}, - {0x97,0x00}, - {0x98,0x00}, - - /*ASDE*/ - {0xfe,0x00}, - {0xa1,0x30}, - {0xa2,0x41}, - {0xa4,0x30}, - {0xa5,0x20}, - {0xaa,0x30}, - {0xac,0x32}, - - /*YCP*/ - {0xfe,0x00}, - {0xd1,0x3c}, - {0xd2,0x3c}, - {0xd3,0x38}, - {0xd6,0xf4}, - {0xd7,0x1d}, - {0xdd,0x73}, - {0xde,0x84}, - - /*Banding*/ - {0xfe,0x00}, - {0x05,0x01}, - {0x06,0xad}, - {0x07,0x00}, - {0x08,0x10}, - - {0xfe,0x01}, - {0x25,0x00}, - {0x26,0x9a}, - - {0x27,0x01}, - {0x28,0xce}, - {0x29,0x03}, - {0x2a,0x02}, - {0x2b,0x04}, - {0x2c,0x36}, - {0x2d,0x07}, - {0x2e,0xd2}, - {0x2f,0x0b}, - {0x30,0x6e}, - {0x31,0x0e}, - {0x32,0x70}, - {0x33,0x12}, - {0x34,0x0c}, - {0x3c,0x30}, - {0xfe,0x00}, - {0x00,0x00} - -}; -#else - -const U8 code GC6133_init_reg_tbl[][2]= { - - /*System*/ - {0xf3,0xff}, - {0xf5,0x06}, - {0xf7,0x01}, - {0xf9,0xce}, - {0xfa,0x00}, -//1002 {0xf8,0x03},//////分频 {0xf8,0x03}, -{0xf8,0x0f},//////分频 {0xf8,0x03}, - // {0xfa,D_0xfa}, // cc add - /// {0xfd,D_0xfa}, // cc add - /// {0xfa,D_0xfa}, // cc add - /// {0xfd,D_0xfa}, // cc add -///20181002启动时使用较高频率 当启动后恢复低频率 - {0xfc,0x02}, - - {0xfe,0x02},//page 2 - {0x81,0x03}, - - {0xfe,0x00}, - {0x77,0x64}, - {0x78,0x40}, - {0x79,0x60}, - /*ANALOG & CISCTL*/ - {0xfe,0x00},//page 0 - {0x03,0x01}, - {0x04,0xce}, - {0x05,0x01}, - {0x06,0xad}, - {0x07,0x00}, - {0x08,0x10}, - {0x0a,0x00}, - {0x0c,0x00}, - {0x0d,0x01}, - {0x0e,0xe8}, - {0x0f,0x02}, - {0x10,0x88}, - {0x17,0x54}, - {0x19,0x08}, - {0x1a,0x0a}, - {0x1f,0x40}, - {0x20,0x30}, - {0x2e,0x80}, - {0x2f,0x2b}, - {0x30,0x1a}, - {0xfe,0x02}, - {0x03,0x02}, - {0x05,0xd7}, - {0x06,0x60}, - {0x08,0x80}, - {0x12,0x89}, - - /* BLK*/ - {0xfe,0x00},//page 1 - {0x18,0x02}, - {0xfe,0x02},//page 2 - {0x40,0x22}, - {0x45,0x00}, - {0x46,0x00}, - {0x49,0x20}, - {0x4b,0x3c}, - {0x50,0x20}, - {0x42,0x10}, - - /*ISP*/ - {0xfe,0x01},//page 1 - {0x0a,0xc5}, - {0x45,0x00}, - {0xfe,0x00},//page 0 - {0x40,0xff}, - {0x41,0x25}, - {0x42,0xcd},///cc201805 close AWB{0x42,0xcf}, -/// {0x44,0x83},///P0:0x44 Output_format [7] YUV420_row_switch 5’h03: Y Cr Y Cb - {0x44,B1001_0000},///P0:0x44 Output_format [7] YUV420_row_switch 5’h10: only Y - - {0x43,0x12},////{0x43,D_P00x43},// ///EABLE CrCb fixed en 02 -/** P0:0x43 special_effect 7 0x00 RW [7] NA - [6] subsample2 - [5] subsample4 - [4] GAMMA_en - [3:2] only_edge_map - [1] CrCb_ fixed_en - [0] inverse color*/ - {0xda,0x00}, - {0xdb,0x00}, - /////{0x46,0x22}, -////------------------------------------- -{0x46,B0010_1000},// hs high pclk polarity {0x46,0x22}, -/* P0:0x46 sync_mode 8 0x0f RW -[7] data delay half -[6] hsync delay half -[5] odd_even_col_switch -[4] odd_even_row_switch - -[3] opclk gated in HB -[2] opclk polarity -[1] hsync polarity -[0] vsync polarity*/ -// {0x4c,D_P00x4c},//lsc test image -// {0x4D,0xfc},//lsc test image - -// {0x4a,0x86},//////div_gate+clk_en 82 -/**P0:0x4a Clock_gating_e -n -8 0x82 RW [7] ISP quiet mode -[6] close AAA pclk -[5]vb change -[4]vb chang flop ---------------------- -[3]hb change -[2] DIV_gatedclk_en -[1] exception -[0] AEC_delay_mode*/ - -////------------------------------------- - {0x49,0x03}, - {0x52,0x02}, - {0x54,0x00}, - {0xfe,0x02}, - {0x22,0xf6}, - - /*Shading*/ - {0xfe,0x01},//page 1 - {0xc1,0x38}, - {0xc2,0x4c}, - {0xc3,0x00}, - {0xc4,0x32}, - {0xc5,0x24}, - {0xc6,0x16}, - {0xc7,0x08}, - {0xc8,0x08}, - {0xc9,0x00}, - {0xca,0x20}, - {0xdc,0x8a}, - {0xdd,0xa0}, - {0xde,0xa6}, - {0xdf,0x75}, - - /*AWB*//*20170110*/ - {0xfe, 0x01},//page 1 - {0x7c, 0x09}, - {0x65, 0x06}, - {0x7c, 0x08}, - {0x56, 0xf4}, - {0x66, 0x0f}, - {0x67, 0x84}, - {0x6b, 0x80}, - {0x6d, 0x12}, - {0x6e, 0xb0}, - {0xfe, 0x01}, - {0x90, 0x00}, - {0x91, 0x00}, - {0x92, 0xf4}, - {0x93, 0xd5}, - {0x95, 0x0f}, - {0x96, 0xf4}, - {0x97, 0x2d}, - {0x98, 0x0f}, - {0x9a, 0x2d}, - {0x9b, 0x0f}, - {0x9c, 0x59}, - {0x9d, 0x2d}, - {0x9f, 0x67}, - {0xa0, 0x59}, - {0xa1, 0x00}, - {0xa2, 0x00}, - {0x86, 0x00}, - {0x87, 0x00}, - {0x88, 0x00}, - {0x89, 0x00}, - {0xa4, 0x00}, - {0xa5, 0x00}, - {0xa6, 0xd4}, - {0xa7, 0x9f}, - {0xa9, 0xd4}, - {0xaa, 0x9f}, - {0xab, 0xac}, - {0xac, 0x9f}, - {0xae, 0xd4}, - {0xaf, 0xac}, - {0xb0, 0xd4}, - {0xb1, 0xa3}, - {0xb3, 0xd4}, - {0xb4, 0xac}, - {0xb5, 0x00}, - {0xb6, 0x00}, - {0x8b, 0x00}, - {0x8c, 0x00}, - {0x8d, 0x00}, - {0x8e, 0x00}, - {0x94, 0x50}, - {0x99, 0xa6}, - {0x9e, 0xaa}, - {0xa3, 0x0a}, - {0x8a, 0x00}, - {0xa8, 0x50}, - {0xad, 0x55}, - {0xb2, 0x55}, - {0xb7, 0x05}, - {0x8f, 0x00}, - {0xb8, 0xb3}, - {0xb9, 0xb6}, - - - /*CC*/ - {0xfe,0x01},//page 0 - {0xd0,0x40}, - {0xd1,0xf8}, - {0xd2,0x00}, - {0xd3,0xfa}, - {0xd4,0x45}, - {0xd5,0x02}, - - {0xd6,0x30}, - {0xd7,0xfa}, - {0xd8,0x08}, - {0xd9,0x08}, - {0xda,0x58}, - {0xdb,0x02}, - {0xfe,0x00}, - - /*Gamma*/ - {0xfe,0x00},//page 0 - {0xba,0x00}, - {0xbb,0x04}, - {0xbc,0x0a}, - {0xbd,0x0e}, - {0xbe,0x22}, - {0xbf,0x30}, - {0xc0,0x3d}, - {0xc1,0x4a}, - {0xc2,0x5d}, - {0xc3,0x6b}, - {0xc4,0x7a}, - {0xc5,0x85}, - {0xc6,0x90}, - {0xc7,0xa5}, - {0xc8,0xb5}, - {0xc9,0xc2}, - {0xca,0xcc}, - {0xcb,0xd5}, - {0xcc,0xde}, - {0xcd,0xea}, - {0xce,0xf5}, - {0xcf,0xff}, - - /*Auto Gamma*/ - {0xfe,0x00}, - {0x5a,0x08}, - {0x5b,0x0f}, - {0x5c,0x15}, - {0x5d,0x1c}, - {0x5e,0x28}, - {0x5f,0x36}, - {0x60,0x45}, - {0x61,0x51}, - {0x62,0x6a}, - {0x63,0x7d}, - {0x64,0x8d}, - {0x65,0x98}, - {0x66,0xa2}, - {0x67,0xb5}, - {0x68,0xc3}, - {0x69,0xcd}, - {0x6a,0xd4}, - {0x6b,0xdc}, - {0x6c,0xe3}, - {0x6d,0xf0}, - {0x6e,0xf9}, - {0x6f,0xff}, - - /*Gain*/ - {0xfe,0x00}, - {0x70,0x50}, - - /*AEC*/ - {0xfe,0x00},//page 0 - {0x4f,0x00},///cc201805 close ACE /// {0x4f,0x01}, - {0xfe,0x01},//page 1 - {0x0d,0x00},//08 add 20170110 - {0x12,0xa0}, - {0x13,0x3a}, - {0x44,0x04}, - {0x1f,0x30}, - {0x20,0x40}, - {0x26,0x9a}, - {0x3e,0x20}, - {0x3f,0x2d}, - {0x40,0x40}, - {0x41,0x5b}, - {0x42,0x82}, - {0x43,0xb7}, - {0x04,0x0a}, - {0x02,0x79}, - {0x03,0xc0}, - - /*measure window*/ - {0xfe,0x01},//page 1 - {0xcc,0x08}, - {0xcd,0x08}, - {0xce,0xa4}, - {0xcf,0xec}, - - /*DNDD*/ - {0xfe,0x00}, - {0x81,0xb8}, - {0x82,0x12}, - {0x83,0x0a}, - {0x84,0x01}, - {0x86,0x50}, - {0x87,0x18}, - {0x88,0x10}, - {0x89,0x70}, - {0x8a,0x20}, - {0x8b,0x10}, - {0x8c,0x08}, - {0x8d,0x0a}, - - /*Intpee*/ - {0xfe,0x00}, - {0x8f,0xaa}, - {0x90,0x9c}, - {0x91,0x52}, - {0x92,0x03}, - {0x93,0x03}, - {0x94,0x08}, - {0x95,0x44}, - {0x97,0x00}, - {0x98,0x00}, - - /*ASDE*/ - {0xfe,0x00}, - {0xa1,0x30}, - {0xa2,0x41}, - {0xa4,0x30}, - {0xa5,0x20}, - {0xaa,0x30}, - {0xac,0x32}, - - /*YCP*/ - {0xfe,0x00}, - {0xd1,0x3c}, - {0xd2,0x3c}, - {0xd3,0x38}, - {0xd6,0xf4}, - {0xd7,0x1d}, - {0xdd,0x73}, - {0xde,0x84}, - - /*Banding*/ - {0xfe,0x00}, - {0x05,0x01}, - {0x06,0xad}, - {0x07,0x00}, - {0x08,0x10}, - - {0xfe,0x01}, - {0x25,0x00}, - {0x26,0x9a}, - - {0x27,0x01}, - {0x28,0xce}, - {0x29,0x03}, - {0x2a,0x02}, - {0x2b,0x04}, - {0x2c,0x36}, - {0x2d,0x07}, - {0x2e,0xd2}, - {0x2f,0x0b}, - {0x30,0x6e}, - {0x31,0x0e}, - {0x32,0x70}, - {0x33,0x12}, - {0x34,0x0c}, - {0x3c,0x30}, - {0xfe,0x00}, - {0x00,0x00} - -}; - - -#endif diff --git a/source/bsp/backu/bsp_gc032a.h b/source/bsp/backu/bsp_gc032a.h deleted file mode 100644 index 7be8e1a..0000000 --- a/source/bsp/backu/bsp_gc032a.h +++ /dev/null @@ -1,19 +0,0 @@ - -#ifndef _gc_032a_H_ -#define _gc_032a_H_ - -#include "../bsp/bsp_config.h" - -#include "../clib/type.h" -#include "../clib/clib.h" -#include "../ctask/tick.h" - -//#define GC6133_reg_tbl_len 291 GC6133_reg_tbl_len+1 - -#define GC6133_reg_tbl_len (292) - - -extern U8 code GC6133_init_reg_tbl[][2]; - - -#endif///_gc_032a_H_ diff --git a/source/bsp/backu/bsp_msa300.c b/source/bsp/backu/bsp_msa300.c deleted file mode 100644 index 3e152fe..0000000 --- a/source/bsp/backu/bsp_msa300.c +++ /dev/null @@ -1,261 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2017, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file msa300.c -/// @brief msa300 driver app -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - -/******************************************************************************/ -/***************************** Include Files **********************************/ -/******************************************************************************/ -#include "bsp_msa300.h" -#include "../msp/uart0.h" -struct _s_gsens_ s_as;//[D_as_ch_mun]; - - -// data*3.91mg/LSB 1g = 90 1/2g = 45 1/3g = 30 333mg/3.91mg = 85d=0x55 -/// 倾斜30度就启动 -//#define D_actionTH_init 0x02 -#define D_actionTH_init 0x0f -//#define D_actionTH_init 0x25 /// z轴调到25算是临界值 -////#define D_actionTH_init 0x0c -////#define D_actionTH_init 0x04 -/// 中断持续的时间为4s 4s后中断结束 产生下降沿 -// #define D_latch_time_init D_latch_4s -#define D_latch_time_init D_latch_50ms - - - - -#if 0 -void L1_as_power_mode(unsigned char dev,unsigned char ps) -{ - // s_as[0].reg_power - s_as[0].reg_power &= 0x3f; - s_as[0].reg_power |= ps; - L2_I2C_WriteCmd(dev,MSA_REG_POWERMODE_BW,s_as[0].reg_power); // 进入normal 模式 -} - - -/// D_sensor_active_close();DL_ms300_int_close(); - -/// L1_as_WorkStatus(D_wakeup); - -///extern void L1_as_WorkStatus(unsigned char d); -void L1_as_WorkStatus(unsigned char d) -{ - if(D_wakeup == d) - { -/// L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING3,D_INT2_S_TAP|D_INT2_ACTIVE); - D_sensor_active_open();BITN_0(DR_who_wakeup, DRB_who_wakeup_action); - }else - { -/// L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING3,0); - D_sensor_active_close(); - } -} -void L1_as_action(void) -{ - L2_I2C_ReadReg(D_i2c_addr_Gsensor,MSA_REG_Tape_Active_Status,&s_as[0].reg_temp,1); /// read only - ///L0_uart0_uc('.'); - s_as[0].reg_temp &= B0111_0111;/// 去掉符号位 - if(s_as[0].reg_action == s_as[0].reg_temp) - { - }else - { - - s_as[0].action_ok = 1; - s_as[0].reg_action = s_as[0].reg_temp; - } -/// L0_uart0_uchex(s_as[0].reg_temp) -} -#endif - -/// msa300 初始化 调用前必须使用iic的初始化 -/// 如需使用中断 还必须EA 启动 -void L1_msa300_init(void) -{ - /// -///step 1: 读取power reg - LD_gsensor_power(D_PowerMode_normal ); - /// 上电后是standby 模式 需要设置 00:normal mode, 01:low power mode, 10/11 suspend mode - -///step 2: 设置分辨率和加速度范围 -/// L1_ms300_reg_set(MSA_REG_G_RANGE,((D_MSA_14BIT)|(D_MSA_2G))); // 8b8t 2g - L1_ms300_reg_set(MSA_REG_G_RANGE,((D_MSA_8BIT)|(D_MSA_2G))); // 8b8t 2g -// L1_ms300_reg_set(NSA_REG_ODR_AXIS_DISABLE, -// D_ODR_31Hz25); - -///step 3: 设置 输出频率和带宽bandwidth 带宽总是输出频率的一半 -/// ODR BW -/// 15.63Hz (0100) 7.81Hz -/// CLOSE Y关闭 y轴 因为模块是竖着的 - L1_ms300_reg_set(MSA_REG_ODR_AXIS_DISABLE,D_AXIS_DIS_Y|D_ODR_15P63Hz); -// L1_ms300_reg_set(MSA_REG_ODR_AXIS_DISABLE,D_ODR_31Hz25); -////-------------------------------------------------------------------------- - //CC-MD-VH06 - /// for pcb (INT1 PIN5 ) --- SENSINT2---(P3.0 INT1) - /// (INT2 PIN6 ) --- SENSINT3---(P3.1/INT0) - -///step 4: active 中断 使能XZ轴 - L1_ms300_reg_set(MSA_REG_INTERRUPT_SETTINGS1, - ACTIVE_INT_EN_Y|ACTIVE_INT_EN_X); /// fixme:需要调试ACTIVE_INT_EN_Y - L1_ms300_reg_set(D_Active_TH,D_actionTH_init); - -///step 5: - /// ACTIVE 中断和 single tap中断映射到 int2上,也就是int2电平变化,通知mcu处理 - /// ps3.sch msa300.int1==sensint2 msa300.int2==sensint3 ---rxd -/// L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING1,INT1_ACTIVE|INT1_S_TAP_INT); -// L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING3,D_INT2_ACTIVE); - L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING3,D_INT2_S_TAP|D_INT2_ACTIVE); - -/// INT2_OD 0: push-pull -/// INT2_LVL 0: low, 1:high -/// L1_ms300_reg_set(MSA_REG_INT_PIN_CONFIG,D_INT2_OD|D_INT2_LVL_low); - L1_ms300_reg_set(MSA_REG_INT_PIN_CONFIG,D_INT2_pull|D_INT2_LVL_low); - ///L1_ms300_reg_set(MSA_REG_INT_PIN_CONFIG,0|D_INT2_LVL_high); - -////-------------------------------------------------------------------------- -///step 6 : 锁定1s的时间 ···\_____1s______/```` - L1_ms300_reg_set(MSA_REG_INT_LATCH,D_latch_time_init); - ///L1_i2c_Configure(0);DL_ms300_int_open - ///();D_sensor_active_open(); -/// L1_as_WorkStatus(D_wakeup); - -// LD_gsensor_power(D_PowerMode_normal ); - LD_gsensor_power(D_PowerMode_low ); -} -#if 0///nouse - -///0x02 ACC_X[5:0] 0x00 -//0x03 ACC_X[13:6] 0x00 -//0x04 ACC_Y[5:0] 0x00 -//0x05 ACC_Y[13:6] 0x00 -//0x06 ACC_Z[5:0] 0x00 -//0x07 ACC_Z[13:6] 0x00 -/// 0 1 2 3 4 5 -// x5:0 x13:6 y5:0 y13:6 z5:0 z13:6 -void L1_as_readXYZ(unsigned char CH) -{ - -/********************************************** -///read data -//S ADD W A REG A -//S ADD R A D1 A D2 A.....DX N P - L2_I2C_ReadReg(D_i2c_addr_AS1,0x02,(unsigned char *)s_as[CH].d,6); - -////d 0 1 2 3 4 5 -//// 02 03 04 05 06 07 -//// XL XH YL YH ZL ZH -/// -L0_uart0_uc(0x09); -// L0_uart0_uchex(s_as[0].d[0]); L0_uart0_uc(0x09); - L0_uart0_uchex(s_as[0].d[1]); L0_uart0_uc(0x09); -// L0_uart0_uchex(s_as[0].d[2]); L0_uart0_uc(0x09); - L0_uart0_uchex(s_as[0].d[3]); L0_uart0_uc(0x09); -// L0_uart0_uchex(s_as[0].d[4]); L0_uart0_uc(0x09); - L0_uart0_uchex(s_as[0].d[5]); -/// L0_uart0_sendArray((unsigned char *)&s_as[CH],6); -L0_uart0_uc(0x0d); -L0_uart0_uc(0x0a); - - - -Lc_delay_ms(10); - *****************************************/ - -} - -#endif //////nouse -/***************** - -L2_I2C_ReadReg(D_i2c_addr_HP303B,0x0d,d,1); - L0_MUART_uc(d[0]); -L2_I2C_ReadReg(D_i2c_addr_AS1,0x05,d,1);// 11 =0f - L0_MUART_uc(d[0]); -L2_I2C_ReadReg(D_i2c_addr_AS2,0x05,d,1);//10 =0f - L0_MUART_uc(d[0]); - - L1_as1_readXYZ(); - s_p_rf.ucR1 = (U8)(s_as1.x>>8); - s_p_rf.ucR2 = (U8)(s_as1.y>>8); - s_p_rf.ucR3 = (U8)(s_as1.z>>8); -p = (U8*)&s_p_rf; - - L0_MUART_uc(s_p_rf.ucR1); - L0_MUART_uc(s_p_rf.ucR2); - L0_MUART_uc(s_p_rf.ucR3); - L0_MUART_uc(0xc7); - *********************/ -#if 0 - -void L3_msa300_fun(U8 *pPara) -{ - U8 val = 0; - TS_P_debug *p = pPara; - /// Ac 01 02 03 ocr ---bsp_debug.c - /// p.cmd p.R2 p.R3 p.ocr - ///Ac 00 03 01 00/// ACC_X[13:6] - switch(p->cmd) - { - case 0: - /// fc 00 02 01 xx 读取reg02 中的一个数据 - ///0x02 ACC_X[5:0] 0x00 - //0x03 ACC_X[13:6] 0x00 - //0x04 ACC_Y[5:0] 0x00 - //0x05 ACC_Y[13:6] 0x00 - //0x06 ACC_Z[5:0] 0x00 - //0x07 ACC_Z[13:6] 0x00 - //// Ac 00 03 01 00/// ACC_X[13:6] - //// Ac 00 05 01 00/// ACC_Y[13:6] - //// Ac 00 07 01 00/// ACC_Z[13:6] - L2_I2C_ReadReg(D_i2c_addr_AS1,p->R2 ,&val,p->R3); - ///L0_uart0_uc(p->R2); - ///L0_uart0_uc(p->R3); - L0_uart0_uc(val); - break; - case 2: - ///Ac 02 22 01 00/// (05)=01 - L0_uart0_uc('W'); - ///L2_I2C_WriteCmd(D_i2c_addr_AS1,p->R2,p->R3); - //L0_uart0_uc(pPara[2]); - // L0_uart0_uc(p->R2); - // L0_uart0_uc(p->R3); - break; - case 3: - ///Ac 03 22 01 00/// (05)=01 - L1_as_action(); - if(1 == s_as[0].action_ok) - { - s_as[0].action_ok = 0; - L0_uart0_uc(s_as[0].reg_action); - } - /********************* - L2_I2C_ReadReg(D_i2c_addr_Gsensor,MSA_REG_Tape_Active_Status,&s_as[0].reg_temp,1); /// read only - ///L0_uart0_uc('.'); - s_as[0].reg_temp &= B0111_0111; - if(s_as[0].reg_power == s_as[0].reg_temp) - { - - }else - { - L0_uart0_uc(s_as[0].reg_temp); - s_as[0].reg_power = s_as[0].reg_temp; - }*************************/ - break; - default: - break; - }; -} -///#else -void L3_msa300_fun(U8 *pPara) -{ -} -#endif - - diff --git a/source/bsp/backu/bsp_msa300.h b/source/bsp/backu/bsp_msa300.h deleted file mode 100644 index 4069586..0000000 --- a/source/bsp/backu/bsp_msa300.h +++ /dev/null @@ -1,473 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2017, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file msa300.c -/// @brief msa300 driver app -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - - - -#ifndef _MSA300_H -#define _MSA300_H - - -#include "../clib/bit.h" - -#include "../msp/iic_sim.h" - - - - -/*********************************************************************** - - U51(SDO=1) int2 P33 ----------------U10(SDO=0) int2 P32----------------MCU----USB - 0x4c 0x4e - AS1 AS2 - -**************************************************************************/ - - -#define D_i2c_addr_AS1 0x4c // u51 -//#define D_i2c_addr_AS2 0x4e -/* Register define for NSA asic */ -#define MSA_REG_SPI_I2C 0x00 -#define MSA_REG_WHO_AM_I 0x01 -#define MSA_REG_ACC_X_LSB 0x02 -#define MSA_REG_ACC_X_MSB 0x03 -#define MSA_REG_ACC_Y_LSB 0x04 -#define MSA_REG_ACC_Y_MSB 0x05 -#define MSA_REG_ACC_Z_LSB 0x06 -#define MSA_REG_ACC_Z_MSB 0x07 - - -#define MSA_REG_Tape_Active_Status 0x0B - -#define MSA_REG_G_RANGE 0x0f -#define MSA_REG_ODR_AXIS_DISABLE 0x10 -#define MSA_REG_POWERMODE_BW 0x11 -#define MSA_REG_SWAP_POLARITY 0x12 -#define MSA_REG_FIFO_CTRL 0x14 -#define MSA_REG_INTERRUPT_SETTINGS1 0x16 -#define MSA_REG_INTERRUPT_SETTINGS2 0x17 -#define MSA_REG_INTERRUPT_MAPPING1 0x19 -#define MSA_REG_INTERRUPT_MAPPING2 0x1a -#define MSA_REG_INTERRUPT_MAPPING3 0x1b -#define MSA_REG_INT_PIN_CONFIG 0x20 -#define MSA_REG_INT_LATCH 0x21 -#define MSA_REG_ACTIVE_DURATION 0x27 -#define MSA_REG_ACTIVE_THRESHOLD 0x28 -#define MSA_REG_TAP_DURATION 0x2A -#define MSA_REG_TAP_THRESHOLD 0x2B -#define MSA_REG_CUSTOM_OFFSET_X 0x38 -#define MSA_REG_CUSTOM_OFFSET_Y 0x39 -#define MSA_REG_CUSTOM_OFFSET_Z 0x3a -#define MSA_REG_ENGINEERING_MODE 0x7f -#define MSA_REG_SENSITIVITY_TRIM_X 0x80 -#define MSA_REG_SENSITIVITY_TRIM_Y 0x81 -#define MSA_REG_SENSITIVITY_TRIM_Z 0x82 -#define MSA_REG_COARSE_OFFSET_TRIM_X 0x83 -#define MSA_REG_COARSE_OFFSET_TRIM_Y 0x84 -#define MSA_REG_COARSE_OFFSET_TRIM_Z 0x85 -#define MSA_REG_FINE_OFFSET_TRIM_X 0x86 -#define MSA_REG_FINE_OFFSET_TRIM_Y 0x87 -#define MSA_REG_FINE_OFFSET_TRIM_Z 0x88 -#define MSA_REG_SENS_COMP 0x8c -#define MSA_REG_MEMS_OPTION 0x8f -#define MSA_REG_CHIP_INFO 0xc0 -#define MSA_REG_CHIP_INFO_SECOND 0xc1 -#define MSA_REG_SENS_COARSE_TRIM 0xd1 - -/************* - -------------------------------------------------------------------- -Reg 0x0F(Resolution/Range):Read/Write -Bit7 Bit6 Bit5 Bit4 |Bit3 Bit2 |Bit1 Bit0 | Default - |RESOLUTION[1:0] | FS[1:0] | 0X00 - - -RESOLUTION[1:0]: resolution of x/y/z axes, -00:14bit, 01:12bit, 10:10bit, 11:8bit - - -FS[1:0]: acceleration range of x/y/z axes, -00:+/-2g, 01:+/-4g, 10:+/-8g, 11:+/-16g - - -*********/ -#define D_MSA_8BIT B0000_1100 -#define D_MSA_12BIT B0000_0100 -#define D_MSA_10BIT B0000_1000 -#define D_MSA_14BIT B0000_0000 - -#define D_MSA_16G B0000_0011 -#define D_MSA_8G B0000_0001 -#define D_MSA_4G B0000_0010 -#define D_MSA_2G B0000_0000 -/********** -ODR Output data rate 1 1000 Hz - -Reg0x10(ODR) :Read/Write Default 0X0F -Bit7 Bit6 Bit5 -X_AXIS_DIS Y_AXIS_DIS Z_AXIS_DIS -Bit4 -Bit3 Bit2 Bit1 Bit0 -ODR[3:0] - -X_AXIS_DIS: 0:enable, 1:disable Y_AXIS_DIS: 0:enable, 1:disable Z_AXIS_DIS: 0:enable, 1:disable -ODR[3:0]: -0000:1Hz (not available in normal mode) -0001:1.95Hz (not available in normal mode) -0010:3.9Hz 0011:7.81Hz -0100:15.63Hz 0101: 31.25Hz 0110: 62.5Hz 0111: 125Hz 1000: 250Hz -1001: 500Hz (not available in low power mode) -1010-1111: (not available in low power mode) - - -Table 5: bandwidth under different ODR and BW settings in normal mode -ODR BW -1000Hz (1010-1111) 500Hz -500Hz (1001) 250Hz -250Hz (1000) 125Hz -125Hz (0111) 62.5Hz -62.5Hz (0110) 31.25Hz -31.25Hz (0101) 15.63Hz -15.63Hz (0100) 7.81Hz -7.81Hz (0011) 3.9Hz -3.9Hz (0010) 1.95Hz -MSA300 supports four different acceleration measurement ranges, it is selected -ODR BW -15.63Hz (0100) 7.81Hz - -*********/ -/// fixme: 实测和规格书不一致 -#define D_AXIS_DIS_Y B1000_0000 -#define D_AXIS_DIS_X B0100_0000 -#define D_AXIS_DIS_Z B0010_0000 - -#define D_ODR_31Hz25 0x05 -#define D_ODR_250Hz 0x08 -#define D_ODR_125Hz 0x0f -#define D_ODR_15P63Hz B0000_0100 - - - -/********** -Reg0x11(Power Mode/Bandwidth) : Read/Write ------------------------------------------------------------------- -Bit7 Bit6 |Bit5 Bit4 Bit3 Bit2 Bit1 |Bit0 Default 0X9E ----------------------------------------------------------------------- -PWR_MODE | LOW_POWER_BW[3:0] | --------------------------------------------------------------------- -PWR_MODE: 00:normal mode, 01:low power mode, 10/11 suspend mode -LOW_POWER_BW[3:0]: -0000-0010:1.95Hz -0011:3.9Hz, -0100:7.81Hz -0101:15.63Hz, -0110: 31.25Hz, -0111: 62.5Hz, -1000: 125Hz, -1001: 250Hz, -1010-1111:500Hz -***********/ -//#define D_PowerMode_normal 0x00 -//#define D_PowerMode_low 0x40 -//#define D_PowerMode_suspend 0x80 -#define D_lowPower_BW (0x0F<<1) - -#define D_PowerMode_normal 0x1e -#define D_PowerMode_suspend 0x9e - -#define D_gs_LPBW1H9 (0<<1) -#define D_gs_LPBW3H9 (3<<1) -#define D_gs_LPBW7H8 (4<<1) -#define D_gs_LPBW15H (5<<1) -#define D_gs_LPBW31H (6<<1) -#define D_gs_LPBW62H (7<<1) -#define D_gs_LPBW125H (8<<1) -#define D_gs_LPBW250H (9<<1) -#define D_gs_LPBW500H (10<<1) - - -///#define D_PowerMode_low 0x5e - -#define D_PowerMode_low (0x50|D_gs_LPBW1H9) -//#define D_PowerMode_low 0x5e///(0x40|D_gs_LPBW62H) - -#define LD_gsensor_power(Pmode) L2_I2C_WriteCmd(D_i2c_addr_Gsensor,MSA_REG_POWERMODE_BW,Pmode);s_as.power=Pmode - - -/********** - - -/************************************** -Reg 0x1B (Int_Map_2) :Read/Write -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default - -Bit6 INT2_ORIENT -Bit5 INT2_S_TAP -Bit4 INT2_D_TAP -Bit2 INT2_ACTIVE -Bit1 RESERVED -Bit0 INT2_FREEFALL -0X00 -INT2_ORIENT: map orientation interrupt to INT2, 0:disable, 1:enable INT2_S_TAP: map single tap interrupt to INT2, 0:disable, 1:enable INT2_D_TAP: map double tap interrupt to INT2, 0:disable, 1:enable INT2_ACTIVE: map active interrupt to INT2, 0:disable, 1:enable INT2_FREEFALL: map freefall interrupt to INT2, 0:disable, 1:enable -***************************************/ -#define D_INT2_ORIENT BITN6 -#define D_INT2_S_TAP BITN5 -#define D_INT2_D_TAP BITN4 -#define D_INT2_ACTIVE BITN2 -#define D_INT2_FREEFALL BITN1 -/********************************************** - -Reg 0x20 (Int_Map_2) :Read/Write -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default 0X00 -Bit3 INT2_OD -Bit2 NT2_LVL -Bit1 IINT1_OD -Bit0 INT1_LVL -INT2_OD: select output for INT2, 0: push-pull, 1:OD -INT2_LVL: select active level for INT2, 0: low, 1:high -INT1_OD: select output for INT1, 0: push-pull, 1:OD -INT1_LVL: select active level for INT1, 0: low, 1:high -***************************************/ -#define D_INT2_pull 0 -#define D_INT2_OD BITN3 -#define D_INT2_LVL_high BITN2 -#define D_INT2_LVL_low 0 - - -#define D_INT1_pull 0 -#define D_INT1_OD BITN1 -#define D_INT1_LVL_high BITN0 -#define D_INT1_LVL_low 0 - - - -/************************************************************* - - U51(SDO=1) int2 P33 ----------------U10(SDO=0) int2 P32----------------MCU----USB - 0x4c 0x4e - AS1 AS2 - --------------------------------------------------------------------- -Reg 0x16(Int_Set_0) : Read/Write -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default 0X00 -------------------------------------------------------------------- -象限应该 是 方位识别 -Tap 功能 -双击和单击 -使能单击 s_tap_en 使能双击d_tap_en -中断状态保存: )s_tap_int , d_tap_int -通过检查加速度斜率是否超过设定的阈值来判断是否有单击事件 - -Bit6 ORIENT_INT_EN -Bit5 S_TAP_INT_EN -Bit4 D_TAP_INT_EN -Bit2 ACTIVE_INT_EN_Z -Bit1 ACTIVE_INT_EN_Y -Bit0 ACTIVE_INT_EN_X - -------------------------------------------------------------------- -ORIENT_INT_EN: orient interrupt, 0:disable, 1:enable -S_TAP_INT_EN: single tap interrupt, 0:disable, 1:enable -D_TAP_INT_EN: double tap interrupt, 0:disable, 1:enable -ACTIVE_INT_EN_Z: active interrupt for the z axis, 0:disable, 1:enable -ACTIVE_INT_EN_Y: active interrupt for the y axis, 0:disable, 1:enable -ACTIVE_INT_EN_X: active interrupt for the x axis, 0:disable, 1:enable - - -reg 0x16对应的Reg 0x19 -------------------------------------------------------------------- -Reg 0x19(Int_Map_0) : Read/Write -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default -------------------------------------------------------------------- - INT1_ORIENT - INT1_S_TAP - INT1_D_TAP - INT1_ACTIVE - INT1_FREEFALL - 0X00 -------------------------------------------------------------------- -INT1_ORIENT: map orientation interrupt to INT1, 0:disable, 1:enable -INT1_S_TAP: map single tap interrupt to INT1, 0:disable, 1:enable -INT1_D_TAP: map double tap interrupt to INT1, 0:disable, 1:enable -INT1_ACTIVE: map active interrupt to INT1, 0:disable, 1:enable -INT1_FREEFALL: map freefall interrupt to INT1, 0:disable, 1:enable - - -------------------------------------------------------------------- -Reg 0x27 (Active_Dur) : Read/Write -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default - ACTIVE_DUR[1:0] 0X00 -ACTIVE_DUR[1:0]: active duration time is (ACTIVE_DUR[1:0]+1)ms -------------------------------------------------------------------- -Reg 0x28(Active_Th) : Read/Write - -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default -ACTIVE_TH[7:0] 0X14 -ACTIVE_TH[7:0]: threshold of active interrupt -3.91mg/LSB(2g range) -7.81mg/LSB(4g range) -15.625mg/LSB(8g range) -31.25mg/LSB(16g range) - - - -**************************************************************************/ - -#define ACTIVE_INT_EN_Z BITN2 -#define ACTIVE_INT_EN_Y BITN1 -#define ACTIVE_INT_EN_X BITN0 - - -/*************************************** -0x21 RESET_INT LATCH_INT[3:0] 0x00 - latch_int Interrupt mode - 0000 non-latched - 0001 temporary latched 250ms - 0010 temporary latched 500ms - 0011 temporary latched 1s - 0100 temporary latched 2s - 0101 temporary latched 4s - 0110 temporary latched 8s - 0111 Latched - 1000 non-latched - 1001 temporary latched 1ms - 1010 temporary latched 1ms - 1011 temporary latched 2ms - 1100 temporary latched 25ms - 1101 temporary latched 50ms - 1110 temporary latched 100ms - 1111 Latched - - _______/``latch period````\_______ -****************************************/ -#define D_no_latched 0x01 -#define D_latch_250ms 0x01 -#define D_latch_500ms 0x02 -#define D_latch_1s 0x03 -#define D_latch_2s 0x04 -#define D_latch_4s 0x05 -#define D_latch_8s 0x06 -#define D_latched 0x07 -#define D_no_latched2 0x08 -#define D_latch_1ms 0x09 -#define D_latch_1ms2 0x0a -#define D_latch_2ms 0x0B -#define D_latch_25ms 0x0C -#define D_latch_50ms 0x0D -#define D_latch_100ms 0x0E -#define D_latched2 0x0f - -/**************************************************** -Reg 0x09(Motion_Interrupt) :Read only -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default 0X00 -Bit6 ORIENT_INT -Bit5 S_TAP_INT -Bit4 D_TAP_INT -Bit2 ACTIVE_INT -Bit0 FREEFALL_INT -运输的时候不停的动怎么办 需要方位判定?? -如果图像不是黑暗中 则 -运输的动静大 需要关闭 -也就是有大的动静时需要5s以上之后再工作 如果动静大 再休息5秒 这样把耗电 -降到最小 - -ORIENT_INT: orientation interrupt status,0:inactive,1:active -S_TAP_INT: single tap interrupt status,0:inactive,1:active -D_TAP_INT: double tap interrupt status,0:inactive,1:active -ACTIVE_INT: active interrupt status,0:inactive,1:active -FREEFALL_INT: freefall interrupt status,0:inactive,1:active -------------------------------------------------------------------- -Reg 0x0B(Tape_Active_Status) :Read only -Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Default -TAP_SIGN - TAP_FIRST_X - TAP_FIRST_Y - TAP_FIRST_Z - ACTIVE_SIGN - ACTIVE_FIRST_X - ACTIVE_FIRST_Y - ACTIVE_FIRST_Z - 0X00 -------------------------------------------------------------------- -TAP_SIGN: sign of tap triggering signal, 0:positive,1:negative -TAP_FIRST_X: tap interrupt triggered by x axis, 1:positive,0:negative -TAP_FIRST_Y: tap interrupt triggered by y axis, 1:positive,0:negative -TAP_FIRST_Z: tap interrupt triggered by z axis, 1:positive,0:negative -ACTIVE_SIGN: sign of active interrupt, 0:positive,1:negative -ACTIVE_FIRST_X: active interrupt triggered by x axis, 1:positive,0:negative -ACTIVE_FIRST_Y: active interrupt triggered by y axis, 1:positive,0:negative -ACTIVE_FIRST_Z: active interrupt triggered by z axis, 1:positive,0:negative - - -***************************************************/ - -#define INT1_S_TAP_INT BITN5 ///单击中断 -#define INT1_D_TAP_INT BITN4 ///双击中断 -#define INT1_ACTIVE BITN2 /// 振动中断 - -#define D_Active_TH 0x28 -#define D_Active_Dur 0x27 - - -#define D_i2c_addr_AS1 0x4c // u51 -#define D_i2c_addr_AS2 0x4e - - -#define D_i2c_addr_Gsensor 0x4c // u51 - - -#define D_i2c_addr_AS1 0x4c // u51 -#define D_i2c_addr_AS2 0x4e - -/******************************************************************************/ -/***************************** Include Files **********************************/ -/******************************************************************************/ - -// 最高400Khz 1/400 ms 2.5us - -//Symbol Parameter Condition Min Max Unit -//fscl Clock frequency 400 kHz -#define D_as_ch_mun 1 -struct _s_gsens_ -{//8byte - U8 d[6]; -// U8 reg_action; - U8 power; -// U8 reg_temp; -// U8 action_ok; - - // U16 x; - // U16 y; - // U16 z; - -}; -extern struct _s_gsens_ s_as; -extern void L1_as_readXYZ(unsigned char CH); -extern void L1_msa300_init(void); -extern void L3_msa300_fun(U8 *pPara); -extern void L1_as_action(void); - -extern void L1_as_WorkStatus(unsigned char d); -///L1_msa300_power(D_sleep); -extern void L1_msa300_power(U8 mode); - -#define L1_ms300_reg_set(x,y) L2_I2C_WriteCmd(D_i2c_addr_Gsensor, (x),(y) ) -#define L1_ms300_reg_get(x,y) L2_I2C_ReadReg(D_i2c_addr_Gsensor,(x),1) -#define DL_ms300_int_open(); L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING3,D_INT2_S_TAP|D_INT2_ACTIVE); -#define DL_ms300_int_close(); L1_ms300_reg_set(MSA_REG_INTERRUPT_MAPPING3,0); - - - - -#endif // #ifndef _MSA300_H - - - diff --git a/source/bsp/backu/cw63xx.c b/source/bsp/backu/cw63xx.c deleted file mode 100644 index c171c3e..0000000 --- a/source/bsp/backu/cw63xx.c +++ /dev/null @@ -1,191 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2017, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file cw63xx.c -/// @brief cw630x driver app -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 - -/// @version 1.1 -/// @author CC -/// @date 20170619 -/// @note for - - -////////////////////////////////////////////////////////////////////////////// - -#include "cw63xx.h" -//#include "../debug/debug_drv.h" -#include "../msp/iic_sim.h" -#include "../msp/uart0.h" -//#include "msa300.h" - -///------------------------------------------------------------------------- -/// @breif L1_cw63xx_init -/// @param a s_task_PWON -/// @param s "L1_cw63xx_init" -/// @return none -/// @see Test() (本函数参考其它的相关的函数,这里作一个链接) -/// @note (note描述需要注意的问题) -///------------------------------------------------------------------------- -#define D_lowPower_warnning 0x02 -#define D_lowPower_BAT_FULL 0x08 - - - - -/***************************** - -if(BITN_G(I2CTXD,BITN1)) - -CHG_IN:如果 DCIN 有 5V 电源接入,则检测到充电并触发中断,寄存器 0x03[5]由 0 变成 1。 -BAT_FULL:如果电池充满电,电流变为 0,则触发中断,寄存器 0x03[4]由 0 变成 1。 -BAT_OT:如果电池温度过高(默认值 60℃左右),则触发中断并停止充电,寄存器 0x03[3]由 0 变成1。 -BAT_UT:如果电池温度过低(默认值 0℃左右),则触发中断并停止充电,寄存器 0x03[2]由 0 变成1。 -LOW_BAT:如果电池电压低于告警值时(默认为 3.4V),则触发中断,寄存器 0x03[1]由 0 变成 1。 -BUTTON:按键按下,会触发一个中断,寄存器 0x03[0]由 0 变成 1 - -实际中,去掉电池后产生的是 BAT_FULL中断。 - -***************************/ -void L1_cw63xx_sta(void) -{ - U8 d; - L2_I2C_ReadReg(D_i2c_addr_cw63xx,D_CW63X_REG_Interrupt,&d,1); - if(BITN_G(d, BITN1))///收到低电压警告 - { - I2CTXD = 1; - } - - if(BITN_G(d, BITN4))///只有充满电后才低压标志被清零 - { - I2CTXD = 0; - } - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_Interrupt,0); -} -#if 0 -void L1_cw63xx_init(void) -{ - U8 val = 0; - // LDO1 LDO2 LDO3 LDO4 - #if 0 - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_LDO1,D_CW63XX_ON|D_CW63XX_3V2); // 进入normal 模式 - Lc_delay_ms(100);// 2000--7s - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_LDO2,D_CW63XX_ON|D_CW63XX_3V2); // 打开 LDO1 并设置为1.8v - Lc_delay_ms(100); - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_LDO3,D_CW63XX_ON|D_CW63XX_3V2); // 进入normal 模式 - Lc_delay_ms(100);// 2000--7s - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_LDO4,D_CW63XX_ON|D_CW63XX_3V2); // 打开 LDO1 并设置为1.8v -//#else - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC,D_CW63XX_ON|D_CW63XX_2V5); // mcu gsensor - Lc_delay_ms(10);// 2000--7s - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC1,D_CW63XX_ON|D_CW63XX_3V); // uart4 sed ch430 mcu_program - Lc_delay_ms(10); - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC2,D_CW63XX_ON|D_CW63XX_2V5); //uart 4 receive - Lc_delay_ms(10);// 2000--7s - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC3,D_CW63XX_ON|D_CW63XX_2V5); // 设置 AS cpu 供电2.5v - - //L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC2,D_CW63XX_ON|D_CW63XX_1V8); // 设置 AS cpu 供电2.5v - //Lc_delay_ms(600); - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC3,D_CW63XX_ON|D_CW63XX_2V8); // 设置 AS cpu 供电2.5v - Lc_delay_ms(10); - - #endif - - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_Charge,0x3F);///150mA CHARGE - ///L2_I2C_ReadReg(D_i2c_addr_cw63xx,D_CW63X_REG_Charge,&val,1); -// L0_uart0_uchex(val); -// Lc_delay_ms(10); - //// Lc_delay_ms(10); - //// L2_I2C_ReadReg(D_i2c_addr_cw63xx,D_CW63X_REG_Charge,&val,1); - //// L0_uart0_uc(val); - //// Lc_delay_ms(10); - /****************** - while(9) - { - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC2,D_CW63XX_ON|D_CW63XX_2V8); L0_uart0_uc('e'); - Lc_delay_ms(30); - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC2,D_CW63XX_OFF|D_CW63XX_2V8); - Lc_delay_ms(30); - - } -*****************/ - -///-------------------------------------------------------------------- -// L2_I2C_ReadReg(D_i2c_addr_cw63xx,D_CW63X_REG_LDO1,s_as1.d,4);// press -// L0_uart0_uchex(s_as1.d[0]); L0_uart0_uchex(s_as1.d[1]); L0_uart0_uchex(s_as1.d[2]); L0_uart0_uchex(s_as1.d[3]); - -} - -void L3_cw63xx_fun(U8 *pPara) -{ -*pPara=0; -} - -///#else - -//// FX CMD R2 R3 4 -void L3_cw63xx_fun(U8 *pPara) -{ - U8 val = 0; - TS_P_debug *p = pPara; - switch(p->cmd) - { - /********** - case 0: - L1_cw63xx_init(); - L0_uart0_uc('C'); - L0_uart0_uc(p->R1); - L0_uart0_uc(p->R2); - L0_uart0_uc(p->R3); - break; - ***********/ - case 1: //// - //// AX CMDR2 R3 R4 - /// AD 01 01 03 04 读取reg 01的数值 - //void L2_I2C_ReadReg(unsigned char sla,unsigned char reg, - // unsigned char *r,unsigned char n) - L2_I2C_ReadReg(D_i2c_addr_cw63xx,p->R2,&val,1); - L0_uart0_uc(val); - break; - - - case 2: //FD 02 03 04 00 - ///aD 02 0A 38 00 //vcc1 off - ///aD 02 0A B8 00 //vcc1 ON - ///FD 02 0B 04 00 B0011_1000 - ///FD 02 0C 04 00 - ///FD 02 01 3a 00 100mA充电 - - L0_uart0_uc('W'); - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,p->R2,p->R3); - //L0_uart0_uc(pPara[2]); - - L0_uart0_uc(p->R2); - L0_uart0_uc(p->R3); - break; - - - default: - break; - }; -} - -L2_I2C_ReadReg(D_i2c_addr_cw63xx,0,s_as.d,4); -L0_uart0_sendArray(s_as.d,4); -L2_I2C_WriteCmd(D_i2c_addr_cw63xx,0x03,0);////读完中断后需要写零才能清空中断 -CHG_IN:如果 DCIN 有 5V 电源接入,则检测到充电并触发中断,寄存器 0x03[5]由 0 变成 1。 -BAT_FULL:如果电池充满电,电流变为 0,则触发中断,寄存器 0x03[4]由 0 变成 1。 -BAT_OT:如果电池温度过高(默认值 60℃左右),则触发中断并停止充电,寄存器 0x03[3]由 0 变成1。 -BAT_UT:如果电池温度过低(默认值 0℃左右),则触发中断并停止充电,寄存器 0x03[2]由 0 变成1。 -LOW_BAT:如果电池电压低于告警值时(默认为 3.4V),则触发中断,寄存器 0x03[1]由 0 变成 1。 -BUTTON:按键按下,会触发一个中断,寄存器 0x03[0]由 0 变成 1 - -实际中,去掉电池后产生的是 BAT_FULL中断。 - -#endif - - diff --git a/source/bsp/backu/cw63xx.h b/source/bsp/backu/cw63xx.h deleted file mode 100644 index 5b741bb..0000000 --- a/source/bsp/backu/cw63xx.h +++ /dev/null @@ -1,123 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2017, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file msa300.c -/// @brief msa300 driver app -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - -#ifndef _cw63xx_H -#define _cw63xx_H - -#define D_i2c_addr_cw63xx 0x12 - - -#include "../msp/iic_sim.h" -//#include "../bsp/type_hs.h" -///-------------------------------------------------------------------- -#define D_CW63X_REG_system 0X00 -#define D_CW63X_REG_Charge 0X01 -#define D_CW63X_EN_NTC BITN7 ///Enable NTC check -#define D_CW63X_EN_CHG BITN6 /// Enable charging -#define D_CW63X_EN_TIMER BITN5 // Enalble charging timer - -// in power-off state,the IC will turn off LDO1,2,3,B ut hte LDORTC/LDO4 will remain on -#define D_CW63X_power_off 0x0a -//L1_cw63xx_set(D_CW63X_REG_Safety,D_CW63X_EN_NTC|D_CW63X_EN_CHG|D_CW63X_EN_TIMER|D_CW63X_power_off); -//L1_cw63xx_set(D_CW63X_REG_Safety,D_CW63X_EN_NTC|D_CW63X_EN_CHG|D_CW63X_EN_TIMER); - -///-------------------------------------------------------------------- - -#define D_CW63X_REG_Safety 0X02 -#define D_CW63X_LowBateryThreshold 0 -#define L0_set_LBT(x) ((x) - 28) -// L0_set_LBT(28) -/// L1_cw63xx_set(D_CW63X_REG_Safety,L0_set_LBT(28));/// 2.8v报警 -/// fixme 依靠这个实现电源的测量 -///-------------------------------------------------------------------- -#define D_CW63X_REG_Interrupt 0X03 -#define D_CW63X_REG_Interrupt_type 0X04 -#define D_CW63X_INT_CHG_OUT BITN7 ///Charging unplugged -#define D_CW63X_INT_TIMER_EXPIRE BITN6 ///Charging timer expire -#define D_CW63X_INT_CHG_INT BITN5 ///Charger detected -#define D_CW63X_INT_BAT_FULL BITN4 ///Battery full - -#define D_CW63X_INT_BAT_OT BITN3 ///Battery over temperature -#define D_CW63X_INT_BAT_UT BITN2 ///Battery under temperature -#define D_CW63X_INT_LOW_BAT BITN1 ///Battery low voltage -#define D_CW63X_INT_BUTTON BITN0 ///button detected - -///-------------------------------------------------------------------- - -#define D_CW63X_REG_LDO1 0X0A -#define D_CW63X_REG_LDO2 0X0B -#define D_CW63X_REG_LDO3 0X0C -#define D_CW63X_REG_LDO4 0X0D - - -//// reg[]543] reg[210] -//// 54 3 -//// || |210 -#define D_CW63XX_V800 B0000_0000 -#define D_CW63XX_V975 B0000_0111 -#define D_CW63XX_1V4 B0001_0100 - - -#define D_CW63XX_1V8 B0001_1100 -#define D_CW63XX_2V1 B0011_0001 -#define D_CW63XX_2V5 B0011_0101 -#define D_CW63XX_2V8 B0011_1000 -#define D_CW63XX_3V B0011_1010 -#define D_CW63XX_3V2 B0011_1100 - -#define D_CW63XX_ON B1000_0000 -#define D_CW63XX_OFF B0000_0000 - - -////extern void L1_cw63xx_init(void); -extern void L3_cw63xx_fun(U8 *pPara); -extern void L1_cw63xx_sta(void); - -///debug 使用U8 -////ine L3_cw63xx_fun(x); - - -///--------------------------------- - - - - - -#define D_power_VCC1 D_CW63X_REG_LDO1 -#define D_power_VCC2 D_CW63X_REG_LDO2 -#define D_power_VCC3 D_CW63X_REG_LDO3 -#define D_power_VCC D_CW63X_REG_LDO4 -/* -#define D_power_rf_Rxd D_power_VCC2 /// rf接收模块 -#define D_power_rf_Txd D_power_VCC1 /// rf 发送模块 - -#define D_power_AS D_power_VCC3 /// AS模块 - -#define L2_power_AS_OFF(); L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_AS,D_CW63XX_OFF|D_CW63XX_3V); -#define L2_power_AS_ON(); L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_AS,D_CW63XX_ON|D_CW63XX_3V); -#define L2_power_rf_Rxd_OFF(); L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_rf_Rxd,D_CW63XX_OFF|D_CW63XX_3V); -#define L2_power_rf_Rxd_ON(); L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_rf_Rxd,D_CW63XX_ON|D_CW63XX_3V); - -//#define L2_power_rf_Txd_OFF(); //L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_rf_Txd,D_CW63XX_OFF|D_CW63XX_3V); -//#define L2_power_rf_Txd_ON(); //L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_rf_Txd,D_CW63XX_ON|D_CW63XX_3V); - -/// fixme for the -#define L2_power_rf_Txd_OFF(); //L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_rf_Rxd,D_CW63XX_OFF|D_CW63XX_3V); -#define L2_power_rf_Txd_ON(); //L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_rf_Rxd,D_CW63XX_ON|D_CW63XX_3V); -*/ - -#define L1_cw63xx_init() L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_Charge,0x3F);\ - L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_CW63X_REG_Safety,0x05);///n3.3v baongjin - - -#endif // #ifndef _cw63xx_H - diff --git a/source/bsp/board support/msa300.c b/source/bsp/board support/msa300.c deleted file mode 100644 index 85331b9..0000000 --- a/source/bsp/board support/msa300.c +++ /dev/null @@ -1,75 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2017, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file msa300.c -/// @brief msa300 driver app -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - - - -/******************************************************************************/ -/***************************** Include Files **********************************/ -/******************************************************************************/ -#include "msa300.h" -struct _s_gsens_ s_as1,s_as2; -void L1_msa300_init(void) -{ - /// 上电后是standby 模式 需要设置 - L2_I2C_WriteCmd(D_i2c_addr_AS1,0x11,0x1e); // 进入normal 模式 - L2_I2C_WriteCmd(D_i2c_addr_AS2,0x11,0x1e); // 进入normal 模式 - -} - -void L1_as1_readXYZ(void) -{ -///read data -//S ADD W A REG A -//S ADD R A D1 A D2 A.....DX N P - L2_I2C_ReadReg(D_i2c_addr_AS1,0x02,(unsigned char *)&s_as1,6); -// L2_I2C_ReadReg(D_i2c_addr_AS2,0,(unsigned char *)&s_as2,3); -} - -void L1_as2_readXYZ(void) -{ -///read data -//S ADD W A REG A -//S ADD R A D1 A D2 A.....DX N P - L2_I2C_ReadReg(D_i2c_addr_AS2,0x02,(unsigned char *)&s_as2,6); -} - - - - - - -#if 0 - -L2_I2C_ReadReg(D_i2c_addr_HP303B,0x0d,d,1); - L0_MUART_uc(d[0]); -L2_I2C_ReadReg(D_i2c_addr_AS1,0x05,d,1);// 11 =0f - L0_MUART_uc(d[0]); -L2_I2C_ReadReg(D_i2c_addr_AS2,0x05,d,1);//10 =0f - L0_MUART_uc(d[0]); - - - L1_as1_readXYZ(); - s_p_rf.ucR1 = (U8)(s_as1.x>>8); - s_p_rf.ucR2 = (U8)(s_as1.y>>8); - s_p_rf.ucR3 = (U8)(s_as1.z>>8); -p = (U8*)&s_p_rf; - - L0_MUART_uc(s_p_rf.ucR1); - L0_MUART_uc(s_p_rf.ucR2); - L0_MUART_uc(s_p_rf.ucR3); - L0_MUART_uc(0xc7); - - -#endif - - - diff --git a/source/bsp/board support/msa300.h b/source/bsp/board support/msa300.h deleted file mode 100644 index 34b0714..0000000 --- a/source/bsp/board support/msa300.h +++ /dev/null @@ -1,63 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2017, 传控科技 All rights reserved. -///------------------------------------------------------------------------- -/// @file msa300.c -/// @brief msa300 driver app -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20170122 -/// @note cc_AS_stc01 -////////////////////////////////////////////////////////////////////////////// - - - -#ifndef _MSA300_H -#define _MSA300_H - - -#include "../msp/iic_sim.h" - - - - -/*********************************************************************** - - U51(SDO=1) int2 P33 ----------------U10(SDO=0) int2 P32----------------MCU----USB - 0x4c 0x4e - AS1 AS2 - -**************************************************************************/ - - -#define D_i2c_addr_AS1 0x4c // u51 -#define D_i2c_addr_AS2 0x4e - -/******************************************************************************/ -/***************************** Include Files **********************************/ -/******************************************************************************/ - -// 最高400Khz 1/400 ms 2.5us - -//Symbol Parameter Condition Min Max Unit -//fscl Clock frequency 400 kHz - -struct _s_gsens_ -{//8byte - - U8 d[6]; - // U16 x; - // U16 y; - // U16 z; - -}; -extern struct _s_gsens_ s_as1,s_as2; - -extern void L1_as1_readXYZ(void); -extern void L1_as2_readXYZ(void); -extern void L1_msa300_init(void); - -#endif // #ifndef _MSA300_H - - - diff --git a/source/bsp/bsp_485.h b/source/bsp/bsp_485.h deleted file mode 100644 index 134dfa8..0000000 --- a/source/bsp/bsp_485.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef BSP_485_H -#define BSP_485_H - -// #include "../cpu/STC_stc8a8k.h" -// #include "../cpu/c51_macro.h" -// #include "../clib/bit.h" - -#include "../bsp/bsp_config.h" -#include "../msp/uart0.h" - -//485_RE P33 -//485_DE P32 -#define D_485_TX() P32 = 1;// >750us -#define D_485_RX() P32 = 0; - -extern void L2_485_init(void); -#endif \ No newline at end of file diff --git a/source/bsp/bsp_config.c b/source/bsp/bsp_config.c new file mode 100644 index 0000000..33f0363 --- /dev/null +++ b/source/bsp/bsp_config.c @@ -0,0 +1,84 @@ +#include "bsp_config.h" +#include "../msp/UART0.h" +#include "../msp/eeprom.h" + +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_func.c +/// @brief bsp @ fuctiong ; io澶嶇敤閫夋嫨绛夛紝鍜宑pu鍨嬪彿鎭伅鐩稿叧 +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180308 +/// @note cc_AS_stc02 + +////////////////////////////////////////////////////////////////////////////// +//struct _s_sysclk s_sysclk; + +//========================================================== +//绯荤粺瀹氭椂鍣ㄥ洖璋 +//鍒濆鍖栦负NULL锛宼imer0_isr涓垽鏂负NULL鍒欎笉璋冪敤 +//========================================================== + + +void L0_board_config(void) +{ +#if (PIN_UART0_Rxd_30_Txd_31 == D_PIN_UART0) + BITN_0(P_SW1 ,BITN7);// + BITN_0(P_SW1 ,BITN6);// rxd p3.0 txd p3.1 +#elif (PIN_UART0_Rxd_36_Txd_37 == D_PIN_UART0) + BITN_0(P_SW1 ,BITN7);// + BITN_1(P_SW1 ,BITN6);// rxd p3.6 txd p3.7 +#elif (PIN_UART0_Rxd_16_Txd_17 == D_PIN_UART0) + BITN_1(P_SW1 ,BITN7);// + BITN_0(P_SW1 ,BITN6);// rxd p1.6 txd p1.7 +#elif (PIN_UART0_Rxd_43_Txd_44 == D_PIN_UART0) + BITN_1(P_SW1 ,BITN7);// + BITN_1(P_SW1 ,BITN6);// rxd p4.3 txd p4.4 +#else + BITN_0(P_SW1 ,BITN7);// + BITN_0(P_SW1 ,BITN6);// rxd p3.0 txd p3.1 +#endif + + //uart2 + BITN_0(P_SW2 ,BITN0);// rxd2 p1.0 txd2 p1.1 + //BITN_1(P_SW2 ,BITN0);// rxd2 p4.0 txd2 p4.2 + + //uart3 + //P_SW2 = 0x02; // RXD3_2/P5.0, TXD3_2/P5.1 + + //uart4 + //BITN_1(P_SW2 ,BITN2);// rxd4 p5.2 txd4 p5.3 + //BITN_0(P_SW2 ,BITN2);// rxd4 p0.2 txd4 p0.3 + + //485 RE/DE 閰嶇疆鎺ㄥ畬杈撳嚭 P55 + BITN_0(P5M1,BITN5);BITN_1(P5M0,BITN5); + + //LED + D_stdIO_P1(BITN7); + D_stdIO_P5(BITN4); + + //IO + D_stdIO_P1(BITN0); + D_stdIO_P1(BITN1); + D_stdIO_P1(BITN2); + D_stdIO_P1(BITN6); + D_stdIO_P3(BITN2); + D_stdIO_P3(BITN3); + D_stdIO_P3(BITN4); + D_stdIO_P3(BITN5); + D_stdIO_P3(BITN6); + D_stdIO_P3(BITN7); + + #if (TYPE_WDT_ENABLE == D_WDT_STATUS) + WDT_CONTR = 0x27; //浣胯兘鐪嬮棬鐙,22M鏃堕挓涓嬫孩鍑烘椂闂寸害涓5s锛岃娉ㄦ剰娣诲姞鍠傜嫍绋嬪簭 + #else + WDT_CONTR = 0x00; + #endif + + //Lp0_Sys_timer_extern_handler琚玹imer0涓柇璋冪敤 + //Lp0_Sys_timer_extern_handler = L1_Sys_timer_extern_handler; +} + + diff --git a/source/bsp/bsp_config.h b/source/bsp/bsp_config.h index 83a9f41..c37d08f 100644 --- a/source/bsp/bsp_config.h +++ b/source/bsp/bsp_config.h @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////////////////////// ///@copyright Copyright (c) 2017, 浼犳帶绉戞妧 All rights reserved. ///------------------------------------------------------------------------- -/// @file hard_config.h +/// @file bsp_config.h /// @brief hard config include /// @info FILE FOR HARDWARE SETUP AND SOFTWARE SETUP///FOR EXAMPLE: BAORD ,MCU,IDE /// @info YOU CAN CHANGE OR ADD THE DEFINE IF YOU NEED @@ -9,337 +9,222 @@ /// @info bsp_CONFIG 涓哄叾浠栧ご鏂囦欢鐨勫绁 TYPE_BOARD_xx ///------------------------------------------------------------------------- /// @version 1.1 -/// @author CC +/// @author CC /// @date 20180308 /// @note ////////////////////////////////////////////////////////////////////////////// /// @version 5.1 -/// @author CC +/// @author CC /// @date 20200301 /// @note ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// +///瀛樺偍鍣ㄤ腑鐨勭壒娈婂弬鏁 +///鍏ㄧ悆鍞竴ID鍙 7FF9H~7FFFH BFF9H~BFFFH EFF9H~EFFFH FDF9H~FDFFH 7瀛楄妭 +///鍐呴儴1.19V鍙傝冧俊鍙锋簮 7FF7H~7FF8H BFF7H~BFF8H EFF7H~EFF8H FDF7H~FDF8H 姣紡锛堥珮瀛楄妭鍦ㄥ墠锛 +///32K鎺夌數鍞ら啋瀹氭椂鍣ㄧ殑棰戠巼 7FF5H~7FF6H BFF5H~BFF6H EFF5H~EFF6H FDF5H~FDF6H Hz 锛堥珮瀛楄妭鍦ㄥ墠锛 +///22.1184MHz鐨処RC鍙傛暟锛20M棰戞锛 7FF4H BFF4H EFF4H FDF4H 锛 +///24MHz鐨処RC鍙傛暟锛20M棰戞锛 7FF3H BFF3H EFF3H FDF3H 锛 +///20MHz鐨処RC鍙傛暟锛20M棰戞锛 7FF2H BFF2H EFF2H FDF2H +///鍥轰欢鐗堟湰涓7.3.12U +///浠ュ強鍚庣画鐗堟湰鏈夋晥 +///27MHz鐨処RC鍙傛暟锛35M棰戞锛 7FF1H BFF1H EFF1H FDF1H +///30MHz鐨処RC鍙傛暟锛35M棰戞锛 7FF0H BFF0H EFF0H FDF0H +///33.1776MHz鐨処RC鍙傛暟锛35M棰戞锛 7FEFH BFEFH EFEFH FDEFH +///35MHz鐨処RC鍙傛暟锛35M棰戞锛 7FEEH BFEEH EFEEH FDEEH +///36.864MHz鐨処RC鍙傛暟锛35M棰戞锛 7FEDH BFEDH EFEDH FDEDH +///淇濈暀 7FECH BFECH EFECH FDECH +///淇濈暀 7FEBH BFEBH EFEBH FDEBH +///20M棰戞鐨刅RTRIM鍙傛暟 7FEAH BFEAH EFEAH FDEAH +///35M棰戞鐨刅RTRIM鍙傛暟 7FE9H BFE9H EFE9H FDE9H +////////////////////////////////////////////////////////////////////////// + #ifndef _BSP_CONFIG_H #define _BSP_CONFIG_H -#include - - -#include "bsp_config0.h" - -#define D_version_v 'L' - - -#if 0 - -#define D_leda_OFF(); D_P35_OFF(); -#define D_leda_ON(); D_P35_ON(); -#define D_leda_REV(); D_P35_REV(); -#define D_ledb_OFF(); D_P34_OFF(); -#define D_ledb_ON(); D_P34_ON(); -#define D_ledb_REV(); D_P34_REV(); - -#else -#define D_leda_OFF(); ///D_P35_OFF(); -#define D_leda_ON(); ///D_P35_ON(); -#define D_leda_REV(); ///D_P35_REV(); -#define D_ledb_OFF(); ///D_P34_OFF(); -#define D_ledb_ON(); ///D_P34_ON(); -#define D_ledb_REV(); ///D_P34_REV(); - -#endif - - -#if 0 -#define D_debug_sim -#endif -//#define D_iic_inspect -#define D_open_save_f - -#define TYPE_UASER_BOARD ccSensor_WS_ps5ws //CC_SE_paper_main_m10_smt01.sch - -//STEP 2 TYPE_UASER_BOARD CONFIG >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#if(TYPE_UASER_BOARD == ccSensor_WS_ps5ws)///-------TYPE_UASER_BOARD----------------TYPE_UASER_BOARD---------- -//2.0-5.5 8K 2kram 4k eeprom spi iic 2uart tssop20 stc8f2k08s2 1.2yuan -//2.0-5.5 16K 2kram 4k eeprom spi iic 2uart tssop20 stc8f2k16s2 1.4yuan +#include +#include "../bsp/bsp_config_const.h" +#include "../clib/type.h" +#include "../clib/bit.h" -//1.7-5.5 8K 1kram 3k eeprom spi iic 2uart tssop20 stc8f2k16s2 1.1yuan +//STEP 1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TYPE_UASER_BOARD SELECT +#define TYPE_UASER_BOARD TYPE_BOARD_WEIGH_0B +//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TYPE_UASER_BOARD CONFIG +#if(TYPE_UASER_BOARD == TYPE_BOARD_WEIGH_0B) + #include + #include "../cpu/stc_stc8hxx.h" + #include "../cpu/stc_macro.h" + + //鍩烘湰閰嶇疆(宸ヤ綔棰戠巼銆佹椂閽熴佺湅闂ㄧ嫍銆佸瓧鑺傚簭) + #define TYPE_MCU TYPE_MCU_STC_8H #define TYPE_IDE TYPE_IDE_KEIL + #define D_CPUfamily_type D_CPUfamily_8bits + #define D_sys_MainFre MainFre_22M + #define D_sys_Jiffies TYPE_JIFFIES_10MS + #define D_WDT_STATUS TYPE_WDT_DISABLE //濡傛灉閰嶇疆涓篹nable锛岃鍦╞sp_config.c涓缃畐dt婧㈠嚭鏃堕棿 + #define D_MCU_ENDIAN TYPE_MCU_BIGENDIAN + #define D_CODE_ENCRYPTION_TYPE TYPE_ENCRYPTION_ENABLE //鏄惁浠g爜鍔犲瘑 - #include - #include - #include - #include "../cpu/STC_stc8a8k.h" - -#if 0//// 鐑у啓閰嶇疆 - . 鍐呴儴IRC鎸崱鍣ㄧ殑棰戠巼: 22.128MHz - . 鎺夌數鍞ら啋瀹氭椂鍣ㄧ殑棰戠巼: 35.575KHz - . 鎸崱鍣ㄦ斁澶у鐩婁娇鑳 - . P3.2鍜孭3.3涓庝笅娆′笅杞芥棤鍏 - . 涓婄數澶嶄綅鏃跺鍔犻澶栫殑澶嶄綅寤舵椂 - . 澶嶄綅寮曡剼鐢ㄤ綔鏅欼/O鍙 - . 妫娴嬪埌浣庡帇鏃朵笉澶嶄綅,鑰屼骇鐢熶綆鍘嬩腑鏂 - . 浣庡帇妫娴嬮棬妲涚數鍘 : 2.20 V - . 涓婄數澶嶄綅鏃,纭欢涓嶅惎鍔ㄥ唴閮ㄧ湅闂ㄧ嫍 - . 涓婄數鑷姩鍚姩鍐呴儴鐪嬮棬鐙楁椂鐨勯鍒嗛鏁颁负 : 256 - . 绌洪棽鐘舵佹椂鐪嬮棬鐙楀畾鏃跺櫒鍋滄璁℃暟 - . 鍚姩鐪嬮棬鐙楀悗,杞欢鍙互淇敼鍒嗛鏁,浣嗕笉鑳藉叧闂湅闂ㄧ嫍 - . 涓嬫涓嬭浇鐢ㄦ埛绋嬪簭鏃,灏嗙敤鎴稥EPROM鍖轰竴骞舵摝闄 - . 涓嬫涓嬭浇鐢ㄦ埛绋嬪簭鏃,娌℃湁鐩稿叧鐨勭鍙f帶鍒485 - . 涓嬫涓嬭浇鏃朵笉闇瑕佹牎楠屼笅杞藉彛浠 - . TXD鑴氱洿閫氳緭鍑篟XD鑴氱殑鐢靛钩 - . 鑺墖澶嶄綅鍚,TXD鑴氫负寮烘帹鎸借緭鍑 - . 鑺墖澶嶄綅鍚,P2.0杈撳嚭楂樼數骞 - . 鍐呴儴鍙傝冪數鍘: 1341 mV (鍙傝冭寖鍥: 1270~1410mV) - . 鍐呴儴瀹夋帓娴嬭瘯鏃堕棿: 2018骞1鏈13鏃 + #define D_MCU_NAME "STC8H3K48S4" + //瀛樺偍鍣ㄧ壒娈婂弬鏁板湴鍧閰嶇疆 + #define D_MCU_SPEC_PARAM_CHIPID 0xBFF9 + //...鍏朵粬鍙傛暟 - . 鑺墖鍑哄巶搴忓垪鍙 : F64181C6219784 - 鍗曠墖鏈哄瀷鍙: STC8F2K08S2 - 鍥轰欢鐗堟湰鍙: 7.3.10U + //涓插彛閰嶇疆 + #define D_uart0_BRT BRT_115200 + #define D_uart0_SBIT SBIT_1 + #define D_PIN_UART0 PIN_UART0_Rxd_30_Txd_31 + #define D_uart2_BRT BRT_115200 + #define D_uart3_BRT BRT_115200 + #define D_uart4_BRT BRT_115200 - . 鐢ㄦ埛璁惧畾棰戠巼: 22.118MHz - . 璋冭妭鍚庣殑棰戠巼: 22.128MHz - . 棰戠巼璋冭妭璇樊: 0.043% + //485閰嶇疆 + #define D_UART0_485_TYPE TYPE_485_SLAVER //UART0鍚敤485 + #define D_UART0_485_SLAVER_ID_BROADCAST 0xFF //485浠庢満鎬绘槸鍝嶅簲0xFF娑堟伅 + #define D_UART0_485_SLAVER_ID 0x01 //鏉垮崱浣滀负485浠庢満 slaverId + #define D_UART0_485_TX() P55 = 1; + #define D_UART0_485_RX() P55 = 0; + #define D_UART2_485_TYPE TYPE_485_NONE //UART2涓嶅惎鐢485 + #define D_UART3_485_TYPE TYPE_485_NONE //UART2涓嶅惎鐢485 + #define D_UART4_485_TYPE TYPE_485_NONE //UART2涓嶅惎鐢485 + //MODBUS鍗忚閰嶇疆 + #define D_MODBUS_ENABLE //MODBS鍚敤寮鍏筹紝濡傛灉涓嶄娇鐢╩odbus锛屽彲浠ユ敞閲婃帀鏈 + #define D_MODBUS_SPLIT_ENTRY L1_modbus_split //modbus鍒囧壊鍑芥暟锛屽湪tpc_modbus.c涓疄鐜帮紝渚濇嵁瀹為檯鎯呭喌淇敼 + #define D_MODBUS_REG_MAX_NUM 32 //姣忔鏈澶氳鍙/鍐欏叆鐨勫瘎瀛樺櫒鏁伴噺锛屾澶勭殑鏁伴噺瑕佹敞鎰忓拰 D_tp_handle_x_len 瀵瑰簲 - 鎿嶄綔鎴愬姛 !(2019-02-24 18:16:24) - -璇ュ崟鐗囨満鐨勫姛鑳: 2.0-5v 8kflash 2kram DPTR EEPROM 4K - SPI IIC T0-T4 5涓畾鏃跺櫒 鎺夌數鍞ら啋涓撶敤瀹氭椂鍣 姣旇緝鍣 鍐呴儴鐢靛帇妫娴嬩腑鏂 鐪嬮棬鐙 tssop20 1.2鍏冧汉姘戝竵 -#endif + //澶栬瀹氫箟 + #define LED0 P17 //D4 + #define LED1 P54 //D4 - #include "../cpu/c51_macro.h" -#define D_MCLKO_DIV2 2 -#define D_MCLKO_DIV4 4 -#define D_MCLKO_DIV8 6 -#define D_MCLKO_DIV16 8 -#define D_MCLKO_DIV32 10 -#define D_MCLKO_DIV64 12 - -#define D_CPUfamily_type D_CPUfamily_8bits - - #define D_uart0_BRT BRT_115200 - #define D_uart0_SBIT SBIT_1 -#ifdef D_debug115200 - #if 0 - #define L2_task_L0_uart0_uc(X) L0_uart0_uc(X)/// - #define GC032a_L0_uart0_uc(x) L0_uart0_uc(x)// - #else - - #define L2_task_L0_uart0_uc(X) L0_uart0_uc(X)// - #define GC032a_L0_uart0_uc(x) L0_uart0_uc(x)// - #endif - -#else - #define L2_task_L0_uart0_uc(x) //L0_uart0_uc_debug(x)/////// - #define L2_task_L0_uart0_uchex(x) // L0_uart0_uchex(x)///// - - - #define GC032a_L0_uart0_uc(x) //L0_uart0_uc_debug(x)///// - #define GC032a_L0_uart0_uchex(x) //L0_uart0_uchex(x)//// - - - #define GC032a_L0_uart0_sendArray(x,Y) //L0_uart0_uchex(Y)// - #define GC032a_L0_uart0_us(x) //L0_uart0_us(x)*/ - + //EEP瀛樺偍鍦板潃瀹氫箟 + #define D_EEP_SECTOR_SIZE 0x200 //姣忎釜鎵囧尯0x200==512bytes + #define D_EEP_SECTOR_BLOCK_SIZE 0x40 //鎵囧尯涓瘡涓暟鎹潡0x40==64bytes锛屽彲閫夊糩32,64,128]绛 + #define D_EEP_SECTOR_BLOCK_NUM (D_EEP_SECTOR_SIZE / D_EEP_PARAM_BLOCK_SIZE) //姣忎釜鎵囧尯鏁版嵁鍧楃殑鏁伴噺 + #define D_EEP_BLOCK_FILTER0 0xAA //鎵囧尯涓瘡涓暟鎹潡鐨凢ilter瀛楁鍊 + #define D_EEP_BLOCK_FILTER1 0x55 + //EEP User Defined 鍙傛暟鍖哄瓨鍌ㄩ厤缃 + #define D_EEP_PARAM_IN_SECTOR 1 //eeprom鍙傛暟鍖烘墖鍖哄湴鍧锛屼粠0寮濮 + #define D_EEP_PARAM_IN_BLOCK 0 //eeprom鍙傛暟鍖烘暟鎹潡鍦板潃锛屼粠0寮濮 + #define D_EEP_PARAM_BLOCK_SIZE (D_EEP_SECTOR_BLOCK_SIZE) //鍙傛暟鍖烘瘡涓潡澶у皬锛屽繀椤伙細D_EEP_PARAM_BLOCK_SIZE<=D_EEP_SECTOR_BLOCK_SIZE!!!锛屽洜涓篹eprom.h涓槸鎸夌収D_EEP_SECTOR_BLOCK_SIZE鍒嗛厤鐨刡uf + #define D_EEP_PARAM_BLOCK_NUM (D_EEP_SECTOR_SIZE / D_EEP_PARAM_BLOCK_SIZE) //姣忎釜鎵囧尯鏁版嵁鍧楃殑鏁伴噺 + //EEP 鍔犲瘑鍖哄瓨鍌ㄩ厤缃 + #if(D_CODE_ENCRYPTION_TYPE == TYPE_ENCRYPTION_ENABLE) + #define D_EEP_ENC_IN_SECTOR 0 //eeprom鍔犲瘑鍖烘墖鍖哄湴鍧锛屼粠0寮濮 + #define D_EEP_ENC_IN_BLOCK 0 //eeprom鍔犲瘑鍖烘暟鎹潡鍦板潃锛屼粠0寮濮 + #define D_EEP_ENC_BLOCK_SIZE 0x20 //ENC_BLOCK_SIZE蹇呴』涓庡姞瀵嗙▼搴忎腑鐨凟NC_BLOCK_SIZE鍖归厤锛屾澶勪笉寤鸿淇敼锛屽闇淇敼锛岃鍚屾椂淇敼鍔犲瘑绋嬪簭 + #endif +#elif + xxx #endif -///#define D_sys_MainFre MainFre_16M2 -#define D_sys_MainFre MainFre_11M -///#define D_sys_MainFre MainFre_22M - -#if(MainFre_5M == D_sys_MainFre) - -#define D_Cdelay_200us 20 -#define D_Cdelay_1us 1 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 -#elif(MainFre_22M == D_sys_MainFre) - -#define D_Cdelay_200us 10 -#define D_Cdelay_1us 10 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 -#define D_Cdelay_1ms 36// 500 14ms 360--10ms -#define D_Cdelay_5ms 180// 500 14ms 360--10ms -#define D_Cdelay_15ms 900 -#define D_Cdelay_30ms 2400 - -#define L0_delay_1us() Lc_delay_nop(2) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us -#define L0_delay_10us() Lc_delay_nop(20) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us - - - -// 0x01/#define D_MCLKO_set D_MCLKO_DIV16 //1.389MHz/800ns@MCU.22MHz- -#define D_MCLKO_set D_MCLKO_DIV8 ////2.778MHz/400ns@MCU.22MHz- -///#define D_MCLKO_set D_MCLKO_DIV4 ////5.556MHz/ @MCU.22MHz- -///#define D_MCLKO_set D_MCLKO_DIV2 ////5.556MHz/ @MCU.22MHz- -#define D_0xfa 0x33 -//#define D_0xfa 0x11 - -/******************* -#define D_0xf7 0x01 -#define D_0xf8 0x02 - -#define D_P00x46 0x26////pclk /////cccc201805 hs low polarity -#define D_P00x4c 0x00 -#define D_P00x4d 0x04 -#define D_P00x43 0x10 ///EABLE CrCb fixed en 02 -#define D_P00x4a 0x83 ///div_gate+clk_en 82 +//STEP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>IRQ Config +#if ((TYPE_MCU & TYPE_MCU_VENDOR_MSK) == TYPE_MCU_VENDOR_STC) +#define D_SERVE_INT0 interrupt 0 +#define D_SERVE_TIMER0 interrupt 1 +#define D_SERVE_INT1 interrupt 2 +#define D_SERVE_TIMER1 interrupt 3 +#define D_SERVE_UART interrupt 4 +#define D_SERVE_ADC interrupt 5 +#define D_SERVE_LVD interrupt 6 +#define D_SERVE_PCA interrupt 7 +#define D_SERVE_UART2 interrupt 8 +#define D_SERVE_SPI interrupt 9 +#define D_SERVE_INT2 interrupt 10 +#define D_SERVE_INT3 interrupt 11 +#define D_SERVE_TIMER2 interrupt 12 +#define D_SERVE_INT4 interrupt 16 +#define D_SERVE_UART3 interrupt 17 +#define D_SERVE_UART4 interrupt 18 + +#define D_SERVE_TIMER3 interrupt 19 +#define D_SERVE_TIMER4 interrupt 20 +#define D_SERVE_CMP interrupt 21 +#define D_SERVE_PWM interrupt 22 +#define D_SERVE_PWMFD interrupt 23 +#define D_SERVE_I2C interrupt 24 +#endif +//STEP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Cdelay CONFIG +#if(MainFre_5M == D_sys_MainFre) +#define D_Cdelay_200us 20 +#define D_Cdelay_1us 1 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 +#elif(MainFre_22M == D_sys_MainFre) +#define D_Cdelay_200us 20 +#define D_Cdelay_1us 1 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 +#define D_Cdelay_1us 1 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 +#define L0_delay_1us() Lc_delay_nop(0) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us +#define L0_delay_10us() Lc_delay_nop(4) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us +#define L0_delay_40us() Lc_delay_nop(18) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us #elif(MainFre_27M == D_sys_MainFre) - #define D_Cdelay_200us 20 #define D_Cdelay_1us 1 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 - -#else ///MainFre_11M - +#else ///MainFre_11M #define D_Cdelay_200us 20 -#define D_Cdelay_1us 1 - -#define D_Cdelay_1ms 36// -#define D_Cdelay_5ms 180// -#define D_Cdelay_15ms 900 -#define D_Cdelay_30ms 2400 -#if 0 -#define L0_delay_1us() Lc_delay_nop(5) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us -#define L0_delay_10us() Lc_delay_nop(40) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us -#define L0_delay_40us() Lc_delay_nop(150) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us -#else -#define L0_delay_1us() Lc_delay_nop(0) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us -#define L0_delay_10us() Lc_delay_nop(4) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us //缁鐑樺皾閸c劍绁寸拠鏇犵波閺? -#define L0_delay_40us() Lc_delay_nop(18) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us -#endif - +#define D_Cdelay_1us 1 ////while p21缈昏浆鏃舵祴瀹 500k 2us 涓涓寚浠 +#define L0_delay_1us() Lc_delay_nop(0) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us +#define L0_delay_10us() Lc_delay_nop(4) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us +#define L0_delay_40us() Lc_delay_nop(18) // 5涓猲op() 100ns 50涓猲op() 1us (20)=10us (2)1.5us + //xx #endif//D_sys_MainFre) -/*******>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -1锛 -涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR &= 0xFB; //瀹氭椂鍣2鏃堕挓涓篎osc/12,鍗12T, -2锛 timer0 涓簍ask浣跨敤 -L1_tick_tick -3锛 - -///<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<****/ - -#define D_IO_LED1_OFF() D_P35_OFF() -#define D_IO_LED2_OFF() D_P34_OFF() -#define D_IO_485_RE_OFF() D_P33_OFF() -#define D_IO_485_DE_OFF() D_P32_OFF() -#define D_IO_LED1_INIT() ///D_P35_INIT() -#define D_IO_LED2_INIT() ///D_P34_INIT() -#define D_IO_485_RE_INIT() ///D_P33_INIT() -#define D_IO_485_DE_INIT() ///D_P32_INIT() -#define D_IO_LED1_ON() D_P35_ON() -#define D_IO_LED2_ON() D_P34_ON() -#define D_IO_485_RE_ON() D_P33_ON() -#define D_IO_485_DE_ON() D_P32_ON() - - -////////////////////////////////sim iic config -//鏍规嵁sch鐨勫畾涔 -#define L0_IIC_SIM_INIT() BITN_0(P3M1,5);BITN_0(P3M0,5);\ - BITN_0(P3M1,4);BITN_0(P3M0,4); -///stc鐙湁10 楂橀樆 -#define L0_IIC_SIM_close() BITN_1(P3M1,5);BITN_0(P3M0,5);\ - BITN_1(P3M1,4);BITN_0(P3M0,4); - -#if 10 -#define L0_SDA_ON() D_P34_ON() -#define L0_SDA_OFF() D_P34_OFF() -#define L0_SDA_AT() D_P34_AT() -#define L0_SCL_ON() D_P35_ON() -#define L0_SCL_OFF() D_P35_OFF() -#else - -#define L0_SDA_ON() //D_P34_ON() -#define L0_SDA_OFF() //D_P34_OFF() -#define L0_SDA_AT() //D_P34_AT() -#define L0_SCL_ON() //D_P35_ON() -#define L0_SCL_OFF() //D_P35_OFF() - -#endif - +//STEP 4 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<750us -#define D_txd4_low() P31 = 0 -////涓洪傚簲433 妯″潡鐨勫姛鑰楅棶棰 -////debug鐨勬椂鍊欏垏璁 姝ゅ浼氬涓插彛閫犳垚褰卞搷 low鏈夋晥鐨勬儏鍐典笅鍏朵粬鐨勫彂閫佷笉浼氬ソ浣,闄ら潪浜嬪厛wakeup -#else -#define D_txd4_wakeup() //P31 = 1 // >750us -#define D_txd4_low() //P31 = 0 - - -#endif - -#define DR_who_wakeup22 i2ctxd -///// DR: Define Register DRB:bit of Define Register -#define DR_isr_times SADDR -#define DR_who_wakeup SADEN -#define DRB_who_wakeup_timer0 BITN0 -#define DRB_who_wakeup_action BITN1 -#define DRB_who_wakeup_voice BITN2 -#ifdef doc342343 -BITN_1(DR_who_wakeup, DRB_who_wakeup_timer0); -BITN_0(DR_who_wakeup, DRB_who_wakeup_timer0); +//STEP 5 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - #include - #include +//STEP 6 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - -#include "../clib/Type.h" -#include "../clib/bit.h" -#include "../ctask/task.h" - -#include "../clib/clib.h" -////#define D_debug115200/// - - -//#define D_cameralIndex 0 -//#define D_cameralIndex 1 -//#define D_cameralIndex 2 -#define D_cameralIndex 3 -//#define D_cameralIndex 4 -//#define D_cameralIndex 5 - - -#define SBIT_1 1 //1 stop bit -#define SBIT_2 2 //2 stop bit - - -#define BRT_115200 115200 -#define BRT_19200 19200 -#define BRT_9600 9600 -#define BRT_4800 4800 -#define BRT_SIM 900 -#define MainFre_5M 0 -#define MainFre_11M 1 -#define MainFre_22M 2 -#define MainFre_27M 3 -#define MainFre_24M 4 -#define MainFre_33M 5 -#if 0 - -#define D_leda_OFF(); D_P35_OFF(); -#define D_leda_ON(); D_P35_ON(); -#define D_leda_REV(); D_P35_REV(); -#define D_ledb_OFF(); D_P34_OFF(); -#define D_ledb_ON(); D_P34_ON(); -#define D_ledb_REV(); D_P34_REV(); - -#else -#define D_leda_OFF(); ///D_P35_OFF(); -#define D_leda_ON(); ///D_P35_ON(); -#define D_leda_REV(); ///D_P35_REV(); -#define D_ledb_OFF(); ///D_P34_OFF(); -#define D_ledb_ON(); ///D_P34_ON(); -#define D_ledb_REV(); ///D_P34_REV(); - -#endif - - - -#if 0 -#define D_debug_sim -#endif -//#define D_iic_inspect -#define D_open_save_f - -//>>>>>>>>>>>>>>>>>>>>>>.BORAD TYPE -#define TYPE_BOARD_hhnew 16 -#define TYPE_BOARD_st_sleep04_01 4 -#define TYPE_BOARD_st_sleep03 5 -#define TYPE_BOARD_SMMM_MB_VH032_0E 6 -#define TYPE_BOARD_LPC17xx_ 8 -#define TYPE_BOARD_STM32F_103ZET6_READBULL 1036 -#define TYPE_BOARD_hh_CC_MD_VH05_anyriny_simple_m51 0x0551 -#define TYPE_BOARD_hh_CC_MD_VH06_asMain_m6a7 0x6a7 -#define TYPE_BOARD_TI26_MT01_M178 0x178 //浼氳璁℃椂鍣ㄧ増v TI26_MT01-M178 -#define TYPE_BOARD_stc5as32_WIFIBV01 532 -#define TYPE_BOARD_SHC16LAXXQN32 1632 //SHC16LAXXQN32 - -#define TYPE_BOARD_paper6133_m0a6 0xa6 //绾稿紶浼犳劅鍣 -#define TYPE_BOARD_paper_main_m10 0x10 //绾稿紶浼犳劅鍣2 CC_SE_paper_main_m10_smt01.sch -#define ccSensor_CG_V02_m08_debug 0x0208 //CG浼犳劅鍣2 -#define TYPE_BOARD_cc_Light_Speed0B 0x11b //LR鍏夌數鎰熷櫒2 - -#define TYPE_BOARD_cc_G0A03 0x123 //鍊捐鎰熷櫒2 -#define ccSensor_WS_ps5ws 0x0258 ///绉伴噸浼犳劅鍣 - - -/************************************* -鑺墖鍨嬪彿 : IRC15W207S -HSY037.XA -鍏充簬姝よ姱鐗囩殑閲嶈璇存槑: - 鏈夊畾鏃跺櫒0鍜屽畾鏃跺櫒2 (娉ㄦ剰:鏃犲畾鏃跺櫒1) - 鏈夋瘮杈冨櫒 (鍙綋浣滀竴璺疉DC浣跨敤) -************************/ -///cc_gsm_paper6133_m0a6_debug01 -//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<.BORAD TYPE - - -// BORAD, -// MCU:SHC6601 -// IDE :KEIL -//>>>>>>>>>>>>>>>>>>>>>>mcu TYPE -#define TYPE_MCU_SHC6601 66 -#define TYPE_MCU_STC 51 -#define TYPE_MCU_LPC17xx 3217 -#define TYPE_MCU_STM32 3232 - -#define D_CPUfamily_8bits 8 -#define D_CPUfamily_16bits 16 -#define D_CPUfamily_32bits 32 -//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>IDE TYPE - -#define TYPE_IDE_KEIL 1 -#define TYPE_IDE_MDK 2 -#define TYPE_IDE_IAR 3 - -//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>G-SENSOR TYPE - -#define TYPE_ASENSOR_ADXL362 362 -#define TYPE_ASENSOR_MSA300 362 -#define TYPE_ASENSOR TYPE_ASENSOR_MSA300 -//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>TTSS_tick TYPE - -#define D_TTSS_tick_5ms 5 -#define D_TTSS_tick_10ms 10 -#define D_TTSS_tick_25ms 25 - - -//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - -//#define TYPE_UASER_BOARD TYPE_BOARD_SMMM_MB_VH032_0E -//#define TYPE_UASER_BOARD TYPE_BOARD_stc90c516rd -//#define TYPE_UASER_BOARD TYPE_BOARD_hh_CC_MD_VH06_asMain_m6a7 -//#define TYPE_UASER_BOARD TYPE_BOARD_stc5as32_WIFIBV01 -//#define TYPE_UASER_BOARD TYPE_BOARD_hhnew -//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -//>>>>>>>>>>>>>>>>>>>>>>TTSS_tick TYPE - -#define D_TTSS_tick_5ms 5 -#define D_TTSS_tick_10ms 10 -#define D_TTSS_tick_25ms 25 - - -//<<<<<<<<<<<<<<<<<<<<< +#include "../clib/type.h" +#include "../clib/bit.h" + +//>>>>>>>>>>>>>>>>>>>>>>.BORAD TYPE +#define TYPE_BOARD_hhnew 1 +#define TYPE_BOARD_st_sleep04_01 4 +#define TYPE_BOARD_st_sleep03 5 +#define TYPE_BOARD_SMMM_MB_VH032_0E 6 +#define TYPE_BOARD_LPC17xx_ 8 +#define TYPE_BOARD_STM32F_103ZET6_READBULL 1036 +#define TYPE_BOARD_hh_CC_MD_VH05_anyriny_simple_m51 0x0551 +#define TYPE_BOARD_hh_CC_MD_VH06_asMain_m6a7 0x6a7 +#define TYPE_BOARD_TI26_MT01_M178 0x178 //浼氳璁℃椂鍣ㄧ増v TI26_MT01-M178 +#define TYPE_BOARD_stc5as32_WIFIBV01 532 +#define TYPE_BOARD_SHC16LAXXQN32 1632 //SHC16LAXXQN32 +#define TYPE_BOARD_PAPER6133_M0A6 0xa6 //鎵撳嵃鏈虹焊寮犱紶鎰 +#define TYPE_BOARD_GSM_MAIN_V07 0xa7 //鎵撳嵃鏈鸿繍缁存澘 +#define TYPE_BOARD_ADDA_MAIN_V02 0xa8 //ADDA +#define TYPE_BOARD_433_0A 0xa9 //433 +#define TYPE_BOARD_WEIGH_0B 0xaa //绉伴噸 +//<<<<<<<<<<<<<<<<<<<<<<<<<<<.BORAD TYPE end + +//>>>>>>>>>>>>>>>>>>>>>>MCU TYPE +#define TYPE_MCU_VENDOR_MSK 0xF0 +#define TYPE_MCU_VENDOR_STC 0x10 +#define TYPE_MCU_STC_8A 0x11 +#define TYPE_MCU_STC_8F 0x12 +#define TYPE_MCU_STC_8G 0x13 +#define TYPE_MCU_STC_8H 0x14 + +#define TYPE_MCU_VENDOR_TI 0x60 +#define TYPE_MCU_SHC6601 0x66 +#define TYPE_MCU_LPC17xx 0x67 +#define TYPE_MCU_STM32 0x68 + +#define D_CPUfamily_8bits 8 +#define D_CPUfamily_16bits 16 +#define D_CPUfamily_32bits 32 +//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>IDE TYPE +#define TYPE_IDE_KEIL 1 +#define TYPE_IDE_MDK 2 +#define TYPE_IDE_IAR 3 +//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>SysTimer TYPE +#define TYPE_JIFFIES_5MS 5 +#define TYPE_JIFFIES_10MS 10 +#define TYPE_JIFFIES_25MS 25 +//<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>.WDT TYPE +#define TYPE_WDT_DISABLE 1 +#define TYPE_WDT_ENABLE 2 +//#define WDT_FEED() WDT_CONTR |= 0x10 +//<<<<<<<<<<<<<<<<<<<<<<<<<<<.SysTimer TYPE end + +//>>>>>>>>>>>>>>>>>>>>>>.ByteOrder TYPE +#define TYPE_MCU_BIGENDIAN 1 //澶х瀛楄妭搴 +#define TYPE_MCU_LITENDIAN 2 //灏忕瀛楄妭搴 +//<<<<<<<<<<<<<<<<<<<<<<<<<<<.ByteOrder TYPE end + +//>>>>>>>>>>>>>>>>>>>>>>.浠g爜鍔犲瘑 TYPE +#define TYPE_ENCRYPTION_ENABLE 1 //浠g爜鍔犲瘑 +#define TYPE_ENCRYPTION_DISABLE 2 //浠g爜涓嶅姞瀵 +//<<<<<<<<<<<<<<<<<<<<<<<<<<<.ByteOrder TYPE end + +//>>>>>>>>>>>>>>>>>>>>>>BUADRATE & StopBit +#define SBIT_1 1 //1 stop bit +#define SBIT_2 2 //2 stop bit +#define BRT_115200 115200 +#define BRT_19200 19200 +#define BRT_9600 9600 +#define BRT_4800 4800 +//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>MainFre +#define MainFre_5M 5529600L +#define MainFre_11M 11059200L +#define MainFre_22M 22118400L +#define MainFre_24M 24000000L +#define MainFre_27M 27000000L +//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>UART0 PIN +#define PIN_UART0_Rxd_30_Txd_31 1 +#define PIN_UART0_Rxd_36_Txd_37 2 +#define PIN_UART0_Rxd_16_Txd_17 3 +#define PIN_UART0_Rxd_43_Txd_44 4 +//<<<<<<<<<<<<<<<<<<<<<<<<<<<.UART0 PIN + +//>>>>>>>>>>>>>>>>>>>>>>485 Type +#define TYPE_485_NONE 0 +#define TYPE_485_MASTER 1 +#define TYPE_485_SLAVER 2 +//<<<<<<<<<<<<<<<<<<<<<<485 Type end + +//>>>>>>>>>>>>>>>>>>>>>>G-SENSOR TYPE +#define TYPE_ASENSOR_ADXL362 362 +#define TYPE_ASENSOR_MSA300 300 +#define TYPE_ASENSOR TYPE_ASENSOR_MSA300 +//<<<<<<<<<<<<<<<<<<<<<>>绔彛浣嶅畾涔夛紝鍙慨鏀!!!!!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#include "../cpu/stc_stc8a8k.h" -#include "../cpu/c51_macro.h" #include "../bsp/bsp_config.h" - - -#include "uart0.h" +#include "../msp/uart0.h" extern void L0_id_get(U8 *id); extern void L0_id_get_rom(U8 *id); diff --git a/source/bsp/bsp_cs1232.c b/source/bsp/cs1232.c similarity index 91% rename from source/bsp/bsp_cs1232.c rename to source/bsp/cs1232.c index a498b71..9aa2073 100644 --- a/source/bsp/bsp_cs1232.c +++ b/source/bsp/cs1232.c @@ -14,11 +14,11 @@ /// @note ////////////////////////////////////////////////////////////////////////////// -#include "bsp_cs1232.h" +#include "cs1232.h" TSS_FLOW_ tss_ads; //#define D_ADC_GATHER_Way1 1 - +#if 0 u8 Read_byte_adcIC(void) { u8 i; @@ -40,17 +40,6 @@ u8 Read_byte_adcIC(void) return(rdata); } -void L0_ADS1213_INIT(void) -{ - D_ADS1213_INIT(); - - L0_ADS1213_CH(D_ADCCH_1); - Lc_delay_ms(100);///57ms 寤虹珛鏃堕棿 - - //L0_ADS1213_CH(D_ADCCH_3); - //Lc_delay_ms(100);///57ms 寤虹珛鏃堕棿 -} - void L0_ADS1213_CH(u8 ch) { /// /// SPEED = 1 57--57 ms 纭欢閰嶇疆鎴愰珮鐢靛钩 @@ -99,6 +88,21 @@ void L0_ADS1213_T(u8 onff) } } +#endif +void L0_ADS1213_INIT(void) +{ + D_ADS1213_INIT(); + D_stdIO_P3(BITN2); + D_stdIO_P3(BITN3); + + //L0_ADS1213_CH(D_ADCCH_1); //4涓嫭绔嬭姱鐗囷紝涓嶉渶瑕佸垏鎹 + Lc_delay_ms(100);///57ms 寤虹珛鏃堕棿 + + //L0_ADS1213_CH(D_ADCCH_3); + //Lc_delay_ms(100);///57ms 寤虹珛鏃堕棿 +} + + void L0_2dc_SCLK(vtype ch,vtype onf) { switch (ch) @@ -144,12 +148,10 @@ vtype L0_2dc_DOUT_AT(vtype ch) return r; } - -vtype i; vU32 rdata = 0; - +//浠诲姟璇 vS32 L0_ADS1231_readCH(vtype ch) { - rdata = 0; + vtype i; vU32 rdata = 0; for(i = 0; i < 24; i++) { L0_2dc_SCLK(ch,1);/// D_ADC_SCLK1_ON(); @@ -171,23 +173,15 @@ vS32 L0_ADS1231_readCH(vtype ch) return rdata; } - +//璋冭瘯闃诲璇 vS32 L0_ADS1231_read(U8 ch) { vU32 e = 0;u8 i;vS32 rdata = 0; - while(0 == L0_2dc_DOUT_AT(ch)) - { - if(e ++ > 100000) - { - return 0; - } - } - e = 0; while(1 == L0_2dc_DOUT_AT(ch)) { if(e ++ > 100000) { - return 0; + //return 0; } } for(i = 0; i < 24; i++) @@ -200,6 +194,7 @@ vS32 L0_ADS1231_read(U8 ch) rdata += 1; } } + L0_2dc_SCLK(ch,1); if(rdata & 0x800000) //???位?1??<0?? { rdata |= 0xFF000000; @@ -210,16 +205,16 @@ vS32 L0_ADS1231_read(U8 ch) void L1_ADS1213_main(void) { - U8 ch = D_ADCCH_4; + U8 ch = D_ADCCH_2; while(1) { while(1 == L0_2dc_DOUT_AT(ch)) ; tss_ads.u32_i = L0_ADS1231_readCH(ch); tss_ads.u16_v = (vU16)( tss_ads.u32_i >> 16); - L0_uart0_ushex(tss_ads.u16_v,16); + L0_uart0_ushex(tss_ads.u16_v); tss_ads.u16_v = (vU16)(tss_ads.u32_i & 0x0000ffff); - L0_uart0_ushex(tss_ads.u16_v,16);//Lc_delay_us(500); + L0_uart0_ushex(tss_ads.u16_v);//Lc_delay_us(500); L0_uart0_uc(0x0d); L0_uart0_uc(0x0a); } } diff --git a/source/bsp/bsp_cs1232.h b/source/bsp/cs1232.h similarity index 76% rename from source/bsp/bsp_cs1232.h rename to source/bsp/cs1232.h index f9b375a..bab0040 100644 --- a/source/bsp/bsp_cs1232.h +++ b/source/bsp/cs1232.h @@ -21,16 +21,17 @@ #include "../bsp/bsp_config.h" #include "../msp/uart0.h" +#include "../ctask/task.h" -#define D_ADCCH_T 0 -#define D_ADCCH_1 1 -#define D_ADCCH_2 2 -#define D_ADCCH_3 3 -#define D_ADCCH_4 4 - -#define D_ADCCH_Toff 5 +#define D_ADCCH_1 0 +#define D_ADCCH_2 1 +#define D_ADCCH_3 2 +#define D_ADCCH_4 3 + +#define D_ADCCH_T 8 +#define D_ADCCH_Toff 9 ///鏁板瓧閮ㄥ垎闇瑕佹湁鍥涗釜鏁版嵁杞崲鍛ㄦ湡婊¤冻妯℃嫙杈撳叆淇″彿鐨勫缓绔嬪拰婊ゆ尝鍣ㄧ殑寤虹珛鏃堕棿瑕佹眰銆傝姱 ///鐗囦粠澶栭儴宸垎杈撳叆淇″彿鍒囨崲鍒版俯搴︿紶鎰熷櫒銆佷粠娓╁害浼犳劅鍣ㄥ垏鎹㈠埌澶栭儴宸垎杈撳叆淇″彿锛屾垨閫 @@ -70,65 +71,62 @@ /************** IO DEFINE PIN -P1.2 TEMP 1 -P1.3 SCLK3 2 -P1.4 DOUT1 3 -P1.5 SCLK1 4 -P1.6 DOUT2 5 -P1.7 SCLK2 6 -P5.4 PDWN 7 -P5.5 CS_A0 9 -P1.1 DOUT3 20 -P1.0 LED1 19 -P3.7 GAIN1 18 -P3.6 GAIN0 17 -P3.5 LED2 16 -P3.4 DOUT4 15 -P3.3 SCLK4 14 -P3.2 485_RE 13 +P1.0 DOUT2 1 +P1.6 SCLK2 2 +P1.7 LED1 3 +P5.4 LED2 7 +P5.5 485_RE 9 +P1.1 PDWN 20 +P1.2 GAIN0 19 +P3.7 DOUT3 18 +P3.6 DOUT1 17 +P3.5 SCLK1 16 +P3.4 SCLK3 15 +P3.3 DOUT4 14 +P3.2 SCLK4 13 P3.1 TXD0 12 P3.0 RXD0 11 *****************/ -#define D_ADC_DOUT1_INIT() ///D_P16_INIT() -#define D_ADC_SCLK1_INIT() ///D_P17_INIT() +#define D_ADC_DOUT1_INIT() ///D_P17_INIT() +#define D_ADC_SCLK1_INIT() ///D_P16_INIT() #define D_ADC_CS_A0_INIT() ///D_P55_INIT() -#define D_ADC_DOUT1_AT() D_P14_AT() -#define D_ADC_DOUT1_ON() D_P14_ON() -#define D_ADC_SCLK1_ON() D_P15_ON();D_adc_delay2(); -#define D_ADC_CS_A0_ON() D_P55_ON() -#define D_ADC_DOUT1_OFF() D_P14_OFF() -#define D_ADC_SCLK1_OFF() D_P15_OFF();D_adc_delay(); -#define D_ADC_CS_A0_OFF() D_P55_OFF() +#define D_ADC_DOUT1_AT() D_P36_AT() +#define D_ADC_DOUT1_ON() D_P36_ON() +#define D_ADC_SCLK1_ON() D_P35_ON();D_adc_delay2(); +#define D_ADC_CS_A0_ON() //D_P55_ON() +#define D_ADC_DOUT1_OFF() D_P36_OFF() +#define D_ADC_SCLK1_OFF() D_P35_OFF();D_adc_delay(); +#define D_ADC_CS_A0_OFF() //D_P55_OFF() //#define D_ADC_CS2_A0_ON() D_P13_ON() -#define D_ADC_DOUT2_ON() D_P16_ON() -#define D_ADC_DOUT2_AT() D_P16_AT() -#define D_ADC_SCLK2_ON() D_P17_ON();D_adc_delay2(); +#define D_ADC_DOUT2_ON() D_P10_ON() +#define D_ADC_DOUT2_AT() D_P10_AT() +#define D_ADC_SCLK2_ON() D_P16_ON();D_adc_delay2(); //#define D_ADC_CS2_A0_INIT() ///D_P13_INIT() #define D_ADC_DOUT2_INIT() ///D_P14_IN() ///D_P14_INIT() #define D_ADC_SCLK2_INIT() ///D_P15_INIT() //#define D_ADC_CS2_A0_OFF() D_P13_OFF() -#define D_ADC_DOUT2_OFF() D_P16_OFF() -#define D_ADC_SCLK2_OFF() D_P17_OFF();D_adc_delay(); +#define D_ADC_DOUT2_OFF() D_P10_OFF() +#define D_ADC_SCLK2_OFF() D_P16_OFF();D_adc_delay(); #define D_ADC_DOUT3_INIT() ///D_P11_INIT() #define D_ADC_SCLK3_INIT() ///D_P13_INIT() -#define D_ADC_DOUT3_AT() D_P11_AT() -#define D_ADC_DOUT3_ON() D_P11_ON() -#define D_ADC_SCLK3_ON() D_P13_ON();D_adc_delay2(); -#define D_ADC_DOUT3_OFF() D_P11_OFF() -#define D_ADC_SCLK3_OFF() D_P13_OFF();D_adc_delay(); +#define D_ADC_DOUT3_AT() D_P37_AT() +#define D_ADC_DOUT3_ON() D_P37_ON() +#define D_ADC_SCLK3_ON() D_P34_ON();D_adc_delay2(); +#define D_ADC_DOUT3_OFF() D_P37_OFF() +#define D_ADC_SCLK3_OFF() D_P34_OFF();D_adc_delay(); #define D_ADC_DOUT4_INIT() ///D_P34_INIT() #define D_ADC_SCLK4_INIT() ///D_P33_INIT() -#define D_ADC_DOUT4_AT() D_P34_AT() -#define D_ADC_DOUT4_ON() D_P34_ON() -#define D_ADC_SCLK4_ON() D_P33_ON();D_adc_delay2(); -#define D_ADC_DOUT4_OFF() D_P34_OFF() -#define D_ADC_SCLK4_OFF() D_P33_OFF();D_adc_delay(); +#define D_ADC_DOUT4_AT() D_P33_AT() +#define D_ADC_DOUT4_ON() D_P33_ON() +#define D_ADC_SCLK4_ON() D_P32_ON();D_adc_delay2(); +#define D_ADC_DOUT4_OFF() D_P33_OFF() +#define D_ADC_SCLK4_OFF() D_P32_OFF();D_adc_delay(); @@ -137,14 +135,14 @@ P3.0 RXD0 11 #define D_ADC_TEMP_INIT() ///D_P12_INIT() -#define D_ADC_TEMP_ON() D_P12_ON() -#define D_ADC_TEMP_OFF() D_P12_OFF() +#define D_ADC_TEMP_ON() //D_P12_ON() +#define D_ADC_TEMP_OFF() //D_P12_OFF() #define D_ADC_PDWN_INIT() ///D_P54_INIT() -#define D_ADC_PDWN_OFF() D_P54_OFF() -#define D_ADC_PDWN_ON() D_P54_ON() +#define D_ADC_PDWN_OFF() D_P11_OFF() +#define D_ADC_PDWN_ON() D_P11_ON() @@ -152,15 +150,15 @@ P3.0 RXD0 11 #define D_ADC_GAIN1_INIT() ///D_P37_INIT() #define D_ADC_GAIN0_INIT() ///D_P36_INIT() -#define D_ADC_GAIN1_OFF() D_P37_OFF() -#define D_ADC_GAIN0_OFF() D_P36_OFF() -#define D_ADC_GAIN1_ON() D_P37_ON() -#define D_ADC_GAIN0_ON() D_P36_ON() +#define D_ADC_GAIN1_OFF() //D_P37_OFF() +#define D_ADC_GAIN0_OFF() D_P12_OFF() +#define D_ADC_GAIN1_ON() //D_P37_ON() +#define D_ADC_GAIN0_ON() D_P12_ON() // #define D_ADS1213_GAIN_VAL 1 // #define D_ADS1213_GAIN_VAL 2 -//#define D_ADS1213_GAIN_VAL 64 -#define D_ADS1213_GAIN_VAL 128 +#define D_ADS1213_GAIN_VAL 64 +//#define D_ADS1213_GAIN_VAL 128 #if (D_ADS1213_GAIN_VAL == 128) #define D_ADS1213_INIT() D_ADC_GAIN1_ON();D_ADC_GAIN0_ON();\ @@ -168,6 +166,7 @@ P3.0 RXD0 11 D_ADC_CS_A0_ON();\ D_ADC_SCLK1_OFF();D_ADC_SCLK2_OFF();\ D_ADC_SCLK3_OFF();D_ADC_SCLK4_OFF(); + #elif (D_ADS1213_GAIN_VAL == 64) #define D_ADS1213_INIT() D_ADC_GAIN1_ON();D_ADC_GAIN0_OFF();\ D_ADC_TEMP_OFF();\ diff --git a/source/bsp/bsp_485.c b/source/bsp/rs485.c similarity index 63% rename from source/bsp/bsp_485.c rename to source/bsp/rs485.c index b2efe0e..5c00a48 100644 --- a/source/bsp/bsp_485.c +++ b/source/bsp/rs485.c @@ -1,8 +1,8 @@ -#include "bsp_485.h" +#include "rs485.h" void L2_485_init(void) { //485閰嶇疆寮烘帹鎸借緭鍑 P33 P32 //BITN_0(P3M1,BITN3);BITN_1(P3M0,BITN3); - BITN_0(P3M1,BITN2);BITN_1(P3M0,BITN2); + BITN_0(P5M1,BITN5);BITN_1(P5M0,BITN5); } \ No newline at end of file diff --git a/source/bsp/rs485.h b/source/bsp/rs485.h new file mode 100644 index 0000000..0bdba72 --- /dev/null +++ b/source/bsp/rs485.h @@ -0,0 +1,13 @@ +#ifndef BSP_485_H +#define BSP_485_H + +#include "../bsp/bsp_config.h" +#include "../msp/uart0.h" + +//485_RE P33 +//485_DE P32 +#define D_485_TX() P55 = 1;// >750us +#define D_485_RX() P55 = 0; + +extern void L2_485_init(void); +#endif \ No newline at end of file diff --git a/source/clib/clib.c b/source/clib/clib.c index 078fba9..f7f8633 100644 --- a/source/clib/clib.c +++ b/source/clib/clib.c @@ -307,6 +307,51 @@ vS32 Lc_S32_media(vS32 val[],S16 num) return val[num/2]; } } +U32 Lc_vS32_media(U32 *d, U8 n) +{ + U8 i = 0,j = 0; + U32 h = 0; + if(n == 1) + { + return d[0]; + } + for(i=0;i d[j]) + { + h = d[i]; + d[i] = d[j]; + d[j] = h; + } + } + } + if(n%2 != 0) //濂囨暟 + { + return d[n/2]; + } + else//鍋舵暟 + { + return ((d[n/2] + d[n/2-1])/2); + } +} + + +U32 Lc_vU32_avg(U32 *d, U8 n) +{ + U8 i = 0; + U32 sum = 0; + if(n == 1) + { + return d[0]; + } + for(i=0;i>=1;//鍏堝皢鏁版嵁鍙崇Щ涓浣 + wcrc^=0XA001;//涓庝笂闈㈢殑澶氶」寮忚繘琛屽紓鎴 + } + else//濡傛灉涓嶆槸1锛屽垯鐩存帴绉诲嚭 + { + wcrc>>=1;//鐩存帴绉诲嚭 + } + } + } + temp=wcrc;//crc鐨勫 + CRC[0]=wcrc;//crc鐨勪綆鍏綅 + CRC[1]=wcrc>>8;//crc鐨勯珮鍏綅 +} + +#if 0 +void crc16_irq(unsigned char *CRC,void *dat,unsigned int len) { unsigned char *ptr = (unsigned char *)dat; unsigned long wcrc=0XFFFF;//棰勭疆16浣峜rc瀵勫瓨鍣紝鍒濆煎叏閮ㄤ负1 @@ -389,6 +464,7 @@ void crc16(unsigned char *CRC,void *dat,unsigned int len) CRC[0]=wcrc;//crc鐨勪綆鍏綅 CRC[1]=wcrc>>8;//crc鐨勯珮鍏綅 } +#endif U32 Lc_abs(vS32 a,vS32 b) @@ -414,6 +490,33 @@ void Lc_encrypt_id(U8 *enc_dst, U8 *enc_src, U32 enc_key, U8 src_len) } } +void Lc_encrypt_id1(U8 *enc_dst, U8 *enc_src, U8 enc_key[], U8 src_len) +{ + U8 i; + for(i=0;i 0x31 0x31 0x32 0x32 '1' '1' '2' '2' extern void Lc_hex2ascii(U8 *buf,U16 len,U8 *ascii); -extern void crc16(unsigned char *CRC,void *dat,unsigned int len); +extern void crc16(unsigned char *CRC,void *dat,unsigned int len) /*reentrant*/; +//extern void crc16_irq(unsigned char *CRC,void *dat,unsigned int len); extern int isBigEndianOrder(void); extern U32 ntohl(U32 dat); extern U32 htonl(U32 dat); @@ -105,6 +106,13 @@ extern U16 ntohs(U16 dat); extern U16 htons(U16 dat); extern U32 Lc_abs(vS32 a,vS32 b); extern void Lc_encrypt_id(U8 *enc_dst, U8 *enc_src, U32 enc_key, U8 src_len); +extern void Lc_encrypt_id1(U8 *enc_dst, U8 *enc_src, U8 enc_key[], U8 src_len); +extern int Lc_strlen(char *str); +extern U32 Lc_vU32_avg(U32 *d, U8 n); +extern U32 Lc_vS32_media(U32 *d, U8 n); +extern int Lc_memset(U8 *buf,U8 c,U16 len); + + #endif /* end __UART_H */ /***************************************************************************** diff --git a/source/clib/type.h b/source/clib/type.h index a07b789..439b662 100644 --- a/source/clib/type.h +++ b/source/clib/type.h @@ -80,6 +80,7 @@ #ifndef TRUE #define TRUE (1) #endif + /********************************************************************************************************* 定义与编译器无关的数据类型 *********************************************************************************************************/ @@ -267,7 +268,7 @@ typedef struct #define HIGHT 1 #define LOW 0 - +#if 0 #ifndef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #endif @@ -275,7 +276,7 @@ typedef struct #ifndef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif - +#endif #ifndef ABS #define ABS(a, b) (((a) > (b)) ? ((a) - (b)) : ((b) - (a))) #endif diff --git a/source/cpu/STARTUP.A51 b/source/cpu/STARTUP.A51 index fbe7294..65daedc 100644 --- a/source/cpu/STARTUP.A51 +++ b/source/cpu/STARTUP.A51 @@ -35,7 +35,7 @@ XDATASTART EQU 0 ; ; XDATALEN: XDATA memory size <0x0-0xFFFF> ; The length of XDATA memory in bytes. -XDATALEN EQU 0 +XDATALEN EQU 3072 ; ; PDATASTART: PDATA memory start address <0x0-0xFFFF> ; The absolute start address of PDATA memory diff --git a/source/cpu/STC_stc8a8k.H b/source/cpu/STC_stc8a8k.H index 7c5ea25..79da822 100644 --- a/source/cpu/STC_stc8a8k.H +++ b/source/cpu/STC_stc8a8k.H @@ -2,6 +2,7 @@ #define __STC_stc8a8k_H_ // STC_stc8a8k.h #include + ///////////////////////////////////////////////// //娉ㄦ剰: STC15W4K32S4绯诲垪鐨勮姱鐗,涓婄數鍚庢墍鏈変笌PWM鐩稿叧鐨処O鍙e潎涓 // 楂橀樆鎬,闇灏嗚繖浜涘彛璁剧疆涓哄噯鍙屽悜鍙f垨寮烘帹鎸芥ā寮忔柟鍙甯镐娇鐢 @@ -140,11 +141,7 @@ sfr AUXR = 0x8E; //0000,0000 杈呭姪瀵勫瓨鍣 #define S1ST2 BITN0 //涓插彛1閫夋嫨瀹氭椂鍣1 =0 閫夋嫨瀹氭椂鍣2 =1 -sfr VOCTR = 0xBB; //鐢靛帇鎺у埗瀵勫瓨鍣 -///BITN_1(VOCTR, BITN7) VOCTR -#define D_VOCTR_SCCIN 0x00 -#define D_VOCTR_SCC 0x80 -#define D_VOCTR_SET(X) VOCTR = (X) + sfr AUXR1 = 0xA2; //0000,0000 杈呭姪瀵勫瓨鍣1 sfr P_SW1 = 0xA2; //0000,0000 澶栬绔彛鍒囨崲瀵勫瓨鍣1 @@ -173,7 +170,6 @@ sbit ET1 = IE^3; sbit EX1 = IE^2; sbit ET0 = IE^1; sbit EX0 = IE^0; -sfr IE2 = 0xAF; //0000,0000 涓柇鎺у埗瀵勫瓨鍣2 sfr IP = 0xB8; //0000,0000 涓柇浼樺厛绾у瘎瀛樺櫒 sbit PPCA = IP^7; sbit PLVD = IP^6; @@ -183,6 +179,7 @@ sbit PT1 = IP^3; sbit PX1 = IP^2; sbit PT0 = IP^1; sbit PX0 = IP^0; +sfr IE2 = 0xAF; //0000,0000 涓柇鎺у埗瀵勫瓨鍣2 /// 涓嶅彲浣嶅鍧 #define ET4 BITN6 #define ET3 BITN5 @@ -192,46 +189,9 @@ sbit PX0 = IP^0; #define ESPI BITN1 #define ES2 BITN0 -sfr IPH = 0xB7; //xxxx,xx00 涓柇浼樺厛绾у瘎瀛樺櫒2 -#define PPCAH BITN7 -#define PLVDH BITN6 -#define PADCH BITN5 -#define PSH BITN4 -#define PT1H BITN3 -#define PX1H BITN2 -#define PT0H BITN1 -#define PX0H BITN0 - - - sfr IP2 = 0xB5; //xxxx,xx00 涓柇浼樺厛绾у瘎瀛樺櫒2 -#define IP2_7 BITN7 -#define PI2C BITN6 -#define PCMP BITN5 -#define PX4 BITN4 -#define PPWMFD BITN3 -#define PPWM BITN2 -#define PSPI BITN1 -#define PS2 BITN0 - -sfr IP2H = 0xB6; //xxxx,xx00 涓柇浼樺厛绾у瘎瀛樺櫒2 -#define IP2_7 BITN7 -#define PI2CH BITN6 -#define PCMPH BITN5 -#define PX4H BITN4 -#define PPWMFDH BITN3 -#define PPWMH BITN2 -#define PSPIH BITN1 -#define PS2H BITN0 - - - - - sfr INT_CLKO = 0x8F; //0000,0000 澶栭儴涓柇涓庢椂閽熻緭鍑烘帶鍒跺瘎瀛樺櫒 -#define INT_EX4 BITN6 -#define INT_EX3 BITN5 -#define INT_EX2 BITN4 + //瀹氭椂鍣ㄧ壒娈婂姛鑳藉瘎瀛樺櫒 sfr TCON = 0x88; //0000,0000 T0/T1鎺у埗瀵勫瓨鍣 sbit TF1 = TCON^7; @@ -257,7 +217,6 @@ sfr T2H = 0xD6; //0000,0000 T2楂樺瓧鑺 sfr T2L = 0xD7; //0000,0000 T2浣庡瓧鑺 sfr WKTCL = 0xAA; //0000,0000 鎺夌數鍞ら啋瀹氭椂鍣ㄤ綆瀛楄妭 sfr WKTCH = 0xAB; //0000,0000 鎺夌數鍞ら啋瀹氭椂鍣ㄩ珮瀛楄妭 -sfr16 WKTC = 0xAA; sfr WDT_CONTR = 0xC1; //0000,0000 鐪嬮棬鐙楁帶鍒跺瘎瀛樺櫒 //涓茶鍙g壒娈婂姛鑳藉瘎瀛樺櫒 @@ -421,60 +380,74 @@ sfr PWMCR = 0xfe; -#define I2CTXD (*(unsigned char volatile xdata *)0xfE86)//423@ST8.PDF - -#define I2CRXD (*(unsigned char volatile xdata *)0xfE87)//423@ST8.PDF +///////////////////////////////////////////////// -///------------------------------------- +/* P3 */ +sbit RD = 0xB7; +sbit WR = 0xB6; +sbit T1 = 0xB5; +sbit T0 = 0xB4; +sbit INT1 = 0xB3; +sbit INT0 = 0xB2; +sbit TXD = 0xB1; +sbit RXD = 0xB0; -#define gRccUs01_H (*(unsigned char volatile data *)0xd2) -#define gRccUs01_L (*(unsigned char volatile data *)0xd3) -#define gRccUs01 (*(unsigned short volatile data *)0xd2)//226@ST8.PDF T4H瀹氭椂鍣4鐨勯珮瀛楄妭 D2H T4H瀹氭椂鍣4鐨勪綆瀛楄妭 D3H -#define gRccUs02 (*(unsigned short volatile data *)0xEA)//351@ST8.PDF CCAP0l CCAP1L EAH EBH -#define gRccUs03 (*(unsigned short volatile data *)0xEC)//351@ST8.PDF CCAP0l CCAP1L EAH EBH -//#define gRccUs03 s_task_GC032A.n +#if 0 +/// >>>>> add by cc +//sbit P34=P3^4; //瀹氫箟SDA鏁版嵁绾 +//sbit P35=P3^5; //瀹氫箟SCL鏃堕挓绾 +#define mBIT_1(X,N) X|= (1<>>>> add by cc -#include "../clib/bit.h" +//added by cc #define D_stdIO_P0_ALL() P0M1=0;P0M0=0; #define D_HighI_P0_ALL() P0M1=0;P0M0=0XFF; #define D_HighR_P0_ALL() P0M1=0XFF;P0M0=0; @@ -485,46 +458,48 @@ sfr AUXINTIF = 0xef; #define D_HighR_P1_ALL() P1M1=0XFF;P1M0=0; #define D_OpenD_P1_ALL() P1M1=0XFF;P1M0=0XFF; +//// n: BITN0---BITN7 +#define D_stdIO_P0(BITN) BITN_0(P0M1,BITN);BITN_0(P0M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P0(BITN) BITN_0(P0M1,BITN);BITN_1(P0M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P0(BITN) BITN_1(P0M1,BITN);BITN_0(P0M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P0(BITN) BITN_1(P0M1,BITN);BITN_1(P0M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P1(BITN) BITN_0(P1M1,BITN);BITN_0(P1M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P1(BITN) BITN_0(P1M1,BITN);BITN_1(P1M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P1(BITN) BITN_1(P1M1,BITN);BITN_0(P1M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P1(BITN) BITN_1(P1M1,BITN);BITN_1(P1M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P2(BITN) BITN_0(P2M1,BITN);BITN_0(P2M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P2(BITN) BITN_0(P2M1,BITN);BITN_1(P2M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P2(BITN) BITN_1(P2M1,BITN);BITN_0(P2M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P2(BITN) BITN_1(P2M1,BITN);BITN_1(P2M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P3(BITN) BITN_0(P3M1,BITN);BITN_0(P3M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P3(BITN) BITN_0(P3M1,BITN);BITN_1(P3M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P3(BITN) BITN_1(P3M1,BITN);BITN_0(P3M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P3(BITN) BITN_1(P3M1,BITN);BITN_1(P3M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P4(BITN) BITN_0(P4M1,BITN);BITN_0(P4M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P4(BITN) BITN_0(P4M1,BITN);BITN_1(P4M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P4(BITN) BITN_1(P4M1,BITN);BITN_0(P4M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P4(BITN) BITN_1(P4M1,BITN);BITN_1(P4M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P5(BITN) BITN_0(P5M1,BITN);BITN_0(P5M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P5(BITN) BITN_0(P5M1,BITN);BITN_1(P5M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P5(BITN) BITN_1(P5M1,BITN);BITN_0(P5M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P5(BITN) BITN_1(P5M1,BITN);BITN_1(P5M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P6(BITN) BITN_0(P6M1,BITN);BITN_0(P6M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P6(BITN) BITN_0(P6M1,BITN);BITN_1(P6M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P6(BITN) BITN_1(P6M1,BITN);BITN_0(P6M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P6(BITN) BITN_1(P6M1,BITN);BITN_1(P6M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P7(BITN) BITN_0(P7M1,BITN);BITN_0(P7M0,BITN); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P7(BITN) BITN_0(P7M1,BITN);BITN_1(P7M0,BITN); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P7(BITN) BITN_1(P7M1,BITN);BITN_0(P7M0,BITN); /////////10 楂橀樆 +#define D_OpenD_P7(BITN) BITN_1(P7M1,BITN);BITN_1(P7M0,BITN); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 -#define D_stdIO_P0(n) BITN_0(P0M1,n);BITN_0(P0M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P0(n) BITN_0(P0M1,n);BITN_1(P0M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P0(n) BITN_1(P0M1,n);BITN_0(P0M0,n); /////////10 楂橀樆 -#define D_OpenD_P0(n) BITN_1(P0M1,n);BITN_1(P0M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P1(n) BITN_0(P1M1,n);BITN_0(P1M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P1(n) BITN_0(P1M1,n);BITN_1(P1M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P1(n) BITN_1(P1M1,n);BITN_0(P1M0,n); /////////10 楂橀樆 -#define D_OpenD_P1(n) BITN_1(P1M1,n);BITN_1(P1M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P2(n) BITN_0(P2M1,n);BITN_0(P2M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P2(n) BITN_0(P2M1,n);BITN_1(P2M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P2(n) BITN_1(P2M1,n);BITN_0(P2M0,n); /////////10 楂橀樆 -#define D_OpenD_P2(n) BITN_1(P2M1,n);BITN_1(P2M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P3(n) BITN_0(P3M1,n);BITN_0(P3M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P3(n) BITN_0(P3M1,n);BITN_1(P3M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P3(n) BITN_1(P3M1,n);BITN_0(P3M0,n); /////////10 楂橀樆 -#define D_OpenD_P3(n) BITN_1(P3M1,n);BITN_1(P3M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P4(n) BITN_0(P4M1,n);BITN_0(P4M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P4(n) BITN_0(P4M1,n);BITN_1(P4M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P4(n) BITN_1(P4M1,n);BITN_0(P4M0,n); /////////10 楂橀樆 -#define D_OpenD_P4(n) BITN_1(P4M1,n);BITN_1(P4M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P5(n) BITN_0(P5M1,n);BITN_0(P5M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P5(n) BITN_0(P5M1,n);BITN_1(P5M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P5(n) BITN_1(P5M1,n);BITN_0(P5M0,n); /////////10 楂橀樆 -#define D_OpenD_P5(n) BITN_1(P5M1,n);BITN_1(P5M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P6(n) BITN_0(P6M1,n);BITN_0(P6M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P6(n) BITN_0(P6M1,n);BITN_1(P6M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P6(n) BITN_1(P6M1,n);BITN_0(P6M0,n); /////////10 楂橀樆 -#define D_OpenD_P6(n) BITN_1(P6M1,n);BITN_1(P6M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 - -#define D_stdIO_P7(n) BITN_0(P7M1,n);BITN_0(P7M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS -#define D_HighI_P7(n) BITN_0(P7M1,n);BITN_1(P7M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 -#define D_HighR_P7(n) BITN_1(P7M1,n);BITN_0(P7M0,n); /////////10 楂橀樆 -#define D_OpenD_P7(n) BITN_1(P7M1,n);BITN_1(P7M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 +#endif /*** @@ -533,7 +508,6 @@ sfr AUXINTIF = 0xef; #define P2_conf_in(n) BITN_1(P2M1,n);BITN_0(P2M0,n); #define P2_conf_port(n) BITN_0(P2M1,n);BITN_0(P2M0,n); - #define P3_conf_in(n) BITN_1(P3M1,n);BITN_0(P3M0,n); #define P3_conf_port(n) BITN_0(P3M1,n);BITN_0(P3M0,n); @@ -544,7 +518,6 @@ sfr AUXINTIF = 0xef; -#define NOP() _nop_() #define L0_INT4_OPEN() BITN_1(INT_CLKO, INT_EX4) #define L0_INT4_CLOSE() BITN_0(INT_CLKO, INT_EX4) @@ -614,4 +587,3 @@ sfr AUXINTIF = 0xef; - diff --git a/source/cpu/c51_macro.H b/source/cpu/stc_macro.h similarity index 59% rename from source/cpu/c51_macro.H rename to source/cpu/stc_macro.h index 5bbfab9..8c2f880 100644 --- a/source/cpu/c51_macro.H +++ b/source/cpu/stc_macro.h @@ -17,10 +17,13 @@ -#ifndef __C51_MACRO_H_ -#define __C51_MACRO_H_ +#ifndef __STC_MACRO_H_ +#define __STC_MACRO_H_ #include +#include "../clib/bit.h" + +#define NOP() _nop_() #define D_P07_ON() P07 = 1 #define D_P06_ON() P06 = 1 @@ -290,8 +293,88 @@ #define D_P70_REV() P70 = ~P70 +#define D_stdIO_P0_ALL() P0M1=0;P0M0=0; +#define D_HighI_P0_ALL() P0M1=0;P0M0=0XFF; +#define D_HighR_P0_ALL() P0M1=0XFF;P0M0=0; +#define D_OpenD_P0_ALL() P0M1=0XFF;P0M0=0XFF; + +#define D_stdIO_P1_ALL() P1M1=0;P1M0=0; +#define D_HighI_P1_ALL() P1M1=0;P1M0=0XFF; +#define D_HighR_P1_ALL() P1M1=0XFF;P1M0=0; +#define D_OpenD_P1_ALL() P1M1=0XFF;P1M0=0XFF; + +#define D_stdIO_P2_ALL() P2M1=0;P2M0=0; +#define D_HighI_P2_ALL() P2M1=0;P2M0=0XFF; +#define D_HighR_P2_ALL() P2M1=0XFF;P2M0=0; +#define D_OpenD_P2_ALL() P2M1=0XFF;P2M0=0XFF; + +#define D_stdIO_P3_ALL() P3M1=0;P3M0=0; +#define D_HighI_P3_ALL() P3M1=0;P3M0=0XFF; +#define D_HighR_P3_ALL() P3M1=0XFF;P3M0=0; +#define D_OpenD_P3_ALL() P3M1=0XFF;P3M0=0XFF; + +#define D_stdIO_P4_ALL() P4M1=0;P4M0=0; +#define D_HighI_P4_ALL() P4M1=0;P4M0=0XFF; +#define D_HighR_P4_ALL() P4M1=0XFF;P4M0=0; +#define D_OpenD_P4_ALL() P4M1=0XFF;P4M0=0XFF; + +#define D_stdIO_P5_ALL() P5M1=0;P5M0=0; +#define D_HighI_P5_ALL() P5M1=0;P5M0=0XFF; +#define D_HighR_P5_ALL() P5M1=0XFF;P5M0=0; +#define D_OpenD_P5_ALL() P5M1=0XFF;P5M0=0XFF; + +#define D_stdIO_P6_ALL() P6M1=0;P6M0=0; +#define D_HighI_P6_ALL() P6M1=0;P6M0=0XFF; +#define D_HighR_P6_ALL() P6M1=0XFF;P6M0=0; +#define D_OpenD_P6_ALL() P6M1=0XFF;P6M0=0XFF; + +#define D_stdIO_P7_ALL() P7M1=0;P7M0=0; +#define D_HighI_P7_ALL() P7M1=0;P7M0=0XFF; +#define D_HighR_P7_ALL() P7M1=0XFF;P7M0=0; +#define D_OpenD_P7_ALL() P7M1=0XFF;P7M0=0XFF; + +////Notice: n: BITN0---BITN7 涓嶆槸0-7 eg:D_stdIO_P0(BITN0) +#define D_stdIO_P0(n) BITN_0(P0M1,n);BITN_0(P0M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P0(n) BITN_0(P0M1,n);BITN_1(P0M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P0(n) BITN_1(P0M1,n);BITN_0(P0M0,n); /////////10 楂橀樆 +#define D_OpenD_P0(n) BITN_1(P0M1,n);BITN_1(P0M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P1(n) BITN_0(P1M1,n);BITN_0(P1M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P1(n) BITN_0(P1M1,n);BITN_1(P1M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P1(n) BITN_1(P1M1,n);BITN_0(P1M0,n); /////////10 楂橀樆 +#define D_OpenD_P1(n) BITN_1(P1M1,n);BITN_1(P1M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P2(n) BITN_0(P2M1,n);BITN_0(P2M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P2(n) BITN_0(P2M1,n);BITN_1(P2M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P2(n) BITN_1(P2M1,n);BITN_0(P2M0,n); /////////10 楂橀樆 +#define D_OpenD_P2(n) BITN_1(P2M1,n);BITN_1(P2M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P3(n) BITN_0(P3M1,n);BITN_0(P3M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P3(n) BITN_0(P3M1,n);BITN_1(P3M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P3(n) BITN_1(P3M1,n);BITN_0(P3M0,n); /////////10 楂橀樆 +#define D_OpenD_P3(n) BITN_1(P3M1,n);BITN_1(P3M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P4(n) BITN_0(P4M1,n);BITN_0(P4M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P4(n) BITN_0(P4M1,n);BITN_1(P4M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P4(n) BITN_1(P4M1,n);BITN_0(P4M0,n); /////////10 楂橀樆 +#define D_OpenD_P4(n) BITN_1(P4M1,n);BITN_1(P4M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P5(n) BITN_0(P5M1,n);BITN_0(P5M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P5(n) BITN_0(P5M1,n);BITN_1(P5M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P5(n) BITN_1(P5M1,n);BITN_0(P5M0,n); /////////10 楂橀樆 +#define D_OpenD_P5(n) BITN_1(P5M1,n);BITN_1(P5M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P6(n) BITN_0(P6M1,n);BITN_0(P6M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P6(n) BITN_0(P6M1,n);BITN_1(P6M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P6(n) BITN_1(P6M1,n);BITN_0(P6M0,n); /////////10 楂橀樆 +#define D_OpenD_P6(n) BITN_1(P6M1,n);BITN_1(P6M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P7(n) BITN_0(P7M1,n);BITN_0(P7M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P7(n) BITN_0(P7M1,n);BITN_1(P7M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P7(n) BITN_1(P7M1,n);BITN_0(P7M0,n); /////////10 楂橀樆 +#define D_OpenD_P7(n) BITN_1(P7M1,n);BITN_1(P7M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 -#endif //__C51_MACRO_H_ +#endif //__STC_MACRO_H_ diff --git a/source/cpu/stc_stc15w.h b/source/cpu/stc_stc15w.h new file mode 100644 index 0000000..9c2f57d --- /dev/null +++ b/source/cpu/stc_stc15w.h @@ -0,0 +1,466 @@ +#ifndef __STC15F2K60S2_H_ +#define __STC15F2K60S2_H_ +// stc_stc15w.h +#include + +///////////////////////////////////////////////// +//娉ㄦ剰: STC15W4K32S4绯诲垪鐨勮姱鐗,涓婄數鍚庢墍鏈変笌PWM鐩稿叧鐨処O鍙e潎涓 +// 楂橀樆鎬,闇灏嗚繖浜涘彛璁剧疆涓哄噯鍙屽悜鍙f垨寮烘帹鎸芥ā寮忔柟鍙甯镐娇鐢 +//鐩稿叧IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 +// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 +///////////////////////////////////////////////// + +///////////////////////////////////////////////// + +//鍖呭惈鏈ご鏂囦欢鍚,涓嶇敤鍙﹀鍐嶅寘鍚"REG51.H" + +//鍐呮牳鐗规畩鍔熻兘瀵勫瓨鍣 // 澶嶄綅鍊 鎻忚堪 +sfr ACC = 0xE0; //0000,0000 绱姞鍣ˋccumulator +sfr B = 0xF0; //0000,0000 B瀵勫瓨鍣 +sfr PSW = 0xD0; //0000,0000 绋嬪簭鐘舵佸瓧 +sbit CY = PSW^7; +sbit AC = PSW^6; +sbit F0 = PSW^5; +sbit RS1 = PSW^4; +sbit RS0 = PSW^3; +sbit OV = PSW^2; +sbit P = PSW^0; +sfr SP = 0x81; //0000,0111 鍫嗘爤鎸囬拡 +sfr DPL = 0x82; //0000,0000 鏁版嵁鎸囬拡浣庡瓧鑺 +sfr DPH = 0x83; //0000,0000 鏁版嵁鎸囬拡楂樺瓧鑺 + +//I/O 鍙g壒娈婂姛鑳藉瘎瀛樺櫒 +sfr P0 = 0x80; //1111,1111 绔彛0 +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; +sfr P1 = 0x90; //1111,1111 绔彛1 +sbit P10 = P1^0; +sbit P11 = P1^1; +sbit P12 = P1^2; +sbit P13 = P1^3; +sbit P14 = P1^4; +sbit P15 = P1^5; +sbit P16 = P1^6; +sbit P17 = P1^7; +sfr P2 = 0xA0; //1111,1111 绔彛2 +sbit P20 = P2^0; +sbit P21 = P2^1; +sbit P22 = P2^2; +sbit P23 = P2^3; +sbit P24 = P2^4; +sbit P25 = P2^5; +sbit P26 = P2^6; +sbit P27 = P2^7; +sfr P3 = 0xB0; //1111,1111 绔彛3 +sbit P30 = P3^0; +sbit P31 = P3^1; +sbit P32 = P3^2; +sbit P33 = P3^3; +sbit P34 = P3^4; +sbit P35 = P3^5; +sbit P36 = P3^6; +sbit P37 = P3^7; +sfr P4 = 0xC0; //1111,1111 绔彛4 +sbit P40 = P4^0; +sbit P41 = P4^1; +sbit P42 = P4^2; +sbit P43 = P4^3; +sbit P44 = P4^4; +sbit P45 = P4^5; +sbit P46 = P4^6; +sbit P47 = P4^7; +sfr P5 = 0xC8; //xxxx,1111 绔彛5 +sbit P50 = P5^0; +sbit P51 = P5^1; +sbit P52 = P5^2; +sbit P53 = P5^3; +sbit P54 = P5^4; +sbit P55 = P5^5; +sbit P56 = P5^6; +sbit P57 = P5^7; +sfr P6 = 0xE8; //0000,0000 绔彛6 +sbit P60 = P6^0; +sbit P61 = P6^1; +sbit P62 = P6^2; +sbit P63 = P6^3; +sbit P64 = P6^4; +sbit P65 = P6^5; +sbit P66 = P6^6; +sbit P67 = P6^7; +sfr P7 = 0xF8; //0000,0000 绔彛7 +sbit P70 = P7^0; +sbit P71 = P7^1; +sbit P72 = P7^2; +sbit P73 = P7^3; +sbit P74 = P7^4; +sbit P75 = P7^5; +sbit P76 = P7^6; +sbit P77 = P7^7; +sfr P0M0 = 0x94; //0000,0000 绔彛0妯″紡瀵勫瓨鍣0 +sfr P0M1 = 0x93; //0000,0000 绔彛0妯″紡瀵勫瓨鍣1 +sfr P1M0 = 0x92; //0000,0000 绔彛1妯″紡瀵勫瓨鍣0 +sfr P1M1 = 0x91; //0000,0000 绔彛1妯″紡瀵勫瓨鍣1 +sfr P2M0 = 0x96; //0000,0000 绔彛2妯″紡瀵勫瓨鍣0 +sfr P2M1 = 0x95; //0000,0000 绔彛2妯″紡瀵勫瓨鍣1 +sfr P3M0 = 0xB2; //0000,0000 绔彛3妯″紡瀵勫瓨鍣0 +sfr P3M1 = 0xB1; //0000,0000 绔彛3妯″紡瀵勫瓨鍣1 +sfr P4M0 = 0xB4; //0000,0000 绔彛4妯″紡瀵勫瓨鍣0 +sfr P4M1 = 0xB3; //0000,0000 绔彛4妯″紡瀵勫瓨鍣1 +sfr P5M0 = 0xCA; //0000,0000 绔彛5妯″紡瀵勫瓨鍣0 +sfr P5M1 = 0xC9; //0000,0000 绔彛5妯″紡瀵勫瓨鍣1 +sfr P6M0 = 0xCC; //0000,0000 绔彛6妯″紡瀵勫瓨鍣0 +sfr P6M1 = 0xCB; //0000,0000 绔彛6妯″紡瀵勫瓨鍣1 +sfr P7M0 = 0xE2; //0000,0000 绔彛7妯″紡瀵勫瓨鍣0 +sfr P7M1 = 0xE1; //0000,0000 绔彛7妯″紡瀵勫瓨鍣1 + +//绯荤粺绠$悊鐗规畩鍔熻兘瀵勫瓨鍣 +sfr PCON = 0x87; //0001,0000 鐢垫簮鎺у埗瀵勫瓨鍣 +sfr AUXR = 0x8E; //0000,0000 杈呭姪瀵勫瓨鍣 + +#define TOx12 BITN7 +#define T1x12 BITN6 +#define UART_M0x6 BITN5 //涓插彛1妯″紡0閫熷害 =0 12鍊 = 1 涓ゅ +#define T2R BITN4 //瀹氭椂鍣2 杩愯 =1 +#define T2_C BITN3 //瀹氭椂鍣/璁℃暟鍣ㄩ夋嫨 +#define T2x12 BITN2 +#define EXTRAM BITN1 +#define S1ST2 BITN0 //涓插彛1閫夋嫨瀹氭椂鍣1 =0 閫夋嫨瀹氭椂鍣2 =1 + + + + +sfr AUXR1 = 0xA2; //0000,0000 杈呭姪瀵勫瓨鍣1 +sfr P_SW1 = 0xA2; //0000,0000 澶栬绔彛鍒囨崲瀵勫瓨鍣1 +sfr CLK_DIV = 0x97; //0000,0000 鏃堕挓鍒嗛鎺у埗瀵勫瓨鍣 +sfr BUS_SPEED = 0xA1; //xx10,x011 鎬荤嚎閫熷害鎺у埗瀵勫瓨鍣 +sfr P1ASF = 0x9D; //0000,0000 绔彛1妯℃嫙鍔熻兘閰嶇疆瀵勫瓨鍣 +sfr P_SW2 = 0xBA; //0xxx,x000 澶栬绔彛鍒囨崲瀵勫瓨鍣 + +//涓柇鐗规畩鍔熻兘瀵勫瓨鍣 +sfr IE = 0xA8; //0000,0000 涓柇鎺у埗瀵勫瓨鍣 +sbit EA = IE^7; +sbit ELVD = IE^6; +sbit EADC = IE^5; +sbit ES = IE^4; +sbit ET1 = IE^3; +sbit EX1 = IE^2; +sbit ET0 = IE^1; +sbit EX0 = IE^0; +sfr IP = 0xB8; //0000,0000 涓柇浼樺厛绾у瘎瀛樺櫒 +sbit PPCA = IP^7; +sbit PLVD = IP^6; +sbit PADC = IP^5; +sbit PS = IP^4; +sbit PT1 = IP^3; +sbit PX1 = IP^2; +sbit PT0 = IP^1; +sbit PX0 = IP^0; +sfr IE2 = 0xAF; //0000,0000 涓柇鎺у埗瀵勫瓨鍣2 +/// 涓嶅彲浣嶅鍧 +#define ET4 BITN6 +#define ET3 BITN5 +#define ES4 BITN4 +#define ES3 BITN3 +#define ET2 BITN2 +#define ESPI BITN1 +#define ES2 BITN0 + +sfr IP2 = 0xB5; //xxxx,xx00 涓柇浼樺厛绾у瘎瀛樺櫒2 +sfr INT_CLKO = 0x8F; //0000,0000 澶栭儴涓柇涓庢椂閽熻緭鍑烘帶鍒跺瘎瀛樺櫒 + +//瀹氭椂鍣ㄧ壒娈婂姛鑳藉瘎瀛樺櫒 +sfr TCON = 0x88; //0000,0000 T0/T1鎺у埗瀵勫瓨鍣 +sbit TF1 = TCON^7; +sbit TR1 = TCON^6; +sbit TF0 = TCON^5; +sbit TR0 = TCON^4; +sbit IE1 = TCON^3; +sbit IT1 = TCON^2; +sbit IE0 = TCON^1; +sbit IT0 = TCON^0; +sfr TMOD = 0x89; //0000,0000 T0/T1妯″紡瀵勫瓨鍣 +sfr TL0 = 0x8A; //0000,0000 T0浣庡瓧鑺 +sfr TL1 = 0x8B; //0000,0000 T1浣庡瓧鑺 +sfr TH0 = 0x8C; //0000,0000 T0楂樺瓧鑺 +sfr TH1 = 0x8D; //0000,0000 T1楂樺瓧鑺 +sfr T4T3M = 0xD1; //0000,0000 T3/T4妯″紡瀵勫瓨鍣 +sfr T3T4M = 0xD1; //0000,0000 T3/T4妯″紡瀵勫瓨鍣 +sfr T4H = 0xD2; //0000,0000 T4楂樺瓧鑺 +sfr T4L = 0xD3; //0000,0000 T4浣庡瓧鑺 +sfr T3H = 0xD4; //0000,0000 T3楂樺瓧鑺 +sfr T3L = 0xD5; //0000,0000 T3浣庡瓧鑺 +sfr T2H = 0xD6; //0000,0000 T2楂樺瓧鑺 +sfr T2L = 0xD7; //0000,0000 T2浣庡瓧鑺 +sfr WKTCL = 0xAA; //0000,0000 鎺夌數鍞ら啋瀹氭椂鍣ㄤ綆瀛楄妭 +sfr WKTCH = 0xAB; //0000,0000 鎺夌數鍞ら啋瀹氭椂鍣ㄩ珮瀛楄妭 +sfr WDT_CONTR = 0xC1; //0000,0000 鐪嬮棬鐙楁帶鍒跺瘎瀛樺櫒 + +//涓茶鍙g壒娈婂姛鑳藉瘎瀛樺櫒 +sfr SCON = 0x98; //0000,0000 涓插彛1鎺у埗瀵勫瓨鍣 +sbit SM0 = SCON^7; +sbit SM1 = SCON^6; +sbit SM2 = SCON^5; +sbit REN = SCON^4; +sbit TB8 = SCON^3; +sbit RB8 = SCON^2; +sbit TI = SCON^1; +sbit RI = SCON^0; +//sfr SBUF = 0x99; //xxxx,xxxx 涓插彛1鏁版嵁瀵勫瓨鍣 +//sfr S2CON = 0x9A; //0000,0000 涓插彛2鎺у埗瀵勫瓨鍣 +//sfr S2BUF = 0x9B; //xxxx,xxxx 涓插彛2鏁版嵁瀵勫瓨鍣 +//sfr SADDR = 0xA9; //0000,0000 浠庢満鍦板潃瀵勫瓨鍣 +//sfr SADEN = 0xB9; //0000,0000 浠庢満鍦板潃灞忚斀瀵勫瓨鍣 + +sfr SBUF = 0x99; //Serial Data Buffer +sfr SBUF0 = 0x99; //Serial Data Buffer xxxx,xxxx +sfr SADEN = 0xB9; //Slave Address Mask 0000,0000 +sfr SADDR = 0xA9; //Slave Address 0000,0000 +//----------------------------------- +// 7 6 5 4 3 2 1 0 Reset Value +sfr S2CON = 0x9A; //S2 Control S2SM0 S2SM1 S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI 00000000B +#define S2SM0 BITN7 +#define S2ST4 BITN6 +#define S2SM2 BITN5 +#define S2REN BITN4 +#define S2TB8 BITN3 +#define S2RB8 BITN2 +#define S2TI BITN1 +#define S2RI BITN0 + +sfr S2BUF = 0x9B; //S2 Serial Buffer xxxx,xxxx +//sfr BRT = 0x9C; //S2 Baud-Rate Timer 0000,0000 + +//--------------------------------------------------------------- +sfr S3CON = 0xAC; //0000,0000 涓插彛3鎺у埗瀵勫瓨鍣 +#define S3SM0 BITN7 +#define S3ST4 BITN6 +#define S3SM2 BITN5 +#define S3REN BITN4 +#define S3TB8 BITN3 +#define S3RB8 BITN2 +#define S3TI BITN1 +#define S3RI BITN0 + +sfr S3BUF = 0xAD; //xxxx,xxxx 涓插彛3鏁版嵁瀵勫瓨鍣 +//--------------------------------------------------------------- +sfr S4CON = 0x84; //0000,0000 涓插彛4鎺у埗瀵勫瓨鍣 +#define S4SM0 BITN7 +#define S4ST4 BITN6 +#define S4SM2 BITN5 +#define S4REN BITN4 +#define S4TB8 BITN3 +#define S4RB8 BITN2 +#define S4TI BITN1 +#define S4RI BITN0 + +sfr S4BUF = 0x85; //xxxx,xxxx 涓插彛4鏁版嵁瀵勫瓨鍣 + +//ADC 鐗规畩鍔熻兘瀵勫瓨鍣 +sfr ADC_CONTR = 0xBC; //0000,0000 A/D杞崲鎺у埗瀵勫瓨鍣 +sfr ADC_RES = 0xBD; //0000,0000 A/D杞崲缁撴灉楂8浣 +sfr ADC_RESL = 0xBE; //0000,0000 A/D杞崲缁撴灉浣2浣 + +//SPI 鐗规畩鍔熻兘瀵勫瓨鍣 +sfr SPSTAT = 0xCD; //00xx,xxxx SPI鐘舵佸瘎瀛樺櫒 +sfr SPCTL = 0xCE; //0000,0100 SPI鎺у埗瀵勫瓨鍣 +sfr SPDAT = 0xCF; //0000,0000 SPI鏁版嵁瀵勫瓨鍣 + +//IAP/ISP 鐗规畩鍔熻兘瀵勫瓨鍣 +sfr IAP_DATA = 0xC2; //0000,0000 EEPROM鏁版嵁瀵勫瓨鍣 +sfr IAP_ADDRH = 0xC3; //0000,0000 EEPROM鍦板潃楂樺瓧鑺 +sfr IAP_ADDRL = 0xC4; //0000,0000 EEPROM鍦板潃绗瓧鑺 +sfr IAP_CMD = 0xC5; //xxxx,xx00 EEPROM鍛戒护瀵勫瓨鍣 +sfr IAP_TRIG = 0xC6; //0000,0000 EEPRPM鍛戒护瑙﹀彂瀵勫瓨鍣 +sfr IAP_CONTR = 0xC7; //0000,x000 EEPROM鎺у埗瀵勫瓨鍣 + +//PCA/PWM 鐗规畩鍔熻兘瀵勫瓨鍣 +sfr CCON = 0xD8; //00xx,xx00 PCA鎺у埗瀵勫瓨鍣 +sbit CF = CCON^7; +sbit CR = CCON^6; +sbit CCF2 = CCON^2; +sbit CCF1 = CCON^1; +sbit CCF0 = CCON^0; +sfr CMOD = 0xD9; //0xxx,x000 PCA 宸ヤ綔妯″紡瀵勫瓨鍣 +sfr CL = 0xE9; //0000,0000 PCA璁℃暟鍣ㄤ綆瀛楄妭 +sfr CH = 0xF9; //0000,0000 PCA璁℃暟鍣ㄩ珮瀛楄妭 +sfr CCAPM0 = 0xDA; //0000,0000 PCA妯″潡0鐨凱WM瀵勫瓨鍣 +sfr CCAPM1 = 0xDB; //0000,0000 PCA妯″潡1鐨凱WM瀵勫瓨鍣 +sfr CCAPM2 = 0xDC; //0000,0000 PCA妯″潡2鐨凱WM 瀵勫瓨鍣 +sfr CCAP0L = 0xEA; //0000,0000 PCA妯″潡0鐨勬崟鎹/姣旇緝瀵勫瓨鍣ㄤ綆瀛楄妭 +sfr CCAP1L = 0xEB; //0000,0000 PCA妯″潡1鐨勬崟鎹/姣旇緝瀵勫瓨鍣ㄤ綆瀛楄妭 +sfr CCAP2L = 0xEC; //0000,0000 PCA妯″潡2鐨勬崟鎹/姣旇緝瀵勫瓨鍣ㄤ綆瀛楄妭 +sfr PCA_PWM0 = 0xF2; //xxxx,xx00 PCA妯″潡0鐨凱WM瀵勫瓨鍣 +sfr PCA_PWM1 = 0xF3; //xxxx,xx00 PCA妯″潡1鐨凱WM瀵勫瓨鍣 +sfr PCA_PWM2 = 0xF4; //xxxx,xx00 PCA妯″潡1鐨凱WM瀵勫瓨鍣 +sfr CCAP0H = 0xFA; //0000,0000 PCA妯″潡0鐨勬崟鎹/姣旇緝瀵勫瓨鍣ㄩ珮瀛楄妭 +sfr CCAP1H = 0xFB; //0000,0000 PCA妯″潡1鐨勬崟鎹/姣旇緝瀵勫瓨鍣ㄩ珮瀛楄妭 +sfr CCAP2H = 0xFC; //0000,0000 PCA妯″潡2鐨勬崟鎹/姣旇緝瀵勫瓨鍣ㄩ珮瀛楄妭 + +//姣旇緝鍣ㄧ壒娈婂姛鑳藉瘎瀛樺櫒 +sfr CMPCR1 = 0xE6; //0000,0000 姣旇緝鍣ㄦ帶鍒跺瘎瀛樺櫒1 +sfr CMPCR2 = 0xE7; //0000,0000 姣旇緝鍣ㄦ帶鍒跺瘎瀛樺櫒2 + +//澧炲己鍨婸WM娉㈠舰鍙戠敓鍣ㄧ壒娈婂姛鑳藉瘎瀛樺櫒 +sfr PWMCFG = 0xf1; //x000,0000 PWM閰嶇疆瀵勫瓨鍣 +sfr PWMCR = 0xf5; //0000,0000 PWM鎺у埗瀵勫瓨鍣 +sfr PWMIF = 0xf6; //x000,0000 PWM涓柇鏍囧織瀵勫瓨鍣 +sfr PWMFDCR = 0xf7; //xx00,0000 PWM澶栭儴寮傚父妫娴嬫帶鍒跺瘎瀛樺櫒 + +//濡備笅鐗规畩鍔熻兘瀵勫瓨鍣ㄤ綅浜庢墿灞昍AM鍖哄煙 +//璁块棶杩欎簺瀵勫瓨鍣,闇鍏堝皢P_SW2鐨凚IT7璁剧疆涓1,鎵嶅彲姝e父璇诲啓 +#define PWMC (*(unsigned int volatile xdata *)0xfff0) +#define PWMCH (*(unsigned char volatile xdata *)0xfff0) +#define PWMCL (*(unsigned char volatile xdata *)0xfff1) +#define PWMCKS (*(unsigned char volatile xdata *)0xfff2) +#define PWM2T1 (*(unsigned int volatile xdata *)0xff00) +#define PWM2T1H (*(unsigned char volatile xdata *)0xff00) +#define PWM2T1L (*(unsigned char volatile xdata *)0xff01) +#define PWM2T2 (*(unsigned int volatile xdata *)0xff02) +#define PWM2T2H (*(unsigned char volatile xdata *)0xff02) +#define PWM2T2L (*(unsigned char volatile xdata *)0xff03) +#define PWM2CR (*(unsigned char volatile xdata *)0xff04) +#define PWM3T1 (*(unsigned int volatile xdata *)0xff10) +#define PWM3T1H (*(unsigned char volatile xdata *)0xff10) +#define PWM3T1L (*(unsigned char volatile xdata *)0xff11) +#define PWM3T2 (*(unsigned int volatile xdata *)0xff12) +#define PWM3T2H (*(unsigned char volatile xdata *)0xff12) +#define PWM3T2L (*(unsigned char volatile xdata *)0xff13) +#define PWM3CR (*(unsigned char volatile xdata *)0xff14) +#define PWM4T1 (*(unsigned int volatile xdata *)0xff20) +#define PWM4T1H (*(unsigned char volatile xdata *)0xff20) +#define PWM4T1L (*(unsigned char volatile xdata *)0xff21) +#define PWM4T2 (*(unsigned int volatile xdata *)0xff22) +#define PWM4T2H (*(unsigned char volatile xdata *)0xff22) +#define PWM4T2L (*(unsigned char volatile xdata *)0xff23) +#define PWM4CR (*(unsigned char volatile xdata *)0xff24) +#define PWM5T1 (*(unsigned int volatile xdata *)0xff30) +#define PWM5T1H (*(unsigned char volatile xdata *)0xff30) +#define PWM5T1L (*(unsigned char volatile xdata *)0xff31) +#define PWM5T2 (*(unsigned int volatile xdata *)0xff32) +#define PWM5T2H (*(unsigned char volatile xdata *)0xff32) +#define PWM5T2L (*(unsigned char volatile xdata *)0xff33) +#define PWM5CR (*(unsigned char volatile xdata *)0xff34) +#define PWM6T1 (*(unsigned int volatile xdata *)0xff40) +#define PWM6T1H (*(unsigned char volatile xdata *)0xff40) +#define PWM6T1L (*(unsigned char volatile xdata *)0xff41) +#define PWM6T2 (*(unsigned int volatile xdata *)0xff42) +#define PWM6T2H (*(unsigned char volatile xdata *)0xff42) +#define PWM6T2L (*(unsigned char volatile xdata *)0xff43) +#define PWM6CR (*(unsigned char volatile xdata *)0xff44) +#define PWM7T1 (*(unsigned int volatile xdata *)0xff50) +#define PWM7T1H (*(unsigned char volatile xdata *)0xff50) +#define PWM7T1L (*(unsigned char volatile xdata *)0xff51) +#define PWM7T2 (*(unsigned int volatile xdata *)0xff52) +#define PWM7T2H (*(unsigned char volatile xdata *)0xff52) +#define PWM7T2L (*(unsigned char volatile xdata *)0xff53) +#define PWM7CR (*(unsigned char volatile xdata *)0xff54) + +///////////////////////////////////////////////// + + + +/* P3 */ +sbit RD = 0xB7; +sbit WR = 0xB6; +sbit T1 = 0xB5; +sbit T0 = 0xB4; +sbit INT1 = 0xB3; +sbit INT0 = 0xB2; +sbit TXD = 0xB1; +sbit RXD = 0xB0; + + + + + +/// >>>>> add by cc + + +//sbit P34=P3^4; //瀹氫箟SDA鏁版嵁绾 +//sbit P35=P3^5; //瀹氫箟SCL鏃堕挓绾 +#define mBIT_1(X,N) X|= (1< +///////////////////////////////////////////////// +//娉ㄦ剰: STC15W4K32S4绯诲垪鐨勮姱鐗,涓婄數鍚庢墍鏈変笌PWM鐩稿叧鐨処O鍙e潎涓 +// 楂橀樆鎬,闇灏嗚繖浜涘彛璁剧疆涓哄噯鍙屽悜鍙f垨寮烘帹鎸芥ā寮忔柟鍙甯镐娇鐢 +//鐩稿叧IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 +// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 +///////////////////////////////////////////////// + +///////////////////////////////////////////////// + +//鍖呭惈鏈ご鏂囦欢鍚,涓嶇敤鍙﹀鍐嶅寘鍚"REG51.H" + + +///////////////////////////////////////////////// + +//鍖呭惈鏈ご鏂囦欢鍚,涓嶇敤鍙﹀鍐嶅寘鍚"REG51.H" + +sfr P0 = 0x80; +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; +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr S4CON = 0x84; +sfr S4BUF = 0x85; +sfr PCON = 0x87; +sfr TCON = 0x88; +sbit TF1 = TCON^7; +sbit TR1 = TCON^6; +sbit TF0 = TCON^5; +sbit TR0 = TCON^4; +sbit IE1 = TCON^3; +sbit IT1 = TCON^2; +sbit IE0 = TCON^1; +sbit IT0 = TCON^0; +sfr TMOD = 0x89; +sfr TL0 = 0x8A; +sfr TL1 = 0x8B; +sfr TH0 = 0x8C; +sfr TH1 = 0x8D; +sfr AUXR = 0x8E; +sfr INTCLKO = 0x8F; +sfr P1 = 0x90; +sbit P10 = P1^0; +sbit P11 = P1^1; +sbit P12 = P1^2; +sbit P13 = P1^3; +sbit P14 = P1^4; +sbit P15 = P1^5; +sbit P16 = P1^6; +sbit P17 = P1^7; +sfr P1M1 = 0x91; +sfr P1M0 = 0x92; +sfr P0M1 = 0x93; +sfr P0M0 = 0x94; +sfr P2M1 = 0x95; +sfr P2M0 = 0x96; +sfr SCON = 0x98; +sbit SM0 = SCON^7; +sbit SM1 = SCON^6; +sbit SM2 = SCON^5; +sbit REN = SCON^4; +sbit TB8 = SCON^3; +sbit RB8 = SCON^2; +sbit TI = SCON^1; +sbit RI = SCON^0; +sfr SBUF = 0x99; +sfr S2CON = 0x9A; +sfr S2BUF = 0x9B; +sfr IRCBAND = 0x9D; +sfr LIRTRIM = 0x9E; +sfr IRTRIM = 0x9F; +sfr P2 = 0xA0; +sbit P20 = P2^0; +sbit P21 = P2^1; +sbit P22 = P2^2; +sbit P23 = P2^3; +sbit P24 = P2^4; +sbit P25 = P2^5; +sbit P26 = P2^6; +sbit P27 = P2^7; +sfr P_SW1 = 0xA2; +sfr IE = 0xA8; +sbit EA = IE^7; +sbit ELVD = IE^6; +sbit EADC = IE^5; +sbit ES = IE^4; +sbit ET1 = IE^3; +sbit EX1 = IE^2; +sbit ET0 = IE^1; +sbit EX0 = IE^0; +sfr SADDR = 0xA9; +sfr WKTCL = 0xAA; +sfr WKTCH = 0xAB; +sfr S3CON = 0xAC; +sfr S3BUF = 0xAD; +sfr TA = 0xAE; +sfr IE2 = 0xAF; +sfr P3 = 0xB0; +sbit P30 = P3^0; +sbit P31 = P3^1; +sbit P32 = P3^2; +sbit P33 = P3^3; +sbit P34 = P3^4; +sbit P35 = P3^5; +sbit P36 = P3^6; +sbit P37 = P3^7; +sfr P3M1 = 0xB1; +sfr P3M0 = 0xB2; +sfr P4M1 = 0xB3; +sfr P4M0 = 0xB4; +sfr IP2 = 0xB5; +sfr IP2H = 0xB6; +sfr IPH = 0xB7; +sfr IP = 0xB8; +sbit PPCA = IP^7; +sbit PLVD = IP^6; +sbit PADC = IP^5; +sbit PS = IP^4; +sbit PT1 = IP^3; +sbit PX1 = IP^2; +sbit PT0 = IP^1; +sbit PX0 = IP^0; +sfr SADEN = 0xB9; +sfr P_SW2 = 0xBA; +sfr ADC_CONTR = 0xBC; +sfr ADC_RES = 0xBD; +sfr ADC_RESL = 0xBE; +sfr P4 = 0xC0; +sbit P40 = P4^0; +sbit P41 = P4^1; +sbit P42 = P4^2; +sbit P43 = P4^3; +sbit P44 = P4^4; +sbit P45 = P4^5; +sbit P46 = P4^6; +sbit P47 = P4^7; +sfr WDT_CONTR = 0xC1; +sfr IAP_DATA = 0xC2; +sfr IAP_ADDRH = 0xC3; +sfr IAP_ADDRL = 0xC4; +sfr IAP_CMD = 0xC5; +sfr IAP_TRIG = 0xC6; +sfr IAP_CONTR = 0xC7; +sfr P5 = 0xC8; +sbit P50 = P5^0; +sbit P51 = P5^1; +sbit P52 = P5^2; +sbit P53 = P5^3; +sbit P54 = P5^4; +sbit P55 = P5^5; +sbit P56 = P5^6; +sbit P57 = P5^7; +sfr P5M1 = 0xC9; +sfr P5M0 = 0xCA; +sfr SPSTAT = 0xCD; +sfr SPCTL = 0xCE; +sfr SPDAT = 0xCF; +sfr PSW = 0xD0; +sbit CY = PSW^7; +sbit AC = PSW^6; +sbit F0 = PSW^5; +sbit RS1 = PSW^4; +sbit RS0 = PSW^3; +sbit OV = PSW^2; +sbit P = PSW^0; +sfr T4T3M = 0xD1; +sfr T4H = 0xD2; +sfr T4L = 0xD3; +sfr T3H = 0xD4; +sfr T3L = 0xD5; +sfr T2H = 0xD6; +sfr T2L = 0xD7; +sfr CCON = 0xD8; +sbit CF = CCON^7; +sbit CR = CCON^6; +sbit CCF2 = CCON^2; +sbit CCF1 = CCON^1; +sbit CCF0 = CCON^0; +sfr CMOD = 0xD9; +sfr CCAPM0 = 0xDA; +sfr CCAPM1 = 0xDB; +sfr CCAPM2 = 0xDC; +sfr ADCCFG = 0xDE; +sfr IP3 = 0xDF; +sfr ACC = 0xE0; +sfr DPS = 0xE3; +sfr DPL1 = 0xE4; +sfr DPH1 = 0xE5; +sfr CMPCR1 = 0xE6; +sfr CMPCR2 = 0xE7; +sfr CL = 0xE9; +sfr CCAP0L = 0xEA; +sfr CCAP1L = 0xEB; +sfr CCAP2L = 0xEC; +sfr IP3H = 0xEE; +sfr AUXINTIF = 0xEF; +sfr B = 0xF0; +sfr PWMSET = 0xF1; +sfr PCA_PWM0 = 0xF2; +sfr PCA_PWM1 = 0xF3; +sfr PCA_PWM2 = 0xF4; +sfr IAP_TPS = 0xF5; +sfr PWMCFG01 = 0xF6; +sfr PWMCFG23 = 0xF7; +sfr CH = 0xF9; +sfr CCAP0H = 0xFA; +sfr CCAP1H = 0xFB; +sfr CCAP2H = 0xFC; +sfr PWMCFG45 = 0xFE; +sfr RSTCFG = 0xFF; + +//濡備笅鐗规畩鍔熻兘瀵勫瓨鍣ㄤ綅浜庢墿灞昍AM鍖哄煙 +//璁块棶杩欎簺瀵勫瓨鍣,闇鍏堝皢P_SW2鐨凚IT7璁剧疆涓1,鎵嶅彲姝e父璇诲啓 + +#define CKSEL (*(unsigned char volatile xdata *)0xFE00) +#define CLKDIV (*(unsigned char volatile xdata *)0xFE01) +#define HIRCCR (*(unsigned char volatile xdata *)0xFE02) +#define XOSCCR (*(unsigned char volatile xdata *)0xFE03) +#define IRC32KCR (*(unsigned char volatile xdata *)0xFE04) +#define MCLKOCR (*(unsigned char volatile xdata *)0xFE05) +#define IRCDB (*(unsigned char volatile xdata *)0xFE06) + +#define P0PU (*(unsigned char volatile xdata *)0xFE10) +#define P1PU (*(unsigned char volatile xdata *)0xFE11) +#define P2PU (*(unsigned char volatile xdata *)0xFE12) +#define P3PU (*(unsigned char volatile xdata *)0xFE13) +#define P4PU (*(unsigned char volatile xdata *)0xFE14) +#define P5PU (*(unsigned char volatile xdata *)0xFE15) +#define P0NCS (*(unsigned char volatile xdata *)0xFE18) +#define P1NCS (*(unsigned char volatile xdata *)0xFE19) +#define P2NCS (*(unsigned char volatile xdata *)0xFE1A) +#define P3NCS (*(unsigned char volatile xdata *)0xFE1B) +#define P4NCS (*(unsigned char volatile xdata *)0xFE1C) +#define P5NCS (*(unsigned char volatile xdata *)0xFE1D) +#define P0SR (*(unsigned char volatile xdata *)0xFE20) +#define P1SR (*(unsigned char volatile xdata *)0xFE21) +#define P2SR (*(unsigned char volatile xdata *)0xFE22) +#define P3SR (*(unsigned char volatile xdata *)0xFE23) +#define P4SR (*(unsigned char volatile xdata *)0xFE24) +#define P5SR (*(unsigned char volatile xdata *)0xFE25) +#define P0DR (*(unsigned char volatile xdata *)0xFE28) +#define P1DR (*(unsigned char volatile xdata *)0xFE29) +#define P2DR (*(unsigned char volatile xdata *)0xFE2A) +#define P3DR (*(unsigned char volatile xdata *)0xFE2B) +#define P4DR (*(unsigned char volatile xdata *)0xFE2C) +#define P5DR (*(unsigned char volatile xdata *)0xFE2D) +#define P0IE (*(unsigned char volatile xdata *)0xFE30) +#define P1IE (*(unsigned char volatile xdata *)0xFE31) +#define P3IE (*(unsigned char volatile xdata *)0xFE33) + +#define I2CCFG (*(unsigned char volatile xdata *)0xFE80) +#define I2CMSCR (*(unsigned char volatile xdata *)0xFE81) +#define I2CMSST (*(unsigned char volatile xdata *)0xFE82) +#define I2CSLCR (*(unsigned char volatile xdata *)0xFE83) +#define I2CSLST (*(unsigned char volatile xdata *)0xFE84) +#define I2CSLADR (*(unsigned char volatile xdata *)0xFE85) +#define I2CTXD (*(unsigned char volatile xdata *)0xFE86) +#define I2CRXD (*(unsigned char volatile xdata *)0xFE87) +#define I2CMSAUX (*(unsigned char volatile xdata *)0xFE88) + +#define TM2PS (*(unsigned char volatile xdata *)0xFEA2) +#define TM3PS (*(unsigned char volatile xdata *)0xFEA3) +#define TM4PS (*(unsigned char volatile xdata *)0xFEA4) +#define ADCTIM (*(unsigned char volatile xdata *)0xFEA8) + +#define PWM0CH (*(unsigned char volatile xdata *)0xFF00) +#define PWM0CL (*(unsigned char volatile xdata *)0xFF01) +#define PWM0CKS (*(unsigned char volatile xdata *)0xFF02) +#define PWM0TADCH (*(unsigned char volatile xdata *)0xFF03) +#define PWM0TADCL (*(unsigned char volatile xdata *)0xFF04) +#define PWM0IF (*(unsigned char volatile xdata *)0xFF05) +#define PWM0FDCR (*(unsigned char volatile xdata *)0xFF06) +#define PWM00T1H (*(unsigned char volatile xdata *)0xFF10) +#define PWM00T1L (*(unsigned char volatile xdata *)0xFF11) +#define PWM00T2H (*(unsigned char volatile xdata *)0xFF12) +#define PWM00T2L (*(unsigned char volatile xdata *)0xFF13) +#define PWM00CR (*(unsigned char volatile xdata *)0xFF14) +#define PWM00HLD (*(unsigned char volatile xdata *)0xFF15) +#define PWM01T1H (*(unsigned char volatile xdata *)0xFF18) +#define PWM01T1L (*(unsigned char volatile xdata *)0xFF19) +#define PWM01T2H (*(unsigned char volatile xdata *)0xFF1A) +#define PWM01T2L (*(unsigned char volatile xdata *)0xFF1B) +#define PWM01CR (*(unsigned char volatile xdata *)0xFF1C) +#define PWM01HLD (*(unsigned char volatile xdata *)0xFF1D) +#define PWM02T1H (*(unsigned char volatile xdata *)0xFF20) +#define PWM02T1L (*(unsigned char volatile xdata *)0xFF21) +#define PWM02T2H (*(unsigned char volatile xdata *)0xFF22) +#define PWM02T2L (*(unsigned char volatile xdata *)0xFF23) +#define PWM02CR (*(unsigned char volatile xdata *)0xFF24) +#define PWM02HLD (*(unsigned char volatile xdata *)0xFF25) +#define PWM03T1H (*(unsigned char volatile xdata *)0xFF28) +#define PWM03T1L (*(unsigned char volatile xdata *)0xFF29) +#define PWM03T2H (*(unsigned char volatile xdata *)0xFF2A) +#define PWM03T2L (*(unsigned char volatile xdata *)0xFF2B) +#define PWM03CR (*(unsigned char volatile xdata *)0xFF2C) +#define PWM03HLD (*(unsigned char volatile xdata *)0xFF2D) +#define PWM04T1H (*(unsigned char volatile xdata *)0xFF30) +#define PWM04T1L (*(unsigned char volatile xdata *)0xFF31) +#define PWM04T2H (*(unsigned char volatile xdata *)0xFF32) +#define PWM04T2L (*(unsigned char volatile xdata *)0xFF33) +#define PWM04CR (*(unsigned char volatile xdata *)0xFF34) +#define PWM04HLD (*(unsigned char volatile xdata *)0xFF35) +#define PWM05T1H (*(unsigned char volatile xdata *)0xFF38) +#define PWM05T1L (*(unsigned char volatile xdata *)0xFF39) +#define PWM05T2H (*(unsigned char volatile xdata *)0xFF3A) +#define PWM05T2L (*(unsigned char volatile xdata *)0xFF3B) +#define PWM05CR (*(unsigned char volatile xdata *)0xFF3C) +#define PWM05HLD (*(unsigned char volatile xdata *)0xFF3D) +#define PWM06T1H (*(unsigned char volatile xdata *)0xFF40) +#define PWM06T1L (*(unsigned char volatile xdata *)0xFF41) +#define PWM06T2H (*(unsigned char volatile xdata *)0xFF42) +#define PWM06T2L (*(unsigned char volatile xdata *)0xFF43) +#define PWM06CR (*(unsigned char volatile xdata *)0xFF44) +#define PWM06HLD (*(unsigned char volatile xdata *)0xFF45) +#define PWM07T1H (*(unsigned char volatile xdata *)0xFF48) +#define PWM07T1L (*(unsigned char volatile xdata *)0xFF49) +#define PWM07T2H (*(unsigned char volatile xdata *)0xFF4A) +#define PWM07T2L (*(unsigned char volatile xdata *)0xFF4B) +#define PWM07CR (*(unsigned char volatile xdata *)0xFF4C) +#define PWM07HLD (*(unsigned char volatile xdata *)0xFF4D) +#define PWM1CH (*(unsigned char volatile xdata *)0xFF50) +#define PWM1CL (*(unsigned char volatile xdata *)0xFF51) +#define PWM1CKS (*(unsigned char volatile xdata *)0xFF52) +#define PWM1IF (*(unsigned char volatile xdata *)0xFF55) +#define PWM1FDCR (*(unsigned char volatile xdata *)0xFF56) +#define PWM10T1H (*(unsigned char volatile xdata *)0xFF60) +#define PWM10T1L (*(unsigned char volatile xdata *)0xFF61) +#define PWM10T2H (*(unsigned char volatile xdata *)0xFF62) +#define PWM10T2L (*(unsigned char volatile xdata *)0xFF63) +#define PWM10CR (*(unsigned char volatile xdata *)0xFF64) +#define PWM10HLD (*(unsigned char volatile xdata *)0xFF65) +#define PWM11T1H (*(unsigned char volatile xdata *)0xFF68) +#define PWM11T1L (*(unsigned char volatile xdata *)0xFF69) +#define PWM11T2H (*(unsigned char volatile xdata *)0xFF6A) +#define PWM11T2L (*(unsigned char volatile xdata *)0xFF6B) +#define PWM11CR (*(unsigned char volatile xdata *)0xFF6C) +#define PWM11HLD (*(unsigned char volatile xdata *)0xFF6D) +#define PWM12T1H (*(unsigned char volatile xdata *)0xFF70) +#define PWM12T1L (*(unsigned char volatile xdata *)0xFF71) +#define PWM12T2H (*(unsigned char volatile xdata *)0xFF72) +#define PWM12T2L (*(unsigned char volatile xdata *)0xFF73) +#define PWM12CR (*(unsigned char volatile xdata *)0xFF74) +#define PWM12HLD (*(unsigned char volatile xdata *)0xFF75) +#define PWM13T1H (*(unsigned char volatile xdata *)0xFF78) +#define PWM13T1L (*(unsigned char volatile xdata *)0xFF79) +#define PWM13T2H (*(unsigned char volatile xdata *)0xFF7A) +#define PWM13T2L (*(unsigned char volatile xdata *)0xFF7B) +#define PWM13CR (*(unsigned char volatile xdata *)0xFF7C) +#define PWM13HLD (*(unsigned char volatile xdata *)0xFF7D) +#define PWM14T1H (*(unsigned char volatile xdata *)0xFF80) +#define PWM14T1L (*(unsigned char volatile xdata *)0xFF81) +#define PWM14T2H (*(unsigned char volatile xdata *)0xFF82) +#define PWM14T2L (*(unsigned char volatile xdata *)0xFF83) +#define PWM14CR (*(unsigned char volatile xdata *)0xFF84) +#define PWM14HLD (*(unsigned char volatile xdata *)0xFF85) +#define PWM15T1H (*(unsigned char volatile xdata *)0xFF88) +#define PWM15T1L (*(unsigned char volatile xdata *)0xFF89) +#define PWM15T2H (*(unsigned char volatile xdata *)0xFF8A) +#define PWM15T2L (*(unsigned char volatile xdata *)0xFF8B) +#define PWM15CR (*(unsigned char volatile xdata *)0xFF8C) +#define PWM15HLD (*(unsigned char volatile xdata *)0xFF8D) +#define PWM16T1H (*(unsigned char volatile xdata *)0xFF90) +#define PWM16T1L (*(unsigned char volatile xdata *)0xFF91) +#define PWM16T2H (*(unsigned char volatile xdata *)0xFF92) +#define PWM16T2L (*(unsigned char volatile xdata *)0xFF93) +#define PWM16CR (*(unsigned char volatile xdata *)0xFF94) +#define PWM16HLD (*(unsigned char volatile xdata *)0xFF95) +#define PWM17T1H (*(unsigned char volatile xdata *)0xFF98) +#define PWM17T1L (*(unsigned char volatile xdata *)0xFF99) +#define PWM17T2H (*(unsigned char volatile xdata *)0xFF9A) +#define PWM17T2L (*(unsigned char volatile xdata *)0xFF9B) +#define PWM17CR (*(unsigned char volatile xdata *)0xFF9C) +#define PWM17HLD (*(unsigned char volatile xdata *)0xFF9D) +#define PWM2CH (*(unsigned char volatile xdata *)0xFFA0) +#define PWM2CL (*(unsigned char volatile xdata *)0xFFA1) +#define PWM2CKS (*(unsigned char volatile xdata *)0xFFA2) +#define PWM2TADCH (*(unsigned char volatile xdata *)0xFFA3) +#define PWM2TADCL (*(unsigned char volatile xdata *)0xFFA4) +#define PWM2IF (*(unsigned char volatile xdata *)0xFFA5) +#define PWM2FDCR (*(unsigned char volatile xdata *)0xFFA6) +#define PWM20T1H (*(unsigned char volatile xdata *)0xFFB0) +#define PWM20T1L (*(unsigned char volatile xdata *)0xFFB1) +#define PWM20T2H (*(unsigned char volatile xdata *)0xFFB2) +#define PWM20T2L (*(unsigned char volatile xdata *)0xFFB3) +#define PWM20CR (*(unsigned char volatile xdata *)0xFFB4) +#define PWM20HLD (*(unsigned char volatile xdata *)0xFFB5) +#define PWM21T1H (*(unsigned char volatile xdata *)0xFFB8) +#define PWM21T1L (*(unsigned char volatile xdata *)0xFFB9) +#define PWM21T2H (*(unsigned char volatile xdata *)0xFFBA) +#define PWM21T2L (*(unsigned char volatile xdata *)0xFFBB) +#define PWM21CR (*(unsigned char volatile xdata *)0xFFBC) +#define PWM21HLD (*(unsigned char volatile xdata *)0xFFBD) +#define PWM22T1H (*(unsigned char volatile xdata *)0xFFC0) +#define PWM22T1L (*(unsigned char volatile xdata *)0xFFC1) +#define PWM22T2H (*(unsigned char volatile xdata *)0xFFC2) +#define PWM22T2L (*(unsigned char volatile xdata *)0xFFC3) +#define PWM22CR (*(unsigned char volatile xdata *)0xFFC4) +#define PWM22HLD (*(unsigned char volatile xdata *)0xFFC5) +#define PWM23T1H (*(unsigned char volatile xdata *)0xFFC8) +#define PWM23T1L (*(unsigned char volatile xdata *)0xFFC9) +#define PWM23T2H (*(unsigned char volatile xdata *)0xFFCA) +#define PWM23T2L (*(unsigned char volatile xdata *)0xFFCB) +#define PWM23CR (*(unsigned char volatile xdata *)0xFFCC) +#define PWM23HLD (*(unsigned char volatile xdata *)0xFFCD) +#define PWM24T1H (*(unsigned char volatile xdata *)0xFFD0) +#define PWM24T1L (*(unsigned char volatile xdata *)0xFFD1) +#define PWM24T2H (*(unsigned char volatile xdata *)0xFFD2) +#define PWM24T2L (*(unsigned char volatile xdata *)0xFFD3) +#define PWM24CR (*(unsigned char volatile xdata *)0xFFD4) +#define PWM24HLD (*(unsigned char volatile xdata *)0xFFD5) +#define PWM25T1H (*(unsigned char volatile xdata *)0xFFD8) +#define PWM25T1L (*(unsigned char volatile xdata *)0xFFD9) +#define PWM25T2H (*(unsigned char volatile xdata *)0xFFDA) +#define PWM25T2L (*(unsigned char volatile xdata *)0xFFDB) +#define PWM25CR (*(unsigned char volatile xdata *)0xFFDC) +#define PWM25HLD (*(unsigned char volatile xdata *)0xFFDD) +#define PWM26T1H (*(unsigned char volatile xdata *)0xFFE0) +#define PWM26T1L (*(unsigned char volatile xdata *)0xFFE1) +#define PWM26T2H (*(unsigned char volatile xdata *)0xFFE2) +#define PWM26T2L (*(unsigned char volatile xdata *)0xFFE3) +#define PWM26CR (*(unsigned char volatile xdata *)0xFFE4) +#define PWM26HLD (*(unsigned char volatile xdata *)0xFFE5) +#define PWM27T1H (*(unsigned char volatile xdata *)0xFFE8) +#define PWM27T1L (*(unsigned char volatile xdata *)0xFFE9) +#define PWM27T2H (*(unsigned char volatile xdata *)0xFFEA) +#define PWM27T2L (*(unsigned char volatile xdata *)0xFFEB) +#define PWM27CR (*(unsigned char volatile xdata *)0xFFEC) +#define PWM27HLD (*(unsigned char volatile xdata *)0xFFED) +#define PWM3CH (*(unsigned char volatile xdata *)0xFC00) +#define PWM3CL (*(unsigned char volatile xdata *)0xFC01) +#define PWM3CKS (*(unsigned char volatile xdata *)0xFC02) +#define PWM3IF (*(unsigned char volatile xdata *)0xFC05) +#define PWM3FDCR (*(unsigned char volatile xdata *)0xFC06) +#define PWM30T1H (*(unsigned char volatile xdata *)0xFC10) +#define PWM30T1L (*(unsigned char volatile xdata *)0xFC11) +#define PWM30T2H (*(unsigned char volatile xdata *)0xFC12) +#define PWM30T2L (*(unsigned char volatile xdata *)0xFC13) +#define PWM30CR (*(unsigned char volatile xdata *)0xFC14) +#define PWM30HLD (*(unsigned char volatile xdata *)0xFC15) +#define PWM31T1H (*(unsigned char volatile xdata *)0xFC18) +#define PWM31T1L (*(unsigned char volatile xdata *)0xFC19) +#define PWM31T2H (*(unsigned char volatile xdata *)0xFC1A) +#define PWM31T2L (*(unsigned char volatile xdata *)0xFC1B) +#define PWM31CR (*(unsigned char volatile xdata *)0xFC1C) +#define PWM31HLD (*(unsigned char volatile xdata *)0xFC1D) +#define PWM32T1H (*(unsigned char volatile xdata *)0xFC20) +#define PWM32T1L (*(unsigned char volatile xdata *)0xFC21) +#define PWM32T2H (*(unsigned char volatile xdata *)0xFC22) +#define PWM32T2L (*(unsigned char volatile xdata *)0xFC23) +#define PWM32CR (*(unsigned char volatile xdata *)0xFC24) +#define PWM32HLD (*(unsigned char volatile xdata *)0xFC25) +#define PWM33T1H (*(unsigned char volatile xdata *)0xFC28) +#define PWM33T1L (*(unsigned char volatile xdata *)0xFC29) +#define PWM33T2H (*(unsigned char volatile xdata *)0xFC2A) +#define PWM33T2L (*(unsigned char volatile xdata *)0xFC2B) +#define PWM33CR (*(unsigned char volatile xdata *)0xFC2C) +#define PWM33HLD (*(unsigned char volatile xdata *)0xFC2D) +#define PWM34T1H (*(unsigned char volatile xdata *)0xFC30) +#define PWM34T1L (*(unsigned char volatile xdata *)0xFC31) +#define PWM34T2H (*(unsigned char volatile xdata *)0xFC32) +#define PWM34T2L (*(unsigned char volatile xdata *)0xFC33) +#define PWM34CR (*(unsigned char volatile xdata *)0xFC34) +#define PWM34HLD (*(unsigned char volatile xdata *)0xFC35) +#define PWM35T1H (*(unsigned char volatile xdata *)0xFC38) +#define PWM35T1L (*(unsigned char volatile xdata *)0xFC39) +#define PWM35T2H (*(unsigned char volatile xdata *)0xFC3A) +#define PWM35T2L (*(unsigned char volatile xdata *)0xFC3B) +#define PWM35CR (*(unsigned char volatile xdata *)0xFC3C) +#define PWM35HLD (*(unsigned char volatile xdata *)0xFC3D) +#define PWM36T1H (*(unsigned char volatile xdata *)0xFC40) +#define PWM36T1L (*(unsigned char volatile xdata *)0xFC41) +#define PWM36T2H (*(unsigned char volatile xdata *)0xFC42) +#define PWM36T2L (*(unsigned char volatile xdata *)0xFC43) +#define PWM36CR (*(unsigned char volatile xdata *)0xFC44) +#define PWM36HLD (*(unsigned char volatile xdata *)0xFC45) +#define PWM37T1H (*(unsigned char volatile xdata *)0xFC48) +#define PWM37T1L (*(unsigned char volatile xdata *)0xFC49) +#define PWM37T2H (*(unsigned char volatile xdata *)0xFC4A) +#define PWM37T2L (*(unsigned char volatile xdata *)0xFC4B) +#define PWM37CR (*(unsigned char volatile xdata *)0xFC4C) +#define PWM37HLD (*(unsigned char volatile xdata *)0xFC4D) +#define PWM4CH (*(unsigned char volatile xdata *)0xFC50) +#define PWM4CL (*(unsigned char volatile xdata *)0xFC51) +#define PWM4CKS (*(unsigned char volatile xdata *)0xFC52) +#define PWM4TADCH (*(unsigned char volatile xdata *)0xFC53) +#define PWM4TADCL (*(unsigned char volatile xdata *)0xFC54) +#define PWM4IF (*(unsigned char volatile xdata *)0xFC55) +#define PWM4FDCR (*(unsigned char volatile xdata *)0xFC56) +#define PWM40T1H (*(unsigned char volatile xdata *)0xFC60) +#define PWM40T1L (*(unsigned char volatile xdata *)0xFC61) +#define PWM40T2H (*(unsigned char volatile xdata *)0xFC62) +#define PWM40T2L (*(unsigned char volatile xdata *)0xFC63) +#define PWM40CR (*(unsigned char volatile xdata *)0xFC64) +#define PWM40HLD (*(unsigned char volatile xdata *)0xFC65) +#define PWM41T1H (*(unsigned char volatile xdata *)0xFC68) +#define PWM41T1L (*(unsigned char volatile xdata *)0xFC69) +#define PWM41T2H (*(unsigned char volatile xdata *)0xFC6A) +#define PWM41T2L (*(unsigned char volatile xdata *)0xFC6B) +#define PWM41CR (*(unsigned char volatile xdata *)0xFC6C) +#define PWM41HLD (*(unsigned char volatile xdata *)0xFC6D) +#define PWM42T1H (*(unsigned char volatile xdata *)0xFC70) +#define PWM42T1L (*(unsigned char volatile xdata *)0xFC71) +#define PWM42T2H (*(unsigned char volatile xdata *)0xFC72) +#define PWM42T2L (*(unsigned char volatile xdata *)0xFC73) +#define PWM42CR (*(unsigned char volatile xdata *)0xFC74) +#define PWM42HLD (*(unsigned char volatile xdata *)0xFC75) +#define PWM43T1H (*(unsigned char volatile xdata *)0xFC78) +#define PWM43T1L (*(unsigned char volatile xdata *)0xFC79) +#define PWM43T2H (*(unsigned char volatile xdata *)0xFC7A) +#define PWM43T2L (*(unsigned char volatile xdata *)0xFC7B) +#define PWM43CR (*(unsigned char volatile xdata *)0xFC7C) +#define PWM43HLD (*(unsigned char volatile xdata *)0xFC7D) +#define PWM44T1H (*(unsigned char volatile xdata *)0xFC80) +#define PWM44T1L (*(unsigned char volatile xdata *)0xFC81) +#define PWM44T2H (*(unsigned char volatile xdata *)0xFC82) +#define PWM44T2L (*(unsigned char volatile xdata *)0xFC83) +#define PWM44CR (*(unsigned char volatile xdata *)0xFC84) +#define PWM44HLD (*(unsigned char volatile xdata *)0xFC85) +#define PWM45T1H (*(unsigned char volatile xdata *)0xFC88) +#define PWM45T1L (*(unsigned char volatile xdata *)0xFC89) +#define PWM45T2H (*(unsigned char volatile xdata *)0xFC8A) +#define PWM45T2L (*(unsigned char volatile xdata *)0xFC8B) +#define PWM45CR (*(unsigned char volatile xdata *)0xFC8C) +#define PWM45HLD (*(unsigned char volatile xdata *)0xFC8D) +#define PWM46T1H (*(unsigned char volatile xdata *)0xFC90) +#define PWM46T1L (*(unsigned char volatile xdata *)0xFC91) +#define PWM46T2H (*(unsigned char volatile xdata *)0xFC92) +#define PWM46T2L (*(unsigned char volatile xdata *)0xFC93) +#define PWM46CR (*(unsigned char volatile xdata *)0xFC94) +#define PWM46HLD (*(unsigned char volatile xdata *)0xFC95) +#define PWM47T1H (*(unsigned char volatile xdata *)0xFC98) +#define PWM47T1L (*(unsigned char volatile xdata *)0xFC99) +#define PWM47T2H (*(unsigned char volatile xdata *)0xFC9A) +#define PWM47T2L (*(unsigned char volatile xdata *)0xFC9B) +#define PWM47CR (*(unsigned char volatile xdata *)0xFC9C) +#define PWM47HLD (*(unsigned char volatile xdata *)0xFC9D) +#define PWM5CH (*(unsigned char volatile xdata *)0xFCA0) +#define PWM5CL (*(unsigned char volatile xdata *)0xFCA1) +#define PWM5CKS (*(unsigned char volatile xdata *)0xFCA2) +#define PWM5IF (*(unsigned char volatile xdata *)0xFCA5) +#define PWM5FDCR (*(unsigned char volatile xdata *)0xFCA6) +#define PWM50T1H (*(unsigned char volatile xdata *)0xFCB0) +#define PWM50T1L (*(unsigned char volatile xdata *)0xFCB1) +#define PWM50T2H (*(unsigned char volatile xdata *)0xFCB2) +#define PWM50T2L (*(unsigned char volatile xdata *)0xFCB3) +#define PWM50CR (*(unsigned char volatile xdata *)0xFCB4) +#define PWM50HLD (*(unsigned char volatile xdata *)0xFCB5) +#define PWM51T1H (*(unsigned char volatile xdata *)0xFCB8) +#define PWM51T1L (*(unsigned char volatile xdata *)0xFCB9) +#define PWM51T2H (*(unsigned char volatile xdata *)0xFCBA) +#define PWM51T2L (*(unsigned char volatile xdata *)0xFCBB) +#define PWM51CR (*(unsigned char volatile xdata *)0xFCBC) +#define PWM51HLD (*(unsigned char volatile xdata *)0xFCBD) +#define PWM52T1H (*(unsigned char volatile xdata *)0xFCC0) +#define PWM52T1L (*(unsigned char volatile xdata *)0xFCC1) +#define PWM52T2H (*(unsigned char volatile xdata *)0xFCC2) +#define PWM52T2L (*(unsigned char volatile xdata *)0xFCC3) +#define PWM52CR (*(unsigned char volatile xdata *)0xFCC4) +#define PWM52HLD (*(unsigned char volatile xdata *)0xFCC5) +#define PWM53T1H (*(unsigned char volatile xdata *)0xFCC8) +#define PWM53T1L (*(unsigned char volatile xdata *)0xFCC9) +#define PWM53T2H (*(unsigned char volatile xdata *)0xFCCA) +#define PWM53T2L (*(unsigned char volatile xdata *)0xFCCB) +#define PWM53CR (*(unsigned char volatile xdata *)0xFCCC) +#define PWM53HLD (*(unsigned char volatile xdata *)0xFCCD) +#define PWM54T1H (*(unsigned char volatile xdata *)0xFCD0) +#define PWM54T1L (*(unsigned char volatile xdata *)0xFCD1) +#define PWM54T2H (*(unsigned char volatile xdata *)0xFCD2) +#define PWM54T2L (*(unsigned char volatile xdata *)0xFCD3) +#define PWM54CR (*(unsigned char volatile xdata *)0xFCD4) +#define PWM54HLD (*(unsigned char volatile xdata *)0xFCD5) +#define PWM55T1H (*(unsigned char volatile xdata *)0xFCD8) +#define PWM55T1L (*(unsigned char volatile xdata *)0xFCD9) +#define PWM55T2H (*(unsigned char volatile xdata *)0xFCDA) +#define PWM55T2L (*(unsigned char volatile xdata *)0xFCDB) +#define PWM55CR (*(unsigned char volatile xdata *)0xFCDC) +#define PWM55HLD (*(unsigned char volatile xdata *)0xFCDD) +#define PWM56T1H (*(unsigned char volatile xdata *)0xFCE0) +#define PWM56T1L (*(unsigned char volatile xdata *)0xFCE1) +#define PWM56T2H (*(unsigned char volatile xdata *)0xFCE2) +#define PWM56T2L (*(unsigned char volatile xdata *)0xFCE3) +#define PWM56CR (*(unsigned char volatile xdata *)0xFCE4) +#define PWM56HLD (*(unsigned char volatile xdata *)0xFCE5) +#define PWM57T1H (*(unsigned char volatile xdata *)0xFCE8) +#define PWM57T1L (*(unsigned char volatile xdata *)0xFCE9) +#define PWM57T2H (*(unsigned char volatile xdata *)0xFCEA) +#define PWM57T2L (*(unsigned char volatile xdata *)0xFCEB) +#define PWM57CR (*(unsigned char volatile xdata *)0xFCEC) +#define PWM57HLD (*(unsigned char volatile xdata *)0xFCED) + +///////////////////////////////////////////////// + + +/// >>>>> add by cc + +#include "../clib/bit.h" + +#define D_stdIO_P0_ALL() P0M1=0;P0M0=0; +#define D_HighI_P0_ALL() P0M1=0;P0M0=0XFF; +#define D_HighR_P0_ALL() P0M1=0XFF;P0M0=0; +#define D_OpenD_P0_ALL() P0M1=0XFF;P0M0=0XFF; + +#define D_stdIO_P1_ALL() P1M1=0;P1M0=0; +#define D_HighI_P1_ALL() P1M1=0;P1M0=0XFF; +#define D_HighR_P1_ALL() P1M1=0XFF;P1M0=0; +#define D_OpenD_P1_ALL() P1M1=0XFF;P1M0=0XFF; + + +#define D_stdIO_P0(n) BITN_0(P0M1,n);BITN_0(P0M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P0(n) BITN_0(P0M1,n);BITN_1(P0M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P0(n) BITN_1(P0M1,n);BITN_0(P0M0,n); /////////10 楂橀樆 +#define D_OpenD_P0(n) BITN_1(P0M1,n);BITN_1(P0M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P1(n) BITN_0(P1M1,n);BITN_0(P1M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P1(n) BITN_0(P1M1,n);BITN_1(P1M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P1(n) BITN_1(P1M1,n);BITN_0(P1M0,n); /////////10 楂橀樆 +#define D_OpenD_P1(n) BITN_1(P1M1,n);BITN_1(P1M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P2(n) BITN_0(P2M1,n);BITN_0(P2M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P2(n) BITN_0(P2M1,n);BITN_1(P2M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P2(n) BITN_1(P2M1,n);BITN_0(P2M0,n); /////////10 楂橀樆 +#define D_OpenD_P2(n) BITN_1(P2M1,n);BITN_1(P2M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P3(n) BITN_0(P3M1,n);BITN_0(P3M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P3(n) BITN_0(P3M1,n);BITN_1(P3M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P3(n) BITN_1(P3M1,n);BITN_0(P3M0,n); /////////10 楂橀樆 +#define D_OpenD_P3(n) BITN_1(P3M1,n);BITN_1(P3M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P4(n) BITN_0(P4M1,n);BITN_0(P4M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P4(n) BITN_0(P4M1,n);BITN_1(P4M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P4(n) BITN_1(P4M1,n);BITN_0(P4M0,n); /////////10 楂橀樆 +#define D_OpenD_P4(n) BITN_1(P4M1,n);BITN_1(P4M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P5(n) BITN_0(P5M1,n);BITN_0(P5M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P5(n) BITN_0(P5M1,n);BITN_1(P5M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P5(n) BITN_1(P5M1,n);BITN_0(P5M0,n); /////////10 楂橀樆 +#define D_OpenD_P5(n) BITN_1(P5M1,n);BITN_1(P5M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P6(n) BITN_0(P6M1,n);BITN_0(P6M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P6(n) BITN_0(P6M1,n);BITN_1(P6M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P6(n) BITN_1(P6M1,n);BITN_0(P6M0,n); /////////10 楂橀樆 +#define D_OpenD_P6(n) BITN_1(P6M1,n);BITN_1(P6M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +#define D_stdIO_P7(n) BITN_0(P7M1,n);BITN_0(P7M0,n); //////00 鍑嗗弻鍚戝彛 鐏岀數娴20mA 鎷夌數娴270-150uS +#define D_HighI_P7(n) BITN_0(P7M1,n);BITN_1(P7M0,n); //////01 鎺ㄦ尳杈撳嚭 20mA 鍔犻檺娴 +#define D_HighR_P7(n) BITN_1(P7M1,n);BITN_0(P7M0,n); /////////10 楂橀樆 +#define D_OpenD_P7(n) BITN_1(P7M1,n);BITN_1(P7M0,n); /////11 寮婕 open-Drain 鍐呴儴涓婃媺鐢甸樆鏂紑 寮婕忔ā寮忔棦鍙互搴﹀閮ㄧ姸鎬佷篃鍙互瀵瑰杈撳嚭楂樹綆鐢靛钩 + +/*** + +#define P0_conf_in(n) BITN_1(P0M1,n);BITN_0(P0M0,n); +#define P1_conf_in(n) BITN_1(P1M1,n);BITN_0(P1M0,n); +#define P2_conf_in(n) BITN_1(P2M1,n);BITN_0(P2M0,n); +#define P2_conf_port(n) BITN_0(P2M1,n);BITN_0(P2M0,n); + + +#define P3_conf_in(n) BITN_1(P3M1,n);BITN_0(P3M0,n); +#define P3_conf_port(n) BITN_0(P3M1,n);BITN_0(P3M0,n); + +#define P4_conf_in(n) BITN_1(P4M1,n);BITN_0(P4M0,n); +#define P5_conf_in(n) BITN_1(P5M1,n);BITN_0(P5M0,n); + +***/ + + + +#define NOP() _nop_() + +#define L0_INT4_OPEN() BITN_1(INT_CLKO, INT_EX4) +#define L0_INT4_CLOSE() BITN_0(INT_CLKO, INT_EX4) + +#define L0_INT4_AT() BITN_G(INT_CLKO, INT_EX4) + + + + +#define L0_INT4_CLEAR() BITN_0(AUXINTIF, INT4IF) +#define L0_INT3_CLEAR() BITN_0(AUXINTIF, INT3IF) +#define L0_INT2_CLEAR() BITN_0(AUXINTIF, INT2IF) + + + + +////// + +#define L0_INT3_OPEN() BITN_1(INT_CLKO, INT_EX3); +#define L0_INT3_CLOSE() BITN_0(INT_CLKO, INT_EX3); +#define L0_INT2_OPEN() BITN_1(INT_CLKO, INT_EX2); +#define L0_INT2_CLOSE() BITN_0(INT_CLKO, INT_EX2); +#define L0_INT1_OPEN() EX1 = 1; +#define L0_INT1_CLOSE() EX1 = 0; +#define L0_INT0_OPEN() EX0 = 1; +#define L0_INT0_CLOSE() EX0 = 0; + +#define D_ISR_int0 0 ///int0 涓嬮檷娌胯Е鍙 = 0 涓婁笅娌垮潎鍙Е鍙 +#define D_ISR_timer0 1 +#define D_ISR_int1 2 ///int1 涓嬮檷娌胯Е鍙 = 0 涓婁笅娌垮潎鍙Е鍙 +#define D_ISR_timer1 3 +#define D_ISR_int2 10 /////鍙湁涓嬮檷娌 +#define D_ISR_int3 11 /////鍙湁涓嬮檷娌 +#define D_SERVE_UART 4 +#define D_ISR_int4 16 /////鍙湁涓嬮檷娌 + +#if 0 +#define L0_TIMER1_start() TR1 = 1; +#define L0_TIMER1_end() TR1 = 0; + + +#define L0_TIMER1_isr_OPEN() ET1 = 1; +#define L0_TIMER1_isr_CLOSE() ET1 = 0; + + +#else + +#define L0_TIMER1_start() ET1 = 1; +#define L0_TIMER1_end() ET1 = 0; + + +#define L0_TIMER1_isr_OPEN() TR1 = 1; +#define L0_TIMER1_isr_CLOSE() TR1 = 0; + + +#endif + +/// fixme 棰犲掑畾涔変細璁ヽ51閿佹#define _nop_() NOP() + +///#define L0_INT3_OPEN() BITN_1(INT_CLKO,INT_EX3); //浣胯兘INT3涓柇 +///#define L0_INT3_CLOSE() BITN_0(INT_CLKO,INT_EX3); +#endif //STC_stc8a8k + + + + + + diff --git a/source/cpu/stc_stc8hxx.h b/source/cpu/stc_stc8hxx.h new file mode 100644 index 0000000..a279eea --- /dev/null +++ b/source/cpu/stc_stc8hxx.h @@ -0,0 +1,640 @@ +#ifndef __STC8H_H__ +#define __STC8H_H__ + +///////////////////////////////////////////////// + +//包含本头文件后,不用另外再包含"REG51.H" + +sfr P0 = 0x80; +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; +sfr SP = 0x81; +sfr DPL = 0x82; +sfr DPH = 0x83; +sfr S4CON = 0x84; +sfr S4BUF = 0x85; +sfr PCON = 0x87; +sfr TCON = 0x88; +sbit TF1 = TCON^7; +sbit TR1 = TCON^6; +sbit TF0 = TCON^5; +sbit TR0 = TCON^4; +sbit IE1 = TCON^3; +sbit IT1 = TCON^2; +sbit IE0 = TCON^1; +sbit IT0 = TCON^0; +sfr TMOD = 0x89; +sfr TL0 = 0x8a; +sfr TL1 = 0x8b; +sfr TH0 = 0x8c; +sfr TH1 = 0x8d; +sfr AUXR = 0x8e; +sfr INTCLKO = 0x8f; +sfr P1 = 0x90; +sbit P10 = P1^0; +sbit P11 = P1^1; +sbit P12 = P1^2; +sbit P13 = P1^3; +sbit P14 = P1^4; +sbit P15 = P1^5; +sbit P16 = P1^6; +sbit P17 = P1^7; +sfr P1M1 = 0x91; +sfr P1M0 = 0x92; +sfr P0M1 = 0x93; +sfr P0M0 = 0x94; +sfr P2M1 = 0x95; +sfr P2M0 = 0x96; +sfr SCON = 0x98; +sbit SM0 = SCON^7; +sbit SM1 = SCON^6; +sbit SM2 = SCON^5; +sbit REN = SCON^4; +sbit TB8 = SCON^3; +sbit RB8 = SCON^2; +sbit TI = SCON^1; +sbit RI = SCON^0; +sfr SBUF = 0x99; +sfr S2CON = 0x9a; +sfr S2BUF = 0x9b; +sfr IRCBAND = 0x9d; +sfr LIRTRIM = 0x9e; +sfr IRTRIM = 0x9f; +sfr P2 = 0xa0; +sbit P20 = P2^0; +sbit P21 = P2^1; +sbit P22 = P2^2; +sbit P23 = P2^3; +sbit P24 = P2^4; +sbit P25 = P2^5; +sbit P26 = P2^6; +sbit P27 = P2^7; +sfr P_SW1 = 0xa2; +sfr IE = 0xa8; +sbit EA = IE^7; +sbit ELVD = IE^6; +sbit EADC = IE^5; +sbit ES = IE^4; +sbit ET1 = IE^3; +sbit EX1 = IE^2; +sbit ET0 = IE^1; +sbit EX0 = IE^0; +sfr SADDR = 0xa9; +sfr WKTCL = 0xaa; +sfr WKTCH = 0xab; +sfr S3CON = 0xac; +sfr S3BUF = 0xad; +sfr TA = 0xae; +sfr IE2 = 0xaf; +sfr P3 = 0xb0; +sbit P30 = P3^0; +sbit P31 = P3^1; +sbit P32 = P3^2; +sbit P33 = P3^3; +sbit P34 = P3^4; +sbit P35 = P3^5; +sbit P36 = P3^6; +sbit P37 = P3^7; +sfr P3M1 = 0xb1; +sfr P3M0 = 0xb2; +sfr P4M1 = 0xb3; +sfr P4M0 = 0xb4; +sfr IP2 = 0xb5; +sfr IP2H = 0xb6; +sfr IPH = 0xb7; +sfr IP = 0xb8; +sbit PPCA = IP^7; +sbit PLVD = IP^6; +sbit PADC = IP^5; +sbit PS = IP^4; +sbit PT1 = IP^3; +sbit PX1 = IP^2; +sbit PT0 = IP^1; +sbit PX0 = IP^0; +sfr SADEN = 0xb9; +sfr P_SW2 = 0xba; +sfr ADC_CONTR = 0xbc; +sfr ADC_RES = 0xbd; +sfr ADC_RESL = 0xbe; +sfr P4 = 0xc0; +sbit P40 = P4^0; +sbit P41 = P4^1; +sbit P42 = P4^2; +sbit P43 = P4^3; +sbit P44 = P4^4; +sbit P45 = P4^5; +sbit P46 = P4^6; +sbit P47 = P4^7; +sfr WDT_CONTR = 0xc1; +sfr IAP_DATA = 0xc2; +sfr IAP_ADDRH = 0xc3; +sfr IAP_ADDRL = 0xc4; +sfr IAP_CMD = 0xc5; +sfr IAP_TRIG = 0xc6; +sfr IAP_CONTR = 0xc7; +sfr P5 = 0xc8; +sbit P50 = P5^0; +sbit P51 = P5^1; +sbit P52 = P5^2; +sbit P53 = P5^3; +sbit P54 = P5^4; +sbit P55 = P5^5; +sbit P56 = P5^6; +sbit P57 = P5^7; +sfr P5M1 = 0xc9; +sfr P5M0 = 0xca; +sfr P6M1 = 0xcb; +sfr P6M0 = 0xcc; +sfr SPSTAT = 0xcd; +sfr SPCTL = 0xce; +sfr SPDAT = 0xcf; +sfr PSW = 0xd0; +sbit CY = PSW^7; +sbit AC = PSW^6; +sbit F0 = PSW^5; +sbit RS1 = PSW^4; +sbit RS0 = PSW^3; +sbit OV = PSW^2; +sbit F1 = PSW^1; +sbit P = PSW^0; +sfr T4T3M = 0xd1; +sfr T4H = 0xd2; +sfr T4L = 0xd3; +sfr T3H = 0xd4; +sfr T3L = 0xd5; +sfr T2H = 0xd6; +sfr T2L = 0xd7; +sfr USBCLK = 0xdc; +sfr ADCCFG = 0xde; +sfr IP3 = 0xdf; +sfr ACC = 0xe0; +sfr P7M1 = 0xe1; +sfr P7M0 = 0xe2; +sfr DPS = 0xe3; +sfr DPL1 = 0xe4; +sfr DPH1 = 0xe5; +sfr CMPCR1 = 0xe6; +sfr CMPCR2 = 0xe7; +sfr P6 = 0xe8; +sfr USBDAT = 0xec; +sfr IP3H = 0xee; +sfr AUXINTIF = 0xef; +sfr B = 0xf0; +sfr USBCON = 0xf4; +sfr IAP_TPS = 0xf5; +sfr P7 = 0xf8; +sfr USBADR = 0xfc; +sfr RSTCFG = 0xff; + +//如下特殊功能寄存器位于扩展RAM区域 +//访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写 + +///////////////////////////////////////////////// +//FF00H-FFFFH +///////////////////////////////////////////////// + + + +///////////////////////////////////////////////// +//FE00H-FEFFH +///////////////////////////////////////////////// + +#define CKSEL (*(unsigned char volatile xdata *)0xfe00) +#define CLKDIV (*(unsigned char volatile xdata *)0xfe01) +#define HIRCCR (*(unsigned char volatile xdata *)0xfe02) +#define XOSCCR (*(unsigned char volatile xdata *)0xfe03) +#define IRC32KCR (*(unsigned char volatile xdata *)0xfe04) +#define MCLKOCR (*(unsigned char volatile xdata *)0xfe05) +#define IRCDB (*(unsigned char volatile xdata *)0xfe06) +#define X32KCR (*(unsigned char volatile xdata *)0xfe08) + +#define P0PU (*(unsigned char volatile xdata *)0xfe10) +#define P1PU (*(unsigned char volatile xdata *)0xfe11) +#define P2PU (*(unsigned char volatile xdata *)0xfe12) +#define P3PU (*(unsigned char volatile xdata *)0xfe13) +#define P4PU (*(unsigned char volatile xdata *)0xfe14) +#define P5PU (*(unsigned char volatile xdata *)0xfe15) +#define P6PU (*(unsigned char volatile xdata *)0xfe16) +#define P7PU (*(unsigned char volatile xdata *)0xfe17) +#define P0NCS (*(unsigned char volatile xdata *)0xfe18) +#define P1NCS (*(unsigned char volatile xdata *)0xfe19) +#define P2NCS (*(unsigned char volatile xdata *)0xfe1a) +#define P3NCS (*(unsigned char volatile xdata *)0xfe1b) +#define P4NCS (*(unsigned char volatile xdata *)0xfe1c) +#define P5NCS (*(unsigned char volatile xdata *)0xfe1d) +#define P6NCS (*(unsigned char volatile xdata *)0xfe1e) +#define P7NCS (*(unsigned char volatile xdata *)0xfe1f) +#define P0SR (*(unsigned char volatile xdata *)0xfe20) +#define P1SR (*(unsigned char volatile xdata *)0xfe21) +#define P2SR (*(unsigned char volatile xdata *)0xfe22) +#define P3SR (*(unsigned char volatile xdata *)0xfe23) +#define P4SR (*(unsigned char volatile xdata *)0xfe24) +#define P5SR (*(unsigned char volatile xdata *)0xfe25) +#define P6SR (*(unsigned char volatile xdata *)0xfe26) +#define P7SR (*(unsigned char volatile xdata *)0xfe27) +#define P0DR (*(unsigned char volatile xdata *)0xfe28) +#define P1DR (*(unsigned char volatile xdata *)0xfe29) +#define P2DR (*(unsigned char volatile xdata *)0xfe2a) +#define P3DR (*(unsigned char volatile xdata *)0xfe2b) +#define P4DR (*(unsigned char volatile xdata *)0xfe2c) +#define P5DR (*(unsigned char volatile xdata *)0xfe2d) +#define P6DR (*(unsigned char volatile xdata *)0xfe2e) +#define P7DR (*(unsigned char volatile xdata *)0xfe2f) +#define P0IE (*(unsigned char volatile xdata *)0xfe30) +#define P1IE (*(unsigned char volatile xdata *)0xfe31) +#define P2IE (*(unsigned char volatile xdata *)0xfe32) +#define P3IE (*(unsigned char volatile xdata *)0xfe33) +#define P4IE (*(unsigned char volatile xdata *)0xfe34) +#define P5IE (*(unsigned char volatile xdata *)0xfe35) +#define P6IE (*(unsigned char volatile xdata *)0xfe36) +#define P7IE (*(unsigned char volatile xdata *)0xfe37) + +#define RTCCR (*(unsigned char volatile xdata *)0xfe60) +#define RTCCFG (*(unsigned char volatile xdata *)0xfe61) +#define RTCIEN (*(unsigned char volatile xdata *)0xfe62) +#define RTCIF (*(unsigned char volatile xdata *)0xfe63) +#define ALAHOUR (*(unsigned char volatile xdata *)0xfe64) +#define ALAMIN (*(unsigned char volatile xdata *)0xfe65) +#define ALASEC (*(unsigned char volatile xdata *)0xfe66) +#define ALASSEC (*(unsigned char volatile xdata *)0xfe67) +#define INIYEAR (*(unsigned char volatile xdata *)0xfe68) +#define INIMONTH (*(unsigned char volatile xdata *)0xfe69) +#define INIDAY (*(unsigned char volatile xdata *)0xfe6a) +#define INIHOUR (*(unsigned char volatile xdata *)0xfe6b) +#define INIMIN (*(unsigned char volatile xdata *)0xfe6c) +#define INISEC (*(unsigned char volatile xdata *)0xfe6d) +#define INISSEC (*(unsigned char volatile xdata *)0xfe6e) +#define YEAR (*(unsigned char volatile xdata *)0xfe70) +#define MONTH (*(unsigned char volatile xdata *)0xfe71) +#define DAY (*(unsigned char volatile xdata *)0xfe72) +#define HOUR (*(unsigned char volatile xdata *)0xfe73) +#define MIN (*(unsigned char volatile xdata *)0xfe74) +#define SEC (*(unsigned char volatile xdata *)0xfe75) +#define SSEC (*(unsigned char volatile xdata *)0xfe76) + +#define I2CCFG (*(unsigned char volatile xdata *)0xfe80) +#define I2CMSCR (*(unsigned char volatile xdata *)0xfe81) +#define I2CMSST (*(unsigned char volatile xdata *)0xfe82) +#define I2CSLCR (*(unsigned char volatile xdata *)0xfe83) +#define I2CSLST (*(unsigned char volatile xdata *)0xfe84) +#define I2CSLADR (*(unsigned char volatile xdata *)0xfe85) +#define I2CTXD (*(unsigned char volatile xdata *)0xfe86) +#define I2CRXD (*(unsigned char volatile xdata *)0xfe87) +#define I2CMSAUX (*(unsigned char volatile xdata *)0xfe88) +#define TM2PS (*(unsigned char volatile xdata *)0xfea2) +#define TM3PS (*(unsigned char volatile xdata *)0xfea3) +#define TM4PS (*(unsigned char volatile xdata *)0xfea4) +#define ADCTIM (*(unsigned char volatile xdata *)0xfea8) + +#define PWM1_ETRPS (*(unsigned char volatile xdata *)0xfeb0) +#define PWM1_ENO (*(unsigned char volatile xdata *)0xfeb1) +#define PWM1_PS (*(unsigned char volatile xdata *)0xfeb2) +#define PWM1_IOAUX (*(unsigned char volatile xdata *)0xfeb3) +#define PWM2_ETRPS (*(unsigned char volatile xdata *)0xfeb4) +#define PWM2_ENO (*(unsigned char volatile xdata *)0xfeb5) +#define PWM2_PS (*(unsigned char volatile xdata *)0xfeb6) +#define PWM2_IOAUX (*(unsigned char volatile xdata *)0xfeb7) +#define PWM1_CR1 (*(unsigned char volatile xdata *)0xfec0) +#define PWM1_CR2 (*(unsigned char volatile xdata *)0xfec1) +#define PWM1_SMCR (*(unsigned char volatile xdata *)0xfec2) +#define PWM1_ETR (*(unsigned char volatile xdata *)0xfec3) +#define PWM1_IER (*(unsigned char volatile xdata *)0xfec4) +#define PWM1_SR1 (*(unsigned char volatile xdata *)0xfec5) +#define PWM1_SR2 (*(unsigned char volatile xdata *)0xfec6) +#define PWM1_EGR (*(unsigned char volatile xdata *)0xfec7) +#define PWM1_CCMR1 (*(unsigned char volatile xdata *)0xfec8) +#define PWM1_CCMR2 (*(unsigned char volatile xdata *)0xfec9) +#define PWM1_CCMR3 (*(unsigned char volatile xdata *)0xfeca) +#define PWM1_CCMR4 (*(unsigned char volatile xdata *)0xfecb) +#define PWM1_CCER1 (*(unsigned char volatile xdata *)0xfecc) +#define PWM1_CCER2 (*(unsigned char volatile xdata *)0xfecd) +#define PWM1_CNTR (*(unsigned int volatile xdata *)0xfece) +#define PWM1_CNTRH (*(unsigned char volatile xdata *)0xfece) +#define PWM1_CNTRL (*(unsigned char volatile xdata *)0xfecf) +#define PWM1_PSCR (*(unsigned int volatile xdata *)0xfed0) +#define PWM1_PSCRH (*(unsigned char volatile xdata *)0xfed0) +#define PWM1_PSCRL (*(unsigned char volatile xdata *)0xfed1) +#define PWM1_ARR (*(unsigned int volatile xdata *)0xfed2) +#define PWM1_ARRH (*(unsigned char volatile xdata *)0xfed2) +#define PWM1_ARRL (*(unsigned char volatile xdata *)0xfed3) +#define PWM1_RCR (*(unsigned char volatile xdata *)0xfed4) +#define PWM1_CCR1 (*(unsigned int volatile xdata *)0xfed5) +#define PWM1_CCR1H (*(unsigned char volatile xdata *)0xfed5) +#define PWM1_CCR1L (*(unsigned char volatile xdata *)0xfed6) +#define PWM1_CCR2 (*(unsigned int volatile xdata *)0xfed7) +#define PWM1_CCR2H (*(unsigned char volatile xdata *)0xfed7) +#define PWM1_CCR2L (*(unsigned char volatile xdata *)0xfed8) +#define PWM1_CCR3 (*(unsigned int volatile xdata *)0xfed9) +#define PWM1_CCR3H (*(unsigned char volatile xdata *)0xfed9) +#define PWM1_CCR3L (*(unsigned char volatile xdata *)0xfeda) +#define PWM1_CCR4 (*(unsigned int volatile xdata *)0xfedb) +#define PWM1_CCR4H (*(unsigned char volatile xdata *)0xfedb) +#define PWM1_CCR4L (*(unsigned char volatile xdata *)0xfedc) +#define PWM1_BKR (*(unsigned char volatile xdata *)0xfedd) +#define PWM1_DTR (*(unsigned char volatile xdata *)0xfede) +#define PWM1_OISR (*(unsigned char volatile xdata *)0xfedf) +#define PWM2_CR1 (*(unsigned char volatile xdata *)0xfee0) +#define PWM2_CR2 (*(unsigned char volatile xdata *)0xfee1) +#define PWM2_SMCR (*(unsigned char volatile xdata *)0xfee2) +#define PWM2_ETR (*(unsigned char volatile xdata *)0xfee3) +#define PWM2_IER (*(unsigned char volatile xdata *)0xfee4) +#define PWM2_SR1 (*(unsigned char volatile xdata *)0xfee5) +#define PWM2_SR2 (*(unsigned char volatile xdata *)0xfee6) +#define PWM2_EGR (*(unsigned char volatile xdata *)0xfee7) +#define PWM2_CCMR1 (*(unsigned char volatile xdata *)0xfee8) +#define PWM2_CCMR2 (*(unsigned char volatile xdata *)0xfee9) +#define PWM2_CCMR3 (*(unsigned char volatile xdata *)0xfeea) +#define PWM2_CCMR4 (*(unsigned char volatile xdata *)0xfeeb) +#define PWM2_CCER1 (*(unsigned char volatile xdata *)0xfeec) +#define PWM2_CCER2 (*(unsigned char volatile xdata *)0xfeed) +#define PWM2_CNTR (*(unsigned int volatile xdata *)0xfeee) +#define PWM2_CNTRH (*(unsigned char volatile xdata *)0xfeee) +#define PWM2_CNTRL (*(unsigned char volatile xdata *)0xfeef) +#define PWM2_PSCR (*(unsigned int volatile xdata *)0xfef0) +#define PWM2_PSCRH (*(unsigned char volatile xdata *)0xfef0) +#define PWM2_PSCRL (*(unsigned char volatile xdata *)0xfef1) +#define PWM2_ARR (*(unsigned int volatile xdata *)0xfef2) +#define PWM2_ARRH (*(unsigned char volatile xdata *)0xfef2) +#define PWM2_ARRL (*(unsigned char volatile xdata *)0xfef3) +#define PWM2_RCR (*(unsigned char volatile xdata *)0xfef4) +#define PWM2_CCR1 (*(unsigned int volatile xdata *)0xfef5) +#define PWM2_CCR1H (*(unsigned char volatile xdata *)0xfef5) +#define PWM2_CCR1L (*(unsigned char volatile xdata *)0xfef6) +#define PWM2_CCR2 (*(unsigned int volatile xdata *)0xfef7) +#define PWM2_CCR2H (*(unsigned char volatile xdata *)0xfef7) +#define PWM2_CCR2L (*(unsigned char volatile xdata *)0xfef8) +#define PWM2_CCR3 (*(unsigned int volatile xdata *)0xfef9) +#define PWM2_CCR3H (*(unsigned char volatile xdata *)0xfef9) +#define PWM2_CCR3L (*(unsigned char volatile xdata *)0xfefa) +#define PWM2_CCR4 (*(unsigned int volatile xdata *)0xfefb) +#define PWM2_CCR4H (*(unsigned char volatile xdata *)0xfefb) +#define PWM2_CCR4L (*(unsigned char volatile xdata *)0xfefc) +#define PWM2_BKR (*(unsigned char volatile xdata *)0xfefd) +#define PWM2_DTR (*(unsigned char volatile xdata *)0xfefe) +#define PWM2_OISR (*(unsigned char volatile xdata *)0xfeff) + +#define PWMA_ETRPS (*(unsigned char volatile xdata *)0xfeb0) +#define PWMA_ENO (*(unsigned char volatile xdata *)0xfeb1) +#define PWMA_PS (*(unsigned char volatile xdata *)0xfeb2) +#define PWMA_IOAUX (*(unsigned char volatile xdata *)0xfeb3) +#define PWMB_ETRPS (*(unsigned char volatile xdata *)0xfeb4) +#define PWMB_ENO (*(unsigned char volatile xdata *)0xfeb5) +#define PWMB_PS (*(unsigned char volatile xdata *)0xfeb6) +#define PWMB_IOAUX (*(unsigned char volatile xdata *)0xfeb7) +#define PWMA_CR1 (*(unsigned char volatile xdata *)0xfec0) +#define PWMA_CR2 (*(unsigned char volatile xdata *)0xfec1) +#define PWMA_SMCR (*(unsigned char volatile xdata *)0xfec2) +#define PWMA_ETR (*(unsigned char volatile xdata *)0xfec3) +#define PWMA_IER (*(unsigned char volatile xdata *)0xfec4) +#define PWMA_SR1 (*(unsigned char volatile xdata *)0xfec5) +#define PWMA_SR2 (*(unsigned char volatile xdata *)0xfec6) +#define PWMA_EGR (*(unsigned char volatile xdata *)0xfec7) +#define PWMA_CCMR1 (*(unsigned char volatile xdata *)0xfec8) +#define PWMA_CCMR2 (*(unsigned char volatile xdata *)0xfec9) +#define PWMA_CCMR3 (*(unsigned char volatile xdata *)0xfeca) +#define PWMA_CCMR4 (*(unsigned char volatile xdata *)0xfecb) +#define PWMA_CCER1 (*(unsigned char volatile xdata *)0xfecc) +#define PWMA_CCER2 (*(unsigned char volatile xdata *)0xfecd) +#define PWMA_CNTR (*(unsigned int volatile xdata *)0xfece) +#define PWMA_CNTRH (*(unsigned char volatile xdata *)0xfece) +#define PWMA_CNTRL (*(unsigned char volatile xdata *)0xfecf) +#define PWMA_PSCR (*(unsigned int volatile xdata *)0xfed0) +#define PWMA_PSCRH (*(unsigned char volatile xdata *)0xfed0) +#define PWMA_PSCRL (*(unsigned char volatile xdata *)0xfed1) +#define PWMA_ARR (*(unsigned int volatile xdata *)0xfed2) +#define PWMA_ARRH (*(unsigned char volatile xdata *)0xfed2) +#define PWMA_ARRL (*(unsigned char volatile xdata *)0xfed3) +#define PWMA_RCR (*(unsigned char volatile xdata *)0xfed4) +#define PWMA_CCR1 (*(unsigned int volatile xdata *)0xfed5) +#define PWMA_CCR1H (*(unsigned char volatile xdata *)0xfed5) +#define PWMA_CCR1L (*(unsigned char volatile xdata *)0xfed6) +#define PWMA_CCR2 (*(unsigned int volatile xdata *)0xfed7) +#define PWMA_CCR2H (*(unsigned char volatile xdata *)0xfed7) +#define PWMA_CCR2L (*(unsigned char volatile xdata *)0xfed8) +#define PWMA_CCR3 (*(unsigned int volatile xdata *)0xfed9) +#define PWMA_CCR3H (*(unsigned char volatile xdata *)0xfed9) +#define PWMA_CCR3L (*(unsigned char volatile xdata *)0xfeda) +#define PWMA_CCR4 (*(unsigned int volatile xdata *)0xfedb) +#define PWMA_CCR4H (*(unsigned char volatile xdata *)0xfedb) +#define PWMA_CCR4L (*(unsigned char volatile xdata *)0xfedc) +#define PWMA_BKR (*(unsigned char volatile xdata *)0xfedd) +#define PWMA_DTR (*(unsigned char volatile xdata *)0xfede) +#define PWMA_OISR (*(unsigned char volatile xdata *)0xfedf) +#define PWMB_CR1 (*(unsigned char volatile xdata *)0xfee0) +#define PWMB_CR2 (*(unsigned char volatile xdata *)0xfee1) +#define PWMB_SMCR (*(unsigned char volatile xdata *)0xfee2) +#define PWMB_ETR (*(unsigned char volatile xdata *)0xfee3) +#define PWMB_IER (*(unsigned char volatile xdata *)0xfee4) +#define PWMB_SR1 (*(unsigned char volatile xdata *)0xfee5) +#define PWMB_SR2 (*(unsigned char volatile xdata *)0xfee6) +#define PWMB_EGR (*(unsigned char volatile xdata *)0xfee7) +#define PWMB_CCMR1 (*(unsigned char volatile xdata *)0xfee8) +#define PWMB_CCMR2 (*(unsigned char volatile xdata *)0xfee9) +#define PWMB_CCMR3 (*(unsigned char volatile xdata *)0xfeea) +#define PWMB_CCMR4 (*(unsigned char volatile xdata *)0xfeeb) +#define PWMB_CCER1 (*(unsigned char volatile xdata *)0xfeec) +#define PWMB_CCER2 (*(unsigned char volatile xdata *)0xfeed) +#define PWMB_CNTR (*(unsigned int volatile xdata *)0xfeee) +#define PWMB_CNTRH (*(unsigned char volatile xdata *)0xfeee) +#define PWMB_CNTRL (*(unsigned char volatile xdata *)0xfeef) +#define PWMB_PSCR (*(unsigned int volatile xdata *)0xfef0) +#define PWMB_PSCRH (*(unsigned char volatile xdata *)0xfef0) +#define PWMB_PSCRL (*(unsigned char volatile xdata *)0xfef1) +#define PWMB_ARR (*(unsigned int volatile xdata *)0xfef2) +#define PWMB_ARRH (*(unsigned char volatile xdata *)0xfef2) +#define PWMB_ARRL (*(unsigned char volatile xdata *)0xfef3) +#define PWMB_RCR (*(unsigned char volatile xdata *)0xfef4) +#define PWMB_CCR5 (*(unsigned int volatile xdata *)0xfef5) +#define PWMB_CCR5H (*(unsigned char volatile xdata *)0xfef5) +#define PWMB_CCR5L (*(unsigned char volatile xdata *)0xfef6) +#define PWMB_CCR6 (*(unsigned int volatile xdata *)0xfef7) +#define PWMB_CCR6H (*(unsigned char volatile xdata *)0xfef7) +#define PWMB_CCR6L (*(unsigned char volatile xdata *)0xfef8) +#define PWMB_CCR7 (*(unsigned int volatile xdata *)0xfef9) +#define PWMB_CCR7H (*(unsigned char volatile xdata *)0xfef9) +#define PWMB_CCR7L (*(unsigned char volatile xdata *)0xfefa) +#define PWMB_CCR8 (*(unsigned int volatile xdata *)0xfefb) +#define PWMB_CCR8H (*(unsigned char volatile xdata *)0xfefb) +#define PWMB_CCR8L (*(unsigned char volatile xdata *)0xfefc) +#define PWMB_BKR (*(unsigned char volatile xdata *)0xfefd) +#define PWMB_DTR (*(unsigned char volatile xdata *)0xfefe) +#define PWMB_OISR (*(unsigned char volatile xdata *)0xfeff) + +///////////////////////////////////////////////// +//FD00H-FDFFH +///////////////////////////////////////////////// + +#define P0INTE (*(unsigned char volatile xdata *)0xfd00) +#define P1INTE (*(unsigned char volatile xdata *)0xfd01) +#define P2INTE (*(unsigned char volatile xdata *)0xfd02) +#define P3INTE (*(unsigned char volatile xdata *)0xfd03) +#define P4INTE (*(unsigned char volatile xdata *)0xfd04) +#define P5INTE (*(unsigned char volatile xdata *)0xfd05) +#define P6INTE (*(unsigned char volatile xdata *)0xfd06) +#define P7INTE (*(unsigned char volatile xdata *)0xfd07) +#define P0INTF (*(unsigned char volatile xdata *)0xfd10) +#define P1INTF (*(unsigned char volatile xdata *)0xfd11) +#define P2INTF (*(unsigned char volatile xdata *)0xfd12) +#define P3INTF (*(unsigned char volatile xdata *)0xfd13) +#define P4INTF (*(unsigned char volatile xdata *)0xfd14) +#define P5INTF (*(unsigned char volatile xdata *)0xfd15) +#define P6INTF (*(unsigned char volatile xdata *)0xfd16) +#define P7INTF (*(unsigned char volatile xdata *)0xfd17) +#define P0IM0 (*(unsigned char volatile xdata *)0xfd20) +#define P1IM0 (*(unsigned char volatile xdata *)0xfd21) +#define P2IM0 (*(unsigned char volatile xdata *)0xfd22) +#define P3IM0 (*(unsigned char volatile xdata *)0xfd23) +#define P4IM0 (*(unsigned char volatile xdata *)0xfd24) +#define P5IM0 (*(unsigned char volatile xdata *)0xfd25) +#define P6IM0 (*(unsigned char volatile xdata *)0xfd26) +#define P7IM0 (*(unsigned char volatile xdata *)0xfd27) +#define P0IM1 (*(unsigned char volatile xdata *)0xfd30) +#define P1IM1 (*(unsigned char volatile xdata *)0xfd31) +#define P2IM1 (*(unsigned char volatile xdata *)0xfd32) +#define P3IM1 (*(unsigned char volatile xdata *)0xfd33) +#define P4IM1 (*(unsigned char volatile xdata *)0xfd34) +#define P5IM1 (*(unsigned char volatile xdata *)0xfd35) +#define P6IM1 (*(unsigned char volatile xdata *)0xfd36) +#define P7IM1 (*(unsigned char volatile xdata *)0xfd37) +#define P0WKUE (*(unsigned char volatile xdata *)0xfd40) +#define P1WKUE (*(unsigned char volatile xdata *)0xfd41) +#define P2WKUE (*(unsigned char volatile xdata *)0xfd42) +#define P3WKUE (*(unsigned char volatile xdata *)0xfd43) +#define P4WKUE (*(unsigned char volatile xdata *)0xfd44) +#define P5WKUE (*(unsigned char volatile xdata *)0xfd45) +#define P6WKUE (*(unsigned char volatile xdata *)0xfd46) +#define P7WKUE (*(unsigned char volatile xdata *)0xfd47) +#define PIN_IP (*(unsigned char volatile xdata *)0xfd60) +#define PIN_IPH (*(unsigned char volatile xdata *)0xfd61) + +///////////////////////////////////////////////// +//FC00H-FCFFH +///////////////////////////////////////////////// + +#define MD3 (*(unsigned char volatile xdata *)0xfcf0) +#define MD2 (*(unsigned char volatile xdata *)0xfcf1) +#define MD1 (*(unsigned char volatile xdata *)0xfcf2) +#define MD0 (*(unsigned char volatile xdata *)0xfcf3) +#define MD5 (*(unsigned char volatile xdata *)0xfcf4) +#define MD4 (*(unsigned char volatile xdata *)0xfcf5) +#define ARCON (*(unsigned char volatile xdata *)0xfcf6) +#define OPCON (*(unsigned char volatile xdata *)0xfcf7) + +///////////////////////////////////////////////// +//FB00H-FBFFH +///////////////////////////////////////////////// + +#define COMEN (*(unsigned char volatile xdata *)0xfb00) +#define SEGENL (*(unsigned char volatile xdata *)0xfb01) +#define SEGENH (*(unsigned char volatile xdata *)0xfb02) +#define LEDCTRL (*(unsigned char volatile xdata *)0xfb03) +#define LEDCKS (*(unsigned char volatile xdata *)0xfb04) +#define COM0_DA_L (*(unsigned char volatile xdata *)0xfb10) +#define COM1_DA_L (*(unsigned char volatile xdata *)0xfb11) +#define COM2_DA_L (*(unsigned char volatile xdata *)0xfb12) +#define COM3_DA_L (*(unsigned char volatile xdata *)0xfb13) +#define COM4_DA_L (*(unsigned char volatile xdata *)0xfb14) +#define COM5_DA_L (*(unsigned char volatile xdata *)0xfb15) +#define COM6_DA_L (*(unsigned char volatile xdata *)0xfb16) +#define COM7_DA_L (*(unsigned char volatile xdata *)0xfb17) +#define COM0_DA_H (*(unsigned char volatile xdata *)0xfb18) +#define COM1_DA_H (*(unsigned char volatile xdata *)0xfb19) +#define COM2_DA_H (*(unsigned char volatile xdata *)0xfb1a) +#define COM3_DA_H (*(unsigned char volatile xdata *)0xfb1b) +#define COM4_DA_H (*(unsigned char volatile xdata *)0xfb1c) +#define COM5_DA_H (*(unsigned char volatile xdata *)0xfb1d) +#define COM6_DA_H (*(unsigned char volatile xdata *)0xfb1e) +#define COM7_DA_H (*(unsigned char volatile xdata *)0xfb1f) +#define COM0_DC_L (*(unsigned char volatile xdata *)0xfb20) +#define COM1_DC_L (*(unsigned char volatile xdata *)0xfb21) +#define COM2_DC_L (*(unsigned char volatile xdata *)0xfb22) +#define COM3_DC_L (*(unsigned char volatile xdata *)0xfb23) +#define COM4_DC_L (*(unsigned char volatile xdata *)0xfb24) +#define COM5_DC_L (*(unsigned char volatile xdata *)0xfb25) +#define COM6_DC_L (*(unsigned char volatile xdata *)0xfb26) +#define COM7_DC_L (*(unsigned char volatile xdata *)0xfb27) +#define COM0_DC_H (*(unsigned char volatile xdata *)0xfb28) +#define COM1_DC_H (*(unsigned char volatile xdata *)0xfb29) +#define COM2_DC_H (*(unsigned char volatile xdata *)0xfb2a) +#define COM3_DC_H (*(unsigned char volatile xdata *)0xfb2b) +#define COM4_DC_H (*(unsigned char volatile xdata *)0xfb2c) +#define COM5_DC_H (*(unsigned char volatile xdata *)0xfb2d) +#define COM6_DC_H (*(unsigned char volatile xdata *)0xfb2e) +#define COM7_DC_H (*(unsigned char volatile xdata *)0xfb2f) + +#define TSCHEN1 (*(unsigned char volatile xdata *)0xfb40) +#define TSCHEN2 (*(unsigned char volatile xdata *)0xfb41) +#define TSCFG1 (*(unsigned char volatile xdata *)0xfb42) +#define TSCFG2 (*(unsigned char volatile xdata *)0xfb43) +#define TSWUTC (*(unsigned char volatile xdata *)0xfb44) +#define TSCTRL (*(unsigned char volatile xdata *)0xfb45) +#define TSSTA1 (*(unsigned char volatile xdata *)0xfb46) +#define TSSTA2 (*(unsigned char volatile xdata *)0xfb47) +#define TSRT (*(unsigned char volatile xdata *)0xfb48) +#define TSDAT (*(unsigned int volatile xdata *)0xfb49) +#define TSDATH (*(unsigned char volatile xdata *)0xfb49) +#define TSDATL (*(unsigned char volatile xdata *)0xfb4A) +#define TSTH00 (*(unsigned int volatile xdata *)0xfb50) +#define TSTH00H (*(unsigned char volatile xdata *)0xfb50) +#define TSTH00L (*(unsigned char volatile xdata *)0xfb51) +#define TSTH01 (*(unsigned int volatile xdata *)0xfb52) +#define TSTH01H (*(unsigned char volatile xdata *)0xfb52) +#define TSTH01L (*(unsigned char volatile xdata *)0xfb53) +#define TSTH02 (*(unsigned int volatile xdata *)0xfb54) +#define TSTH02H (*(unsigned char volatile xdata *)0xfb54) +#define TSTH02L (*(unsigned char volatile xdata *)0xfb55) +#define TSTH03 (*(unsigned int volatile xdata *)0xfb56) +#define TSTH03H (*(unsigned char volatile xdata *)0xfb56) +#define TSTH03L (*(unsigned char volatile xdata *)0xfb57) +#define TSTH04 (*(unsigned int volatile xdata *)0xfb58) +#define TSTH04H (*(unsigned char volatile xdata *)0xfb58) +#define TSTH04L (*(unsigned char volatile xdata *)0xfb59) +#define TSTH05 (*(unsigned int volatile xdata *)0xfb5a) +#define TSTH05H (*(unsigned char volatile xdata *)0xfb5a) +#define TSTH05L (*(unsigned char volatile xdata *)0xfb5b) +#define TSTH06 (*(unsigned int volatile xdata *)0xfb5c) +#define TSTH06H (*(unsigned char volatile xdata *)0xfb5c) +#define TSTH06L (*(unsigned char volatile xdata *)0xfb5d) +#define TSTH07 (*(unsigned int volatile xdata *)0xfb5e) +#define TSTH07H (*(unsigned char volatile xdata *)0xfb5e) +#define TSTH07L (*(unsigned char volatile xdata *)0xfb5f) +#define TSTH08 (*(unsigned int volatile xdata *)0xfb60) +#define TSTH08H (*(unsigned char volatile xdata *)0xfb60) +#define TSTH08L (*(unsigned char volatile xdata *)0xfb61) +#define TSTH09 (*(unsigned int volatile xdata *)0xfb62) +#define TSTH09H (*(unsigned char volatile xdata *)0xfb62) +#define TSTH09L (*(unsigned char volatile xdata *)0xfb63) +#define TSTH10 (*(unsigned int volatile xdata *)0xfb64) +#define TSTH10H (*(unsigned char volatile xdata *)0xfb64) +#define TSTH10L (*(unsigned char volatile xdata *)0xfb65) +#define TSTH11 (*(unsigned int volatile xdata *)0xfb66) +#define TSTH11H (*(unsigned char volatile xdata *)0xfb66) +#define TSTH11L (*(unsigned char volatile xdata *)0xfb67) +#define TSTH12 (*(unsigned int volatile xdata *)0xfb68) +#define TSTH12H (*(unsigned char volatile xdata *)0xfb68) +#define TSTH12L (*(unsigned char volatile xdata *)0xfb69) +#define TSTH13 (*(unsigned int volatile xdata *)0xfb6a) +#define TSTH13H (*(unsigned char volatile xdata *)0xfb6a) +#define TSTH13L (*(unsigned char volatile xdata *)0xfb6b) +#define TSTH14 (*(unsigned int volatile xdata *)0xfb6c) +#define TSTH14H (*(unsigned char volatile xdata *)0xfb6c) +#define TSTH14L (*(unsigned char volatile xdata *)0xfb6d) +#define TSTH15 (*(unsigned int volatile xdata *)0xfb6e) +#define TSTH15H (*(unsigned char volatile xdata *)0xfb6e) +#define TSTH15L (*(unsigned char volatile xdata *)0xfb6f) + +///////////////////////////////////////////////// +//FA00H-FAFFH +///////////////////////////////////////////////// + + +///////////////////////////////////////////////// + +#endif + diff --git a/source/ctask/task.c b/source/ctask/task.c index 15e272c..0835750 100644 --- a/source/ctask/task.c +++ b/source/ctask/task.c @@ -2,83 +2,29 @@ *============================================================================ * HISTORY * Below this line, this part is controlled by TSTS. DO NOT MODIFY!! -伪时间片嵌入式平台(Task Step by Step Turn by Turn Structure,简称TSTS) +浼椂闂寸墖宓屽叆寮忓钩鍙(Task Step by Step Turn by Turn Structure锛岀畝绉癟STS锛 *============================================================================ ****************************************************************************/ #include "task.h" -//任务命名规则: -// 1:第一层 -/// 0驱动芯片级 flash -/// 1芯片应用级 save -/// 2任务应用级 jilu_save +//浠诲姟鍛藉悕瑙勫垯: +// 1:绗竴灞 +/// 0椹卞姩鑺墖绾 flash +/// 1鑺墖搴旂敤绾 save +/// 2浠诲姟搴旂敤绾 jilu_save // -// 2:第二层/flash/i2c/7290/等各类芯片 -// 3:任务序号/不同的芯片/ +// 2:绗簩灞/flash/i2c/7290/绛夊悇绫昏姱鐗 +// 3:浠诲姟搴忓彿/涓嶅悓鐨勮姱鐗/ // -void L1_task_init(TS_task *s) +void L1_task_init(TS_task *s) { -// s->en = 1; -// s->pfun = 0; + s->en = 1; s->sh = 0; s->sh_next= 0; -/// s->sh_pre= 0; s->n= 0; } - -/////》》》》》》》》》》》》》》》》供演示task 结构的使用 不可删除 -#define D_task_test_01 0x20 -#define D_task_test_02 0x22 -#define D_task_test_03 0x23 -#ifdef D_debug_task_test -////>>>>>>>>>>>>>>>>>>>>>_s_task_test_>>>>>>>>>>>>>>>>>>>>>> -struct _s_task_test_ s_task_test; -void L2_task_test_init(void) -{ -ddd - L1_task_init(&s_task_test.task); - L3_task_s_go(s_task_test,D_task_init); -} - - -///L2_task_test_handle(&s_task_test); -void L2_task_test_handle(struct _s_task_test_ *s) -{ - unsigned char d = 0; - TTSS_Task_init(); - L2_task_go(D_task_test_01); - TTSS_Task_step(D_task_test_01): - if(d > 8) - { - d = 0; - L2_task_go(D_task_test_02); - L1_task_Cdelay(D_Cdelay_200us); - }else - { - d ++; - } - TTSS_Task_step(D_task_test_02): - if(d > 4) - { - d = 0; - L2_task_go(D_task_test_01); - L1_task_Tdelay(D_Tdelay_100ms); - }else - { - d ++; - } - - TTSS_Task_end(); -} -#endif//#ifdef D_debug_task_test -////<<<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<< - -/////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<供演示task 结构的使用 不可删除 - - -//example : #if 0 @@ -149,7 +95,7 @@ void L2_task_voice_handle(struct _s_task_music_ *s) }else { - L2_task_go_father();//回到 + L2_task_go_father();//鍥炲埌 } break; //<<<<<<<<<<<<<<<<<<<<<< son function @@ -205,11 +151,11 @@ void L2_task_voice_handle(struct _s_task_music_ *s) } //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -//>>>>>>>>>>>>>>>>>>>>>记录task +//>>>>>>>>>>>>>>>>>>>>>璁板綍task struct _s_task_4ChuShengRiQi_ { TS_task task; - unsigned char pic_id;//画面ID + unsigned char pic_id;//鐢婚潰ID }; @@ -256,7 +202,7 @@ void L2_task_4ChuShengRiQi_handle(struct _s_task_4ChuShengRiQi_ *s) -//<<<<<<<<<<<<<<<<<<<记录task +//<<<<<<<<<<<<<<<<<<<璁板綍task @@ -272,9 +218,9 @@ void L2_task_4ChuShengRiQi_handle(struct _s_task_4ChuShengRiQi_ *s) /***************************************************** *============================================================== -* HISTORY +* HISTORYmm * Below this line, this part is controlled by TSTS. DO NOT MODIFY!! -伪时间片嵌入式平台(Task Step by Step Turn by Turn Structure,简称TSTS) +浼椂闂寸墖宓屽叆寮忓钩鍙(Task Step by Step Turn by Turn Structure锛岀畝绉癟STS锛 *============================================================== ****************************************************************************/ diff --git a/source/ctask/task.h b/source/ctask/task.h index 5b08832..33cde0e 100644 --- a/source/ctask/task.h +++ b/source/ctask/task.h @@ -1,25 +1,20 @@ /******************************** 2013.7.23 add dictionary and task step by cc -任务:task -任务段:task step -任务标志:sh ( struct handle) +浠诲姟:task +浠诲姟娈:task step +浠诲姟鏍囧織:sh ( struct handle) -下一个任务段sh_next -缓存的任务段,sh_next执行完后执行sh_pre +涓嬩竴涓换鍔℃sh_next +缂撳瓨鐨勪换鍔℃,sh_next鎵ц瀹屽悗鎵цsh_pre ***************************/ /***************************************************** *============================================================== * HISTORY * Below this line, this part is controlled by TSTS. DO NOT MODIFY!! -伪时间片嵌入式平台(Task Step by Step Turn by Turn Structure,简称TSTS) +浼椂闂寸墖宓屽叆寮忓钩鍙(Task Step by Step Turn by Turn Structure锛岀畝绉癟STS锛 *============================================================== - -20190217 and step01 并且把delay_n添加括号保护 - - - ****************************************************************************/ #ifndef _TASK_H_ @@ -29,258 +24,135 @@ #include "task.h" #include "tick.h" -typedef struct +typedef struct _ts_task { + volatile UN_TYPE en; //鍏抽棴浠诲姟,涔熷彲浠ョ悊瑙d负鏆傚仠,浣嗘槸浣跨敤idelay鐨勫湴鏂规椂闂村湪鍚庡彴璁℃暟浠诲姟鍦ㄥ欢鏃跺埌浜嗗悗鎵嶆殏鍋,鑰岀殑delay鐩稿綋浜庢殏鍋 + volatile UN_TYPE sh; //褰撳墠浠诲姟娈 + volatile UN_TYPE sh_next; //涓嬩竴涓换鍔℃,骞朵笉浠h〃涓瀹氫笅涓浠诲姟娈典竴瀹氭槸浠,鏈夊彲鑳戒腑闂存彃鍏ュ欢鏃剁瓑浠诲姟娈 + volatile UN_TYPE sh_pre; //鍓嶄竴涓换鍔℃,涓鑸负璋冨嚭缂撳瓨浠诲姟娈典娇鐢 vU32 n; -/// volatile UN_TYPE en; //关闭任务,也可以理解为暂停,但是使用idelay的地方时间在后台计数任务在延时到了后才暂停,而的delay相当于暂停 - volatile UN_TYPE sh; //当前任务段 - volatile UN_TYPE sh_next; //下一个任务段,并不代表一定下一任务段一定是他,有可能中间插入延时等任务段 -/// volatile UN_TYPE sh_pre; //前一个任务段,一般为调出缓存任务段使用 }TS_task; -//extern TS_task ts_task_stcadc; -#define D_task_close 0 +#define D_task_close 0 +#if 0 #define D_task_Tdelay 0x01 #define D_task_stop 0x04 #define D_task_Cdelay 0x09 #define D_task_init 0x10 #define D_task_quit 0xf0 +#else -#define TTS_for_add(i,start,len) for((i) = (start); (i) < (len); (i) ++){ -#define TTS_for_add_end() } - - +#define D_task_init 0xf0 +#define D_task_Tdelay 0xf1 +#define D_task_Cdelay 0xf2 +#define D_task_stop 0xf3 +#define D_task_quit 0xf4 +#endif -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>内部调用 s->task +//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>鍐呴儴璋冪敤 s->task #define L2_task_delay_over() s->task.sh = s->task.sh_next -#define L2_task_go(next) s->task.sh = next -#define L2_task_en(onf) s->task.en = onf +#define L2_task_go(next) s->task.sh = next; +//#define L2_task_gogogo(next) s->task.sh = next; +#define L2_task_en(onf) s->task.en = onf; -#define L2_task_busy(s) (D_task_close != s.task.sh) -#define L2_task_free(s) (D_task_close == s.task.sh) +#define L2_task_busy(s) (D_task_close != s.task.sh) +#define L2_task_free(s) (D_task_close == s.task.sh) -#define L2_task_go_father() s->task.sh = s->task.sh_pre -#define L2_task_go_son(fun,pre) s->task.sh = fun;s->task.sh_pre = pre +#define L2_task_go_father() s->task.sh = s->task.sh_pre; +#define L2_task_go_son(fun,pre) s->task.sh = fun;s->task.sh_pre = pre; - -//>task 定时>>>>>>>>>>>>>>TTSS -/// D_task_Tdelay == task timer delay 需要额外有个定时单元 和time0定时器设置相关 -/// Delay_cycle适用于 时间短的,其一次循环取决于主循环的时间,和Tdelay比,Cdelay长时间计时误差大 +/// task 瀹氭椂>>>>>>>>>>>>>>TTSS +/// D_task_Tdelay == task timer delay 闇瑕侀澶栨湁涓畾鏃跺崟鍏 鍜宼ime0瀹氭椂鍣ㄨ缃浉鍏 +/// Delay_cycle閫傜敤浜 鏃堕棿鐭殑,鍏朵竴娆″惊鐜彇鍐充簬涓诲惊鐜殑鏃堕棿,鍜孴delay姣,Cdelay闀挎椂闂磋鏃惰宸ぇ #define L2_task_switch_default_idelay(); \ case D_task_Tdelay:\ - if (s_nos_tick.t_10ms >= s->task.n)\ + if (s_nos_tick.jiffies >= s->task.n)\ {\ L2_task_delay_over();\ }\ break; \ - case D_task_Cdelay:\ - s->task.n--; \ - if (s->task.n == 0) \ - { \ - s->task.n = 0; \ - L2_task_delay_over();\ - } \ - break;\ - default : \ - break; -#if 0 - -#define L2_task_switch_default_idelay2(); \ - case D_task_Tdelay:\ - if (s_nos_tick.t_10ms >= s->task.n)\ - {\ + case D_task_Cdelay:\ + s->task.n--; \ + if (s->task.n == 0) \ + { \ + s->task.n = 0; \ L2_task_delay_over();\ - }else\ - {\ - L2_time_beat_heart(D_TBH_ch0,3,'i');\ - }\ - break; \ - case D_task_Cdelay:\ - s->task.n--; \ - if (s->task.n == 0) \ - { \ - s->task.n = 0; \ - L2_task_delay_over();\ - } \ - break;\ + } \ + break;\ default : \ break; - - -//在等待的过程中设置间隔时间,定时调用funxx -//这样在等待的空闲时间可以定时显示一些心跳信息和 -//执行心跳功能 - -#define L2_task_switch_fun_idelay(invent,ch) L2_task_switch_default_idelay() -#define L2_task_switch_fun_idelay0000(chhh,invent,funxx); \ - case D_task_Tdelay:\ - if (s_nos_tick.t_10ms >= s->task.n)\ - {\ - L2_task_delay_over();\ - }else\ - {\ - L2_time_beat_heart_fun(chhh,invent,funxx);\ - }\ - break; \ - case D_task_Cdelay:\ - s->task.n--; \ - if (s->task.n == 0) \ - { \ - s->task.n = 0; \ - L2_task_delay_over();\ - } \ - break;\ - default : \ - break; - - - - -//在等待的过程中设置间隔时间,定时显示字符ch -//这样在等待的空闲时间可以定时显示一些待机信息ch -// 通过ch表明目前运行的阶段和心跳信息 -#define L2_task_switch_flag_idelay(invent,ch) L2_task_switch_default_idelay() -#define L2_task_switch_flag_idelay000(invent,ch); \ - case D_task_Tdelay:\ - if (s_nos_tick.t_10ms >= s->task.n)\ - {\ - L2_task_delay_over();\ - }else\ - {\ - L2_time_beat_heart(D_TBH_ch0,invent,ch);\ - }\ - break; \ - case D_task_Cdelay:\ - s->task.n--; \ - if (s->task.n == 0) \ - { \ - s->task.n = 0; \ - L2_task_delay_over();\ - } \ - break;\ - default : \ - break; - - -TTSS_Task_init, Highlight -TTSS_Task_step, Highlight -TTSS_Task_end, Highlight -L2_task_go, Highlight -L1_task_Tdelay, Highlight -L1_task_Cdelay, Highlight -L2_task_go, Highlight - - - - -#endif - - //if(delay_n+s_time0.t_10ms > 655340) //{s_time0.t_10ms = 0;} - -//fix 201312 防止s_time0.t_10ms 溢出 -// 但是有风险 -//>>L2_task_delay一定要放在L2_task_go之后 +//fix 201312 闃叉s_time0.t_10ms 婧㈠嚭 +// 浣嗘槸鏈夐闄 +//>>L2_task_delay涓瀹氳鏀惧湪L2_task_go涔嬪悗 #define L1_task_Tdelay(delay_n) s->task.sh_next = s->task.sh;\ s->task.sh = D_task_Tdelay;\ - s->task.n = (delay_n) + s_nos_tick.t_10ms; + s->task.n = delay_n + s_nos_tick.jiffies; -//>>L2_task_delay一定要放在L2_task_go之后 +//>>L2_task_delay涓瀹氳鏀惧湪L2_task_go涔嬪悗 #define L1_task_Cdelay(delay_n) s->task.sh_next = s->task.sh;\ - s->task.sh = D_task_Cdelay;\ - s->task.n = (delay_n) - - -//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<内部调用 s->task - -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 外部调用 + s->task.sh = D_task_Cdelay;\ + s->task.n = delay_n + +#define L2_task_go_Tdelay(next,delay_n) do{ \ + if(delay_n) \ + { \ + s->task.sh_next = next;\ + s->task.sh = D_task_Tdelay;\ + s->task.n = (delay_n) + s_nos_tick.jiffies; \ + } \ + else \ + { \ + s->task.sh = next; \ + } \ + }while(0) + +#define L2_task_go_Cdelay(next,delay_n) do{ \ + if(delay_n) \ + { \ + s->task.sh_next = next;\ + s->task.sh = D_task_Cdelay;\ + s->task.n = (delay_n); \ + } \ + else \ + { \ + s->task.sh = next; \ + } \ + }while(0) + +//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 澶栭儴璋冪敤 +#define L3_task_s_go(s,next) (s).task.sh = next; #define L2_task_s_go_son(s,fun,pre) (s).task.sh = fun;(s).task.sh_pre = pre; - #define L3_task_s_time_start(s,delay) (s).task.n = delay+s_nos_tick.t_1s; -#define L3_task_s_go(s,next) (s).task.sh = next; #define L3_task_s_en(s,onf) (s).task.en = onf; -//L1_task_goout(s_task_music.task,D_task_close); - #define L3_task_s_busy(s) (D_task_close != (s).task.sh) #define L3_task_s_free(s) (D_task_close == (s).task.sh) - #define L3_task_s_step(s) ((s).task.sh) - -#define D_task_uc unsigned char -#define D_task_ui unsigned int ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#define TTSS_Task_init() switch(s->task.sh){\ - case D_task_init - -#define TTSS_Task_step(step) break;\ - case (step) -#define TTSS_step01(step) break;case (step) -#define TTSS_step02(step) break;case (step) -#define TTSS_step03(step) break;case (step) -#define TTSS_step04(step) break;case (step) -#define TTSS_step05(step) break;case (step) -#define TTSS_step06(step) break;case (step) -#define TTSS_step07(step) break;case (step) -#define TTSS_step08(step) break;case (step) -#define TTSS_step09(step) break;case (step) -#define TTSS_step10(step) break;case (step) -#define TTSS_step11(step) break;case (step) -#define TTSS_step12(step) break;case (step) - - - - - - - -#define TTSS_Task_end(); break;\ - L2_task_switch_default_idelay();} - - +#define TTSS_Task_init(); switch(s->task.sh)\ + {\ + case D_task_init:{\ + +#define TTSS_Task_step(step); break;}\ + case (step):{ +#define TTSS_Task_end(); break;}\ + L2_task_switch_default_idelay();} +#define TTSS_Task_fun(step); break;}\ + case (step):{ //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - extern void L1_task_init(TS_task *s); - - -////>>>>>>>>>>>>>>>>>>>_s_task_test_>>>>>>>>>>>>>>>>>>>>>>>> - -#ifdef D_debug_task_test - -struct _s_task_test_ -{ - TS_task task; -}; -extern struct _s_task_test_ s_task_test; -extern void L2_task_test_handle(struct _s_task_test_ *s); -extern void L2_task_test_init(void); -#else - -#define L2_task_test_handle(x); -#define L2_task_test_init(); - -#endif//#ifdef D_debug_task_test - -////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<< - - - - - - - - #endif//_TASK_H_ /***************************************************** *============================================================== -* HISTORY +* HISTORY * Below this line, this part is controlled by TSTS. DO NOT MODIFY!! -伪时间片嵌入式平台(Task Step by Step Turn by Turn Structure,简称TSTS) +浼椂闂寸墖宓屽叆寮忓钩鍙(Task Step by Step Turn by Turn Structure锛岀畝绉癟STS锛 *============================================================== ****************************************************************************/ diff --git a/source/ctask/tick.c b/source/ctask/tick.c index 0d3d01d..3644450 100644 --- a/source/ctask/tick.c +++ b/source/ctask/tick.c @@ -7,127 +7,42 @@ * History * 2009.05.27 ver 1.00 Prelimnary version, first Release *2017.01.10 ver 1.10 rename tick.h tick.c - 2019.03.11 ver 1.30 定时时间更改为25ms 解决串口接收受干扰的情况 ****************************************************************************************/ -/***************************************************** -*============================================================================ -* HISTORY -* Below this line, this part is controlled by TSTS. DO NOT MODIFY!! -伪时间片嵌入式平台(Task Step by Step Turn by Turn Structure,简称TSTS) -*============================================================================ -****************************************************************************/ - #include "tick.h" - struct _s_nos_tick_ s_nos_tick; - - -#ifdef D_use_tick_fum +/********************************************************************************************************* +* Function Name: timer0Isr +* Description: TIMER0 涓柇澶勭悊鍑芥暟 +* Input: 鏃? +* Output: 鏃? +* Return: 鏃? +*********************************************************************************************************/ void L1_tick_init(void) { - s_nos_tick.tp_count = 0; - - s_nos_tick.n_stamp = 0; - s_nos_tick.t1s_heatbeart= 0; - /***** - s_nos_tick.t1s_flag[0] = 0; - s_nos_tick.t1s_flag[1] = 0; - s_nos_tick.t1s_flag[2] = 0; - s_nos_tick.t1s_flag[3] = 0; - s_nos_tick.t1s_flag[4] = 0; - s_nos_tick.t1s_flag[5] = 0; - if(L2_tick_time_interval(n_stamp,7*D_Tdelay_1s)) - {// 时间溢出 - - - L2_tick_time_stamp(s->t_stamp); - - - ********/ - - s_nos_tick.t_10ms = 0; + s_nos_tick.jiffies = 0; s_nos_tick.t_1s = 0; - -/// s_nos_tick.flag_1s = 0; - -/// s_nos_tick.t_n = 0; - //s_nos_tick.tmp = 0; - //L0_timer0_ONF(1); -} - -/// 定时器调用 10ms 一个中断 -/// 定时器调用 25ms 一个中断 -void L1_tick_tick (void) -{ /// 65535*65535 /3600/24/365=139nian/s=1.39nian/10ms - ///相当于1.39年后t_10ms 溢出,对于电池供电的系统而言 完全可以满足 - // 4,294,836,225 = 65535*65535 ;3600*24*60*60 = 31,536,000秒/年 - s_nos_tick.tp_count++; - s_nos_tick.t_10ms ++;//D_led_D1_REV(); 20160522 验证 - if(s_nos_tick.t_10ms%D_TIMER0_1S_COUNT == 0) - {// 65535*65535/24/60/60/356/10 =12.7年 - s_nos_tick.t_1s ++;//// 65535*65535/24/60/60/356/10 =12.7年 - s_nos_tick.flag_1s2 = 1; - s_nos_tick.t1s_heatbeart = 1; - } -//<<<<<<<<<<<<<<<<<<<<<< + s_nos_tick.t1s_heatbeart= 0; } -#else -#endif -#if 0 +//JIFFIES鍥炵粫闂娌℃湁瑙e喅 鍙傝 linux time_after瀹忓畾涔 void L1_tick_tick (void) -{ - s_nos_tick.t_n++; - if (s_nos_tick.t_n >= D_TIMER0_10MS_COUNT)// 5500--- 100 10s--556 - /// s 5ms 65535*65535 /3600/24/365=139nian/s - // 4,294,836,225 = 65535*65535 ;3600*24*60*60 = 31,536,000秒/年 - // fixme:此处 保留了一个百年bug:) +{ + ///65535*65535/3600/24/365=139nian/s=1.39nian/10ms + ///鐩稿綋浜1.39骞村悗t_10ms 婧㈠嚭锛屽浜庣數姹犱緵鐢电殑绯荤粺鑰岃█ 瀹屽叏鍙互婊¤冻 + // 4,294,836,225 = 65535*65535 ;3600*24*60*60 = 31,536,000绉/骞 + //s_nos_tick.t_50ms ++;//D_led_D1_REV(); 20160522楠岃瘉 + s_nos_tick.jiffies++; + if(s_nos_tick.jiffies % HZ == 0) { - s_nos_tick.t_10ms ++;//D_led_D1_REV(); 20160522 验证 - if(s_nos_tick.t_10ms%D_TIMER0_1S_COUNT == 0) - {// 65535*65535/24/60/60/356/10 =12.7年 - s_nos_tick.t_1s ++;// - - // led_red =~led_red; - //s_nos_tick.t1s_flag[0] = 1; - //s_nos_tick.t1s_flag[1] = 1; - //s_nos_tick.t1s_flag[2] = 1; - //s_nos_tick.t1s_flag[3] = 1; - //s_nos_tick.t1s_flag[4] = 1; - //s_nos_tick.t1s_flag[5] = 1; - s_nos_tick.flag_1s = 1; - s_nos_tick.t1s_heatbeart = 1; - } - s_nos_tick.t_n = 0; + // 65535*65535/24/60/60/356/10 =12.7骞 + s_nos_tick.t_1s ++; + s_nos_tick.t1s_heatbeart = 1; } - /******************* -// 0.2mm 4/0.2 = 20 20/60s = 333ms/maicong -// 0.2mm 60s 60 100 ms -// 0.2 6000ms -// 平时为1 水满一次为0 -// rain = 1;必须要做的初始化 - if(0 == rain) - { - if(1 == s_rain.temp) - {// ````\___ - s_rain.pool = s_rain.t; - s_rain.all ++; - s_rain.t = 0; - } - s_rain.temp = 0; - }else - { - s_rain.temp = 1; - } - s_rain.t ++; - - ******/ -//<<<<<<<<<<<<<<<<<<<<<< } -#endif + diff --git a/source/ctask/tick.h b/source/ctask/tick.h index dafeb42..bc47af5 100644 --- a/source/ctask/tick.h +++ b/source/ctask/tick.h @@ -8,202 +8,80 @@ * 2009.05.27 ver 1.00 Prelimnary version, first Release *2017.01.10 ver 1.10 rename tick.h tick.c ******************************************************************************/ -/***************************************************** -*============================================================================ -* HISTORY -* Below this line, this part is controlled by TSTS. DO NOT MODIFY!! -伪时间片嵌入式平台(Task Step by Step Turn by Turn Structure,简称TSTS) -*============================================================================ -****************************************************************************/ #ifndef __tick_H #define __tick_H #include "../clib/Type.h" -//#include "../bsp/type_hs.h" #include "../msp/time.h" -#define D_use_tick_fum - struct _s_nos_tick_ { - vU32 tp_count; //最后一次接收数据时间到目前的tick数量 -/// vU32 sys_clock; -// vU32 t_n; // noos系统定时器最小技术单元 - vU32 t_10ms; // noos 系统定时器10m技术 -#ifdef D_use_tick_fum - - - //volatile INT32U t_100ms; + vU32 jiffies; // noos绯荤粺瀹氭椂鍣ㄦ渶灏忚鏃跺崟鍏 vU32 t_1s; -/// vU32 t_10s; -// vU32 t_60s; - vU8 flag_1s; - vU8 flag_1s2; -/// volatile INT32U tmp; -/// volatile INT32U time_left; -/// volatile INT32U h; -/// volatile INT32U m; - vU32 n_stamp; -// vU32 t1s_flag[6]; //fixme: INT32U 根据不同的系统来决定 - //volatile unsigned char t1s_flag; -/// vU8 ts_flag; - vU32 n_stamp3; -#endif - vU8 t1s_heatbeart; //noos 系统定时器整秒时刻标志,需要软件清除 + vU8 t1s_heatbeart; //noos 绯荤粺瀹氭椂鍣ㄦ暣绉掓椂鍒绘爣蹇,闇瑕佽蒋浠舵竻闄 }; extern struct _s_nos_tick_ s_nos_tick; -#ifdef D_timer0_10ms -//10ms 不能使用,10ms是最小颗粒时长,存在误差,无法使用 -#define D_Tdelay_ms D_TIMER0_10MS_COUNT//D_TIMER0_10MS_COUNT -#define D_Tdelay_10ms 2 -#define D_Tdelay_20ms (2+D_Tdelay_ms) -#define D_Tdelay_30ms (3+D_Tdelay_ms) -#define D_Tdelay_40ms (4+D_Tdelay_ms) -#define D_Tdelay_50ms (5+D_Tdelay_ms) -#define D_Tdelay_60ms (6+D_Tdelay_ms) - -#define D_Tdelay_80ms (8+D_Tdelay_ms) - - -#define D_Tdelay_100ms (10+D_Tdelay_ms) - -#else -//10ms 不能使用,10ms是最小颗粒时长,存在误差,无法使用 -#define D_Tdelay_ms D_TIMER0_10MS_COUNT//D_TIMER0_10MS_COUNT -#define D_Tdelay_10ms 1 -#define D_Tdelay_20ms (0+D_Tdelay_ms) -#define D_Tdelay_30ms (0+D_Tdelay_ms) -#define D_Tdelay_40ms (2+D_Tdelay_ms) -#define D_Tdelay_50ms (2+D_Tdelay_ms) -#define D_Tdelay_60ms (2+D_Tdelay_ms) - -#define D_Tdelay_80ms (3+D_Tdelay_ms) - -#define D_Tdelay_100ms (4+D_Tdelay_ms) - +#if(TYPE_JIFFIES_5MS == D_sys_Jiffies) + #define HZ 200 +#elif(TYPE_JIFFIES_10MS == D_sys_Jiffies) + #define HZ 100 +#elif(TYPE_JIFFIES_25MS == D_sys_Jiffies) + #define HZ 40 #endif - - -#define D_Tdelay_200ms (D_Tdelay_100ms*2) -#define D_Tdelay_300ms (D_Tdelay_100ms*3) -#define D_Tdelay_400ms (D_Tdelay_100ms*4) -#define D_Tdelay_500ms (D_Tdelay_100ms*5) - -#define D_Tdelay_600ms (D_Tdelay_100ms*6) -#define D_Tdelay_700ms (D_Tdelay_100ms*7) -#define D_Tdelay_800ms (D_Tdelay_100ms*8) -#define D_Tdelay_900ms (D_Tdelay_100ms*9) - - -#define D_Tdelay_1s (D_Tdelay_100ms*10) -#define D_Tdelay_1s2 (D_Tdelay_100ms*12) -#define D_Tdelay_1s5 (D_Tdelay_100ms*15) -#define D_Tdelay_2s (D_Tdelay_100ms*20) -#define D_Tdelay_2s5 (D_Tdelay_100ms*25) -#define D_Tdelay_3s (D_Tdelay_100ms*30) -#define D_Tdelay_5s (D_Tdelay_100ms*50) -#define D_Tdelay_8s (D_Tdelay_100ms*80) -#define D_Tdelay_9s (D_Tdelay_100ms*90) -#define D_Tdelay_10s (D_Tdelay_100ms*100) - -#define D_Tdelay_1min (D_Tdelay_1s*60) -#define D_Tdelay_1h (D_Tdelay_1min*60) -#define D_Tdelay_1day (D_Tdelay_1h*24) -#define D_TIMER0_1S_COUNT 100 -//#define D_10mS 1//D_TIMER0_10MS_COUNT -//#define D_100mS (D_10mS*10) -//#define D_1S (D_10mS*100) - - - - -//>> 定时器: 初始化 间隔时间到 -// L0_nos_tick10ms_start(s->times); 开始初始化s->times 以10ms为一个单位 -// if( L0_nos_tick10ms_interval(s->times) < 20)// s->times 执行了20次后,也就是 定时20*10m到达 - - -//必须配对 -#define L0_nos_tick10ms_start(start_n) start_n = s_nos_tick.t_10ms -#define L0_nos_tick10ms_interval(start_n) (s_nos_tick.t_10ms - start_n) - +#define JIFFIES (1000/HZ) + +#define D_sys_now (s_nos_tick.jiffies) +//D_sys_delay_msec浠iffies涓烘渶灏忚鏃跺崟浣嶏紝jiffies鏄10ms涓轰緥锛屽弬鏁皀=12ms鏃讹紝鏈缁堝欢鏃朵簡20ms +#define D_sys_delay_msec(n) do{ \ + if(n>0) \ + { \ + U32 mstmp = D_sys_now; \ + while(D_sys_now - mstmp < (((n)-1)/JIFFIES) + 1); \ + } \ + }while(0) + +#define D_Tdelay_Msec(n) (((n)-1) / JIFFIES + 1) +#define D_Tdelay_Sec(n) (((n)*1000-1) /JIFFIES + 1) +#define D_Tdelay_5ms ((5-1) / JIFFIES + 1) +#define D_Tdelay_10ms ((10-1) / JIFFIES + 1) +#define D_Tdelay_100ms ((100-1) / JIFFIES + 1) +#define D_Tdelay_200ms ((200-1) / JIFFIES+ 1) +#define D_Tdelay_300ms ((300-1) / JIFFIES + 1) +#define D_Tdelay_400ms ((400-1) / JIFFIES + 1) +#define D_Tdelay_1s (1 * HZ) +#define D_Tdelay_2s (2 * HZ) +#define D_Tdelay_3s (3 * HZ) +#define D_Tdelay_4s (4 * HZ) +#define D_Tdelay_5s (5 * HZ) +#define D_Tdelay_10s (10 * HZ) +#define D_Tdelay_15s (15 * HZ) + +#define D_Tdelay_1min (1 * 60 * HZ) +#define D_Tdelay_10min (10 * 60 * HZ) +#define D_Tdelay_1h (60 * 60 * HZ) +#define D_Tdelay_1day (24 * 60 * 60 * HZ) + + +//蹇呴』閰嶅 +#define L0_nos_tick10ms_start(start_n) start_n = s_nos_tick.t_50ms +#define L0_nos_tick10ms_interval(start_n) (s_nos_tick.t_50ms - start_n) #define L0_nos_tick1s_start(start_n) start_n = s_nos_tick.t_1s #define L0_nos_tick1s_interval(start_n) (s_nos_tick.t_1s - start_n) - -//>>>//必须配对 -#define L2_tick_time_stamp(time_stamp) time_stamp = s_nos_tick.t_10ms; -#define L2_tick_time_interval(time_stamp,time_overflow) (( s_nos_tick.t_10ms - time_stamp) > time_overflow) +//>>>//蹇呴』閰嶅 +#define L2_tick_time_stamp(time_stamp) time_stamp = s_nos_tick.t_50ms; +#define L2_tick_time_interval(time_stamp,time_overflow) (( s_nos_tick.t_50ms - time_stamp) > time_overflow) #define L3_tick_interval(x) L2_tick_time_interval(s_nos_tick.n_stamp,x) #define L2_tick_stamp() L2_tick_time_stamp(s_nos_tick.n_stamp); - -//>>>示例如下: -#if 0 -{ - case D_task_init:// - Lc_print_buf(" \r\n YL_ init"); - s->step = D_AT; - L0_esp_open(); - L2_task_go(D_task_YL_ready); - s_uart0_rec.ok = 0; - L2_tick_time_stamp(s->t_stamp); - // L1_task_Tdelay(1*D_Tdelay_1s); //大约6s - break; - case D_task_YL_ready: - if(1 == s_uart0_rec.ok) - { - if(strstr(s_uart0_rec.array,"ready") != NULL) - { - - Ldi_print("ready..\r\n"); - s->step = D_AT; - L2_task_go(D_task_YL_ask); - } - s_uart0_rec.ok = 0; - } - if(L2_tick_time_stamp(s->t_stamp,1*D_Tdelay_1s)) - {// 时间溢出 - L0_esp_close(); - Ldi_print("fail esp restart.\r\n"); - L2_task_go(D_task_init); - L1_task_Tdelay(2*D_Tdelay_1s); - } - break; -} -#endif - -// 他和t_10ms 关联,如果t_10ms递增为1时间隔为(D_TIMER0_10MS_COUNT*定时器间隔) -/// #define D_TIMER0_10MS_COUNT 1 //定时器为 10ms一中断 -#ifdef D_use_tick_fum extern void L1_tick_init(void); extern void L1_tick_tick (void); -#else - - -#define L1_tick_init() -#define L1_tick_tick() s_nos_tick.t_10ms ++; - -#endif - - - -//L2_time_beat_heart(D_TBH_ch1,2,'t') -#define D_TBH_ch0 0 -#define D_TBH_ch1 1 -#define D_TBH_ch2 2 -#define D_TBH_ch3 3 -#define D_TBH_ch4 4 -#define D_TBH_ch5 5 -extern void L2_time_beat_heart(vU32 ch,U8 invent,U8 s); -//void L2_time_beat_heart_fun(INT32U ch,unsigned char invent,void *fun(void)); -extern void L2_time_beat_heart_fun(vU32 ch,U8 invent,void (*fun)(void)); - #endif /* end __tick_H */ /***************************************************************************** ** End Of File diff --git a/source/debug/cc_as_stc01_main.ini b/source/debug/cc_as_stc01_main.ini deleted file mode 100644 index 7636777..0000000 --- a/source/debug/cc_as_stc01_main.ini +++ /dev/null @@ -1,7 +0,0 @@ -//MODE COM4 9600,0,8,1 -//ASSIGN COM4 < SIN > SOUT -// please "dir vtreg" and show the -MODE COM2 115200,0,8,1 -ASSIGN COM2 < S0IN > S0OUT -//MODE COM1 9600,0,8,1 -//ASSIGN COM1 < S0IN > S0OUT diff --git a/source/debug/cc_ls_03_debug.ini b/source/debug/cc_ls_03_debug.ini deleted file mode 100644 index 87a0def..0000000 --- a/source/debug/cc_ls_03_debug.ini +++ /dev/null @@ -1,6 +0,0 @@ -//MODE COM4 9600,0,8,1 -//ASSIGN COM4 < SIN > SOUT -MODE COM6 9600,0,8,1 -ASSIGN COM6 < S0IN > S0OUT -//MODE COM1 9600,0,8,1 -//ASSIGN COM1 < S0IN > S0OUT diff --git a/source/debug/debug.ini b/source/debug/debug.ini deleted file mode 100644 index 203177f..0000000 --- a/source/debug/debug.ini +++ /dev/null @@ -1,123 +0,0 @@ -MODE COM1 9600,0,8,1 -//assign com1 SOUT -ASSIGN COM1 < SIN > SOUT -//ASSIGN WIN SOUT -KILL FUNC * -KILL BUTTON * - - -//swatch(0.5) -DEFINE BUTTON "adc", "adc()" -signal void adc (void) { -// while (1) { /* repeat forever */ - P14= 0; /* set PORTA bit 0 */ - printf("adc is on\n"); - twatch(500); - //} /* repeat */ -} - -DEFINE BUTTON "k1 ", "k1()" -signal void k1 (void) { -P2.0= 0; - //P20= 0; - printf("K1 down\n"); - swatch(0.17); - P2.0= 1; - //P20= 1; - swatch(0.17); - printf("K1 up\n"); -} - - -DEFINE BUTTON "k2 ", "k2()" -signal void k2 (void) { - P2.1= 0; - //P21= 0; - printf("K2 down\n"); - swatch(0.17); - P2.1= 1; - //P21= 1; - swatch(0.17); - printf("K2 up\n"); -} - - -DEFINE BUTTON "k3 ", "k3()" -signal void k3 (void) { - P2.2= 0; - //P22= 0; - printf("K3 down\n"); - swatch(0.07); - P2.2= 1; - //P22= 1; - swatch(0.07); - printf("K3 up\n"); -} - - - - -DEFINE BUTTON "kx4 enter/", "kx4()" -signal void kx4 (void) { - - P13= 0; /* set PORTA bit 0 */ - printf("Kx4 down\n"); - swatch(0.07); - - P13= 1; - swatch(0.07); - printf("Kx4 up\n"); -} - -DEFINE BUTTON "<-- kx1_left ", "kx1_left()" -signal void kx1_left (void) { - - P12= 0; /* set PORTA bit 0 */ - - printf("kx1_left down\n"); - swatch(0.07); - P11= 0; - swatch(0.07); - - P12= 1; - swatch(0.07); - P11= 1; - swatch(0.07); - printf("kx1_left up\n"); - -} - -DEFINE BUTTON "kx1_right--> ", "kx1_right()" -signal void kx1_right (void) { - - P11= 0; /* set PORTA bit 0 */ - - printf("kx1_right down\n"); - swatch(0.07); - P12= 0; - swatch(0.07); - - P11= 1; - swatch(0.07); - P12= 1; - swatch(0.07); - printf("kx1_right up\n"); - -} -DEFINE BUTTON "My Registers", "MyRegs()" - -FUNC void MyRegs (void) { - printf ("---------- MyRegs() ----------\n"); - printf (" R4 R8 R9 R10 R11 R12\n"); - printf (" %04X %04X %04X %04X %04X %04X\n", - R0, R1, R2, R3, R4, R5); - printf ("------------------------------\n"); -} - - - -//bs write P3,1,"check_moto()"//如果有写p2的动作则会执行这个 signal函数。 -//signal void check_moto (void) - - - diff --git a/source/debug/debug2.ini b/source/debug/debug2.ini deleted file mode 100644 index 3c56f97..0000000 --- a/source/debug/debug2.ini +++ /dev/null @@ -1,45 +0,0 @@ -MODE COM1 9600,0,8,1 -//assign com1 SOUT -ASSIGN COM1 < S0IN > S0OUT -//ASSIGN WIN S0OUT -//S0TIME = 0 -KILL FUNC * -KILL BUTTON * -// - //AA 70 70 71 72 72 75 74 76 77 78 79 24 55 -DEFINE BUTTON "master_send01","master_send01()" -signal void master_send01(void) { - - printf("DD\n"); -// #define rU0IIR rU0FCR /* share the same address */ - - //U0IIR =0x02; -// U0THR = 0x33; U0IIR =0x04; twatch(1000); - U0RBR = 0x34; U0IIR =0x04; twatch(1000); - -//U0RBR=0xaa;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x71;twatch(1000); - -} - -DEFINE BUTTON "master_send021","master_send021()" -signal void master_send021(void) { - -// printf("DD\n"); -// #define rU0IIR rU0FCR /* share the same address */ - - //U0IIR =0x02; -// U0THR = 0x33; U0IIR =0x04; twatch(1000); - U0RBR = 0xAA; twatch(1000); - -U0RBR=0x66;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x71;twatch(1000); - -} - - - diff --git a/source/debug/debug_M3sfy.ini b/source/debug/debug_M3sfy.ini deleted file mode 100644 index 3e88329..0000000 --- a/source/debug/debug_M3sfy.ini +++ /dev/null @@ -1,83 +0,0 @@ -MODE COM4 115200,0,8,1 -//assign com1 SOUT -ASSIGN COM4 < S1IN > S1OUT -//ASSIGN WIN S0OUT -//S0TIME = 0 -KILL FUNC * -KILL BUTTON * - -DEFINE BUTTON "A","key_up2()" -signal void key_up2(void) -{ - //s_task_key_up.sim = 1; - s_task_key_up.down = 1; - twatch(1000); - s_task_key_up.up = 1; - //swatch(0.1); - //swatch (0.05); /* wait 50 milliseconds */ - -// swatch(0.1);//twatch(1000); -} - - -DEFINE BUTTON "V","key_down2()" -signal void key_down2(void) -{ - //s_task_key_up.sim = 1; - s_task_key_down.down = 1; - - twatch(1000); - - s_task_key_down.up = 1; - //swatch(0.1); -// swatch(0.1);//twatch(1000); - -} - - -DEFINE BUTTON "key_upanddown","key_upanddown()" -signal void key_upanddown(void) -{ - //s_task_key_up.sim = 1; - s_task_key_down.down = 1; - // twatch(10); - s_task_key_up.down = 1; - twatch(1000); - s_task_key_down.up = 1; -// twatch(10); - s_task_key_up.up = 1; - //swatch(0.1);// - twatch(100); -} - - - -DEFINE BUTTON "key_ent2","key_ent2()" -signal void key_ent2(void) -{ - //s_task_key_up.sim = 1; - s_task_key_ent.down = 1; - twatch(1000); - s_task_key_ent.up = 1; - -} - - - - -DEFINE BUTTON "key_clear","key_clear()" -signal void key_clear(void) -{ - //s_task_key_up.sim = 1; - s_task_key_up.down = 0; - s_task_key_down.down = 0; - s_task_key_ent.down = 0; - - s_task_key_up.up = 0; - s_task_key_down.up = 0; - s_task_key_ent.up = 0; - twatch(1000); - -} - - diff --git a/source/debug/debug_M3sfy2.ini b/source/debug/debug_M3sfy2.ini deleted file mode 100644 index 98bd76d..0000000 --- a/source/debug/debug_M3sfy2.ini +++ /dev/null @@ -1,54 +0,0 @@ -MODE COM4 115200,0,8,1 -//assign com1 SOUT -ASSIGN COM4 < S1IN > S1OUT -//ASSIGN WIN S0OUT -//S0TIME = 0 -KILL FUNC * -KILL BUTTON * - -//#include "key_ext.h" -DEFINE BUTTON "A","key_up2()" -signal void key_up2(void) -{ - s_task_key_ext.value = 1; - twatch(100); -} - - -DEFINE BUTTON "V","key_down2()" -signal void key_down2(void) -{ - s_task_key_ext.value = 2; - twatch(10); -} - -DEFINE BUTTON "key_ent2","key_ent2()" -signal void key_ent2(void) -{ - s_task_key_ext.value = 0x3; - twatch(10); -} - - -DEFINE BUTTON "Setup","key_setup()" -signal void key_setup(void) -{ - s_task_key_ext.value = 0x12; - twatch(10); -} - -DEFINE BUTTON "Adc100","Adc100()" -signal void Adc100(void) -{ - s_adc_read.uiV = 100; - twatch(10); -} - - -DEFINE BUTTON "Adc5000","Adc5000()" -signal void Adc5000(void) -{ - s_adc_read.uiV = 5000; - twatch(10); -} - diff --git a/source/debug/debug_app.c b/source/debug/debug_app.c deleted file mode 100644 index ef467ca..0000000 --- a/source/debug/debug_app.c +++ /dev/null @@ -1,130 +0,0 @@ -/***************************************************************************** - * uart.c: UART API file for NXP LPC17xx Family Microprocessors - * - * Copyright(C) 2013, cc - * All rights reserved. - * - * History - * 2013.05.24 ver 1.00 Prelimnary version, first Release - - * -******************************************************************************/ - -#include "target_cfg.h" -#include "type.h" -#include "time.h" -#include "uart.h" -//#include "..\Sensor.h" - -#include "debug_app.h" -struct _s_task_debug_led_ s_task_debug_led; - -void L2_task_debug_led_init(void) -{ - D_P1_OUT(15); - D_P1_OFF(15); //指示灯 - D_P1_OUT(16); - D_P1_OFF(16); //指示灯 - - while(0) - { - D_P1_OFF(15) ; - L0_delay_ms(600); - D_P1_ON(15) ; - L0_delay_ms(600); - L0_debugS_uc('a'); L0_USART_print(UART_debug,"\r\n"); - // L2_oled_main(); - } - L3_task_s_go(s_task_debug_led,D_task_debug_led_init); - - -} - -void L2_task_debug_led_handdle(struct _s_task_debug_led_ *s) -{ - switch(s->task.sh) - { - - case D_task_debug_led_init:// - L0_USART_print(UART_debug,"\r\n s_task_debug_led "); - L2_task_go(D_task_debug_led_key); - break; - case D_task_debug_led_key : - D_P1_ON(15); - L0_debugS_uc('^'); - L2_task_go(D_task_debug_led_key2); - L1_task_idelay(D_idelay_1s); - // L0_oled_point(60,50,0x00); - //L2_debug_Au4B48347975); - break; - case D_task_debug_led_key2 : - D_P1_OFF(15); - //L0_debugS_uc('~'); - #if 0 - if((s->x ++)> 64)s->x =0; - if((s->y ++)> 48)s->y =0; - - L0_oled_point(s->x,s->y,0xff); - #else - - - // L0_oled_point(60,50,0xff); - - #endif - L2_task_go(D_task_debug_led_key); - L1_task_idelay(D_idelay_1s); - //L2_debug_Au4B1234567); - - break; - - L2_task_switch_default_idelay(); - - } -} -void L1_debug_rx_handle(struct _s_protocol_ *p) -{ -// unsigned int i; - p->cashe[0] = p->rbr;// - if(p->num > D_s_protocol_len) - { - p->num = 0; - p->buf[p->num] = p->cashe[0]; - }else - { - p->buf[p->num] = p->cashe[0]; - p->num ++; - } -} - - -struct _s_uart_config_ s_debug_config; - - -#define D_debug_buf s_debug_config.puart_config->st->buf -#define D_debug_buf_d(x) s_debug_config.puart_config->st->buf[(x)] -#define D_debug_num (s_debug_config.puart_config->st->num) - -void L1_debug_init(void) -{ - ts_uart1.L1_uart_rx_handle = L1_debug_rx_handle; - ts_uart1.st = (struct _s_protocol_ *)&s_at1; - - s_debug_config.usart = 1; - s_debug_config.puart_config = &ts_uart1; - - - s_debug_config.type = 0; -#if 0 - while(9) - { - if(D_debug_num >= 1) - { - L0_Usend_uc(s_debug_config.usart,D_debug_buf_d(0)); - D_debug_num = 0; - - } - } -#endif -} - -//>>>>>>>>>>>>>>>>>>>>> debug led task diff --git a/source/debug/debug_app.h b/source/debug/debug_app.h deleted file mode 100644 index 497c810..0000000 --- a/source/debug/debug_app.h +++ /dev/null @@ -1,44 +0,0 @@ -/***************************************************************************** - * uart.h: Header file for NXP LPC17xx Family Microprocessors - * - * Copyright(C) 2013, cc - * All rights reserved. - * - * History - * 2013.05.24 ver 1.00 Prelimnary version, first Release - - * -******************************************************************************/ -#ifndef __DEBUG_APP_H -#define __DEBUG_APP_H -#include "LPC17xxcc.h" -#include "LPC17xxzlg.h" -#include "LPC17xx_macro.h" - -#include "Task.h" -#include "time.h" - -#include "debug_drv.h" - - -struct _s_task_debug_led_ -{ - _ts_task task; - unsigned char x; - unsigned char y; -}; -extern struct _s_task_debug_led_ s_task_debug_led; - -#define D_task_debug_led_init 0x10 -#define D_task_debug_led_key 0x11 -#define D_task_debug_led_key2 0x12 - -void L2_task_debug_led_init(void); - -extern void L2_task_debug_led_handdle(struct _s_task_debug_led_ *s); -extern void L1_debug_init(void); - -#endif /* end __DEBUG_APP_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ diff --git a/source/debug/debug_drv.c b/source/debug/debug_drv.c deleted file mode 100644 index 373a01a..0000000 --- a/source/debug/debug_drv.c +++ /dev/null @@ -1,48 +0,0 @@ -/***************************************************************************** - * debug_drv.c: debug app - * - * Copyright(C) 2013, cc - * All rights reserved. - * - * History - * 2013.05.24 ver 1.00 Prelimnary version, first Release - * -******************************************************************************/ - -#include "debug_drv.h" - -void L3_debug_drv_init(void) -{ - L0pf_send_uc = L0_uart0_uc; - Lc_print("\r\n debug shell init:\t"); -/// io 设置的标准写法 - - Lc_print("Mode:"); - #ifdef D_debug_time - Lc_print(" debug"); - #else - //D_debug_time_using - Lc_print(" normal"); - #endif -} - - -#ifdef D_debug_sim - -fff -void L3_debug_cycle(void) -{ - INTERRUPT_UART(); - TIMER0_IRQHandler(); - - - -} - -#else - -#endif - -/****************************************************************************** -** End Of File -******************************************************************************/ diff --git a/source/debug/debug_drv.h b/source/debug/debug_drv.h deleted file mode 100644 index f14c872..0000000 --- a/source/debug/debug_drv.h +++ /dev/null @@ -1,85 +0,0 @@ -/***************************************************************************** - * DEBUG_DRV.h: Header file for DEBUY DRIVER FILES - * - * - * Copyright(C) 2013, cc - * All rights reserved. - * - * History - * 2013.05.24 ver 1.00 Prelimnary version, first Release - -******************************************************************************/ -#ifndef __DEBUG_DRV_H -#define __DEBUG_DRV_H - -#include "../clib/type.h" -#include "../clib/clib.h" -#include "../clib/uartlib.h" -#include "../msp/uart0.h" -#include "debug_led.h" - -void L3_debug_drv_init(void); -#define L3_debug_time() L0pf_send_uc = L0_uart0_uc; ///Lc_print("\r\n%s,-%sL:%d,",__DATE__,__TIME__,__LINE__); -extern void L3_debug_cycle(void); - -#if 0 - -#define UART_debug_reg ((LPC_UART1_TypeDef *) LPC_UART1_BASE ) -//#define UART_debug ((LPC_UART1_TypeDef *) LPC_UART1_BASE ) -//#define UART_debug ((LPC_UART_TypeDef *) LPC_UART_BASE ) -//#define UART_debug ((LPC_UART_TypeDef *) LPC_UART_BASE ) -#define UART_debug 1 - -#define L0_debugS_uc(x) //L0_Usend_uc(UART_debug,x) -#define L0_debugS_uc_hex(x) //L0_Usend_uc_hex(UART_debug,x) -#define L0_debug_uc_show(x,y); //L0_USART_print(UART_debug,x,y); -#define L0_debug_us_show(x,y); //L0_USART_print(UART_debug,x,y); -#define L0_debug_ul_show(x,y); //L0_USART_print(UART_debug,x,y); - - -//#define L2_debug_info(x) //L0_USART_print(UART_debug,x); -#define L2_debug_Au4B(x) // L0_Usend_Au4B(UART_debug,x) -#define L0_debug_Au4B_show(x,y); //L0_USART_print(UART_debug,x,y); -#define L0_debug_Aus_show(x,y); //L0_USART_print(UART_debug,x,y); -#define L0_debug_A4B_show(x,y); //L0_USART_print(UART_debug,x,y); - - -//#define debug22(format...) Lc_print("%s (%d): ",__FILE__,__LINE__); - -//#define LOG(format, args...) Lc_print(format, ##args) -//#define RTA_printf(...) Lc_print(__VA_ARGS__) - -//#define L2_debug_info Lc_print - -//#define L3_debug_time() Lc_print(L0_uart0_uc,"\r\n%s,-%sL:%d,",__DATE__,__TIME__,__LINE__); - - - - -#define L2_debug_info(...) \ -Lc_print(L0_uart_uc,__VA_ARGS__); - -//do { -//Lc_print("%s (%d): ", __FILE__, __LINE__); -//Lc_print(format, __VA_ARGS__); -//} while (0) - - -#define CHECK1(x, ...) if (!(x)) { printf(__VA_ARGS__); } - -#define LOG(...) {\ - Lc_print(L0_uart_uc,"%s: Line %d:\t", __FILE__, __LINE__);\ - Lc_print(L0_uart_uc, __VA_ARGS__);\ - Lc_print(L0_uart_uc,"\n");\ -} - -int main() { - int x = 3; - // 一些代码... - LOG("x = %d", x); // 2-1-5.cpp: Line 12: x = 3 -} -#endif -#endif /* end __DEBUG_DRV_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ diff --git a/source/debug/debug_led.c b/source/debug/debug_led.c deleted file mode 100644 index e125d7a..0000000 --- a/source/debug/debug_led.c +++ /dev/null @@ -1,37 +0,0 @@ -/***************************************************************************** - * debug_drv.c: debug app - * - * Copyright(C) 2013, cc - * All rights reserved. - * - * History - * 2013.05.24 ver 1.00 Prelimnary version, first Release - * - - 取决于硬件版本 CC-ACC-VH02 -******************************************************************************/ - -#include "debug_led.h" - -void L3_debug_led_init(void) -{ - D_led_THB_init(); - D_led_debug_init(); - //D_led_D0_init(); - D_led_D1_init(); - D_led_D2_init(); - //while(0) - { - D_led_THB_REV(); - D_led_debug_REV(); - D_led_D1_REV(); - D_led_D2_REV(); - - - - } - -} -/****************************************************************************** -** End Of File -******************************************************************************/ diff --git a/source/debug/debug_led.h b/source/debug/debug_led.h deleted file mode 100644 index 7dee3ec..0000000 --- a/source/debug/debug_led.h +++ /dev/null @@ -1,138 +0,0 @@ -/***************************************************************************** - * DEBUG_DRV.h: Header file for DEBUY DRIVER FILES - * - * - * Copyright(C) 2013, cc - * All rights reserved. - * - * History - * 2013.05.24 ver 1.00 Prelimnary version, first Release - - 20160413 CC-ACC-VH02 修正 - - led: pin33 P22 LED - P16 P17 空置 - - -******************************************************************************/ -#ifndef __DEBUG_LED_H -#define __DEBUG_LED_H - -#include "../clib/type.h" -#include "../bsp/type_hs.h" - - - -///P22是timer heratbeat -#define D_led_THB BIT2 -#define D_led_THB_SEL0 P2_SEL0 -#define D_led_THB_SEL1 P2_SEL1 -#define D_led_THB_SEL2 P2_SEL2 -#define D_led_THB_DIR P2_DIR - -#define D_led_THB_REV() D_P22_REV() -#define D_led_THB_ON() P22 = 1 -#define D_led_THB_OFF() P22 = 0 -#define D_led_THB_init() \ - BITN_0(D_led_THB_SEL2,(D_led_THB));\ - BITN_0(D_led_THB_SEL1,(D_led_THB));\ - BITN_0(D_led_THB_SEL0,(D_led_THB));\ - BITN_0(D_led_THB_DIR, (D_led_THB)); // led_debug output - -//>>>>>>>>>>>>>>>>CC-ACC-VH02 管脚空闲 - - - - -///P23是debug端口 -#define D_led_debug BIT3 -#define D_led_debug_SEL0 P2_SEL0 -#define D_led_debug_SEL1 P2_SEL1 -#define D_led_debug_SEL2 P2_SEL2 -#define D_led_debug_DIR P2_DIR - -#define D_led_debug_REV() D_P23_REV() -#define D_led_debug_ON() P23 = 1 -#define D_led_debug_OFF() P23 = 0 -#define D_led_debug_init() \ - BITN_0(D_led_debug_SEL2,(D_led_debug));\ - BITN_0(D_led_debug_SEL1,(D_led_debug));\ - BITN_0(D_led_debug_SEL0,(D_led_debug));\ - BITN_0(D_led_debug_DIR,( D_led_debug)); // led_debug output - -///P24是debug -#define D_led_D1 BIT4 -#define D_led_D1_SEL0 P2_SEL0 -#define D_led_D1_SEL1 P2_SEL1 -#define D_led_D1_DIR P2_DIR -#define D_led_D1_REV() D_P24_REV() -#define D_led_D1_ON() P24 = 0 -#define D_led_D1_OFF() P24 = 1 -#define D_led_D1_init() D_led_D1_OFF();\ - BITN_0(D_led_D1_SEL1,(D_led_D1));\ - BITN_0(D_led_D1_SEL0,(D_led_D1));\ - BITN_0(D_led_D1_DIR, (D_led_D1));\ - BITN_0(P2_PE, (D_led_D1));\ - BITN_1(P2_DS, (D_led_D1));\ - BITN_0(P2_OD, (D_led_D1)); //CMOS or push_Pull -///PE上拉 OD推挽输出ds= 电流增强 - -///P25是debug -#define D_led_D2 BIT5 -#define D_led_D2_SEL0 P2_SEL0 -#define D_led_D2_SEL1 P2_SEL1 -#define D_led_D2_DIR P2_DIR -#define D_led_D2_REV() D_P25_REV() -#define D_led_D2_ON() P25 = 0 -#define D_led_D2_OFF() P25 = 1 -#define D_led_D2_init() D_led_D2_OFF();\ - BITN_0(D_led_D2_SEL1,(D_led_D2));\ - BITN_0(D_led_D2_SEL0,(D_led_D2));\ - BITN_0(D_led_D2_DIR, (D_led_D2));\ - BITN_0(P2_PE, (D_led_D2));\ - BITN_1(P2_DS, (D_led_D2));\ - BITN_0(P2_OD, (D_led_D2)); //CMOS or push_Pull -///PE=1上拉 OD=0推挽输出 ds=1 电流增强 - - -// 仿linux做一个errono的结构体 用来保存当前的错误信息 - -struct _s_errorno_ -{ - int errono; - char *errostr; -}; - -//#define D_debug_time - - -#ifdef D_debug - -#define D_debug_sim -#define D_debug_spi_sim - -#define D_debug_time -#define D_debug_time_using -#define D_debug_sim_using - -#define D_debug_key - -#define D_debug_adc - -#define D_debug_lcd - - -#define D_debug_flash -#endif - - - -extern void L3_debug_led_init(void); - - -#endif /* end __DEBUG_LED_H */ -/***************************************************************************** -** End Of File -******************************************************************************/ - - diff --git a/source/debug/testiic.uvla b/source/debug/testiic.uvla deleted file mode 100644 index 95fb5b0..0000000 Binary files a/source/debug/testiic.uvla and /dev/null differ diff --git a/source/debug/澶嶅埗 2debug_M3sfy.ini b/source/debug/澶嶅埗 2debug_M3sfy.ini deleted file mode 100644 index 2005eca..0000000 --- a/source/debug/澶嶅埗 2debug_M3sfy.ini +++ /dev/null @@ -1,66 +0,0 @@ -//MODE COM1 9600,0,8,1 -//assign com1 SOUT -//ASSIGN COM1 < S0IN > S0OUT -//ASSIGN WIN S0OUT -//S0TIME = 0 -KILL FUNC * -KILL BUTTON * - - -DEFINE BUTTON "key_up","key_up()" -signal void key_up(void) -{ - //s_task_key_up.sim = 1; - s_task_key_up.down = 1; - //swatch(0.1); - twatch(1000); - //swatch (0.05); /* wait 50 milliseconds */ - - s_task_key_up.up = 1; -// swatch(0.1);//twatch(1000); -} - - -DEFINE BUTTON "key_down","key_down()" -signal void key_down(void) -{ - //s_task_key_up.sim = 1; - s_task_key_down.down = 1; - swatch(0.1); - //twatch(1000); - s_task_key_down.up = 1; -// swatch(0.1);//twatch(1000); - -} - - -DEFINE BUTTON "key_upanddown","key_upanddown()" -signal void key_upanddown(void) -{ - //s_task_key_up.sim = 1; - s_task_key_down.down = 1; - // twatch(10); - s_task_key_up.down = 1; - twatch(1000); - s_task_key_down.up = 1; -// twatch(10); - s_task_key_up.up = 1; - swatch(0.1);//twatch(1000); -} - - - - -DEFINE BUTTON "key_ent","key_ent()" -signal void key_ent(void) -{ - //s_task_key_up.sim = 1; - s_task_key_ent.down = 1; - twatch(1000); - s_task_key_ent.up = 1; - -} - - - - diff --git a/source/debug/澶嶅埗 debug_M3sfy.ini b/source/debug/澶嶅埗 debug_M3sfy.ini deleted file mode 100644 index 10e05ba..0000000 --- a/source/debug/澶嶅埗 debug_M3sfy.ini +++ /dev/null @@ -1,129 +0,0 @@ -//MODE COM1 9600,0,8,1 -//assign com1 SOUT -//ASSIGN COM1 < S0IN > S0OUT -//ASSIGN WIN S0OUT -//S0TIME = 0 -KILL FUNC * -KILL BUTTON * - - -DEFINE BUTTON "key_up","key_up()" -signal void key_up(void) { - //s_task_key_up.sim = 1; - s_task_key_up.down = 1; - twatch(1000); - s_task_key_up.up = 1; -} -DEFINE BUTTON "key_down","key_down()" -signal void key_down(void) { - //s_task_key_up.sim = 1; - s_task_key_down.down = 1; - twatch(1000); - s_task_key_down.up = 1; - -} - - -DEFINE BUTTON "key_upanddown","key_upanddown()" -signal void key_upanddown(void) { - //s_task_key_up.sim = 1; - s_task_key_down.down = 1; - // twatch(10); - s_task_key_up.down = 1; - twatch(1000); - s_task_key_down.up = 1; -// twatch(10); - s_task_key_up.up = 1; -} - -} - - - -DEFINE BUTTON "key_ent","key_ent()" -signal void key_ent(void) { - //s_task_key_up.sim = 1; - s_task_key_ent.down = 1; - twatch(1000); - s_task_key_ent.up = 1; - -} - - - - - -DEFINE BUTTON "key_up","key_up()" -signal void key_up(void) { - -U1THR = 'e'; - //LPC_GPIO1->FIOSET |= (1<<18); - FIO1SET|= (1<<18); - twatch(1000); -//U0RBR=0xaa;twatch(1000); -//U0RBR=0x70;twatch(1000); - -} -DEFINE BUTTON "key_down","key_down()" -signal void key_down(void) { - - printf("key down\n"); - - FIO1CLR|= (1<<18); - twatch(1000); - -//U0RBR=0xaa;twatch(1000); -//U0RBR=0x70;twatch(1000); - -} - - //AA 70 70 71 72 72 75 74 76 77 78 79 24 55 -DEFINE BUTTON "master_send01","master_send01()" -signal void master_send01(void) { - - printf("DD\n"); -// #define rU0IIR rU0FCR /* share the same address */ - - //U0IIR =0x02; -// U0THR = 0x33; U0IIR =0x04; twatch(1000); - U0RBR = 0x34; U0IIR =0x04; twatch(1000); - -//U0RBR=0xaa;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x71;twatch(1000); - -} - - - -DEFINE BUTTON "master_send021","master_send021()" -signal void master_send021(void) { - -// printf("DD\n"); -// #define rU0IIR rU0FCR /* share the same address */ - - //U0IIR =0x02; -// U0THR = 0x33; U0IIR =0x04; twatch(1000); - U0RBR = 0xAA; twatch(1000); - -U0RBR=0x66;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x70;twatch(1000); -//U0RBR=0x71;twatch(1000); - -} -int SendChar (int ch) -{ - //while (!(USART1->SR & USART_FLAG_TXE)); - U1THR = (ch & 0x1FF); - twatch(200); - return (ch); -} -int GetKey (void) -{ - while (!(USART1->SR & USART_FLAG_RXNE)); - return ((int)(USART1->DR & 0x1FF)); -} - - diff --git a/source/msp/UART0.C b/source/msp/UART0.C index c7ac5d3..999ac97 100644 --- a/source/msp/UART0.C +++ b/source/msp/UART0.C @@ -18,9 +18,15 @@ /// Modified date: /// Version: /// Descriptions: +// 20160413 CC-ACC-VH02 +// 杩炴帴鑷 J22 RXD0 TXD0 +//P5_DIR &= ~BITN1; //p5.1杈撳嚭TXD +//P5_DIR |= BITN0; //p5.0杈撳叆RXD +//P5_SEL0 &= ~(BITN0 +BITN1); //璁剧疆P5.0 P5.1涓篣ART0 RXD TXD +//P5_SEL1 |= BITN0 +BITN1; /***************************************************************************** -update by cc @201800400 +update by cc @201700110 閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 涓渶瑕佸钩琛$殑浜嬫儏. @@ -30,9 +36,17 @@ clib/clib.c: 涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) ----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 ----------------------------------------------------------------------------------------- - +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 -------------------------------------------------------------------------------------------- msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 L0_UART0_Init @@ -40,412 +54,107 @@ msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 L0_Usend_uc------UserDef ----------------------------------------------------------------------------------------- ********************************************************************************/ -#include "uart0.h" -//#include "uart2.h" -//#include "uart3.h" -//#include "uart4.h" - #include - #include "../bsp/bsp_485.h" - #include "../ctask/tick.h" - #include "../app/common.h" - #include "../msp/time.h" - #include "../app/app_task_uart0.h" - -// TS_Handle_PH1 volatile s_uart0_rec; -// TS_Handle_PH1A volatile s_uart0_rec; -TS_Handle_PH4 volatile s_uart0_rec; - -///struct _s_uart0_send_buf_ ts_uart_send_shop; -//struct _s_uart0_send_buf_ ts_uart_send_depot; -volatile Ts_uart_send_buf ts_uart_send_shop; -////volatile Ts_uart_send_buf ts_uart_send_depot; - -#if(MainFre_5M == D_sys_MainFre) - void L0_uart0_init32K_290BPS(void) //290bps@32kHz - {//瀹氭椂鍣2 16浣嶉噸杞 浣滀负涓插彛娉㈢壒鐜 - SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - BITN_1(AUXR, BITN5);// f/2 - T2L = 0xFE; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 /// 32K 280---290BPS - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - - -#elif(MainFre_27M == D_sys_MainFre) -#elif(MainFre_22M == D_sys_MainFre) - #if(BRT_115200 == D_uart0_BRT) - void L0_uart0_init(void) //115200bps@22.1184MHz - {//瀹氭椂鍣2 16浣嶉噸杞 浣滀负涓插彛娉㈢壒鐜 - SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR &= 0xFB; //瀹氭椂鍣2鏃堕挓涓篎osc/12,鍗12T - T2L = 0xFC; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - - #elif(BRT_4800 == D_uart0_BRT) - void L0_Uart0_Init(void) //4800bps@22.1184MHz - { - SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR |= 0x04; //瀹氭椂鍣2鏃堕挓涓篎osc,鍗1T - T2L = 0x80; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFB; //璁惧畾瀹氭椂鍒濆 - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - #elif(BRT_SIM == D_uart0_BRT) - void L0_uart0_init(void) - { - SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ - TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ - TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */ - TR1 = 1; /* TR1: timer 1 run */ - TI = 1; /* TI: set TI to send first char of UART */ - EA = 1; - AUXR = 0x40; - // TI = 0; - RI = 0; - D_uart0_ES_INT(1); //鎵撳紑涓插彛涓柇 - } - #endif - -#else ///MainFre_11M - - #if(BRT_115200 == D_uart0_BRT && SBIT_1 == D_uart0_SBIT) - void L0_uart0_init(void) //115200bps@11.0592MHz - { - SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR &= 0xFB; //瀹氭椂鍣2鏃堕挓涓篎osc/12,鍗12T - T2L = 0xFE; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - #elif(BRT_19200 == D_uart0_BRT && SBIT_1 == D_uart0_SBIT) - void L0_uart0_init(void) //19200@11.0592MHz - { - xxxx - SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR |= 0x04; //瀹氭椂鍣2鏃堕挓涓篎osc,鍗1T - T2L = 0x70; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - #elif(BRT_19200 == D_uart0_BRT && SBIT_2 == D_uart0_SBIT) - void L0_uart0_init(void) //19200@11.0592MHz - { - //浣跨敤绗9浣嶆暟鎹ā鎷1涓仠姝綅,鍙彉娉㈢壒鐜;SM2=0, TB8=1(绗9bit鎬讳负1妯℃嫙1涓仠姝綅) - SCON = 0xD8; - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR |= 0x04; //瀹氭椂鍣2鏃堕挓涓篎osc,鍗1T - T2L = 0x70; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - #elif (BRT_9600 == D_uart0_BRT) - void L0_uart0_init(void) //9600bps@11.0592MHz - { - SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 - AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 - AUXR &= 0xFB; //瀹氭椂鍣2鏃堕挓涓篎osc/12,鍗12T - T2L = 0xE8; //璁惧畾瀹氭椂鍒濆 - T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 - AUXR |= 0x10; //鍚姩瀹氭椂鍣2 - } - #endif -#endif//D_sys_MainFre) -void L1_uart0_buf_init(void) -{ -/// ts_uart_send_depot.p = ts_uart_send_depot.buf; - ts_uart_send_shop.now = 0; - s_uart0_rec.head = 0; - s_uart0_rec.ok = 0; - s_uart0_rec.num = 0; -// L1_s2b_PH4_init(&s_uart0_rec,G.p.slaver_id); -// s_uart0_rec.sp = s_uart0_rec.buf; -// s_uart0_rec.cmd = 0; -// head_0 = D_CMD_Filter1_ff; -// s_uart0_rec.head_1 = D_CMD_Filter2_fe; -// s_uart0_rec.sp = (U8*)&(s_uart0_rec.ts_ccmodbus); - - L0_uart0_init(); - -// L0_uart0_init(); - BITN_0(P3M1,BITN1);BITN_1(P3M0,BITN1);/// p31 01 tuiwan - - ts_uart_send_shop.ok = D_ready; - - D_uart0_ES_INT(1); //鎵撳紑涓插彛涓柇 - -} -//115200 0.1ms /Byte 115200/4800=23 0.1*23=2.3ms -/// 4800 uartb娉㈠舰 2.1ms 涓涓暟鎹 b8s 鍏10bits 1000ms 鍙戦480涓狟ytes 澶х害灏辨槸2.1ms 涓涓暟鎹 - -//// ````\_b_|___________________________/``s`|```2.1ms 0x00 sscom 娴嬭瘯 - -//// s 1 1 1 1 1 1 1 0 b11111111s - -//// ````\_b_/```````````````````````````|``s`|```200us 0xff - -//// ````\_b_|__/```\__/```\__/```\__/```|``s`|```1.9ms`\0xaa -//// b 1 0 1 0 1 0 1 0 b10101010s - -//// -//// ````\_b_|__/```\__/```\__/```\__/```|``s`|```1.9ms`\0xaa -//// b 1 0 1 0 1 0 1 0 b10101010s - -/// 1.9ms`\0xaa 0xaa 0xaa -//// ````\_b_|__/```\__/```\__/```\__/```|``s`|\_b_|__/```\__/```\__/```\__/```|``s`|\_b_|__/```\__/```\__/```\__/```|``s`| -//// b 1 0 1 0 1 0 1 0 s b 1 0 1 0 1 0 1 0 s b 1 0 1 0 1 0 1 0 s - - -//// ````\_200us_/`````0xff -//// ````\_200us_/`````0xff -void L0_uart0_uc(U8 ww) -{ - L0_uart0_sendArray(&ww,1); -} -extern void L2_waitFree_uart0(void); - - -#define D_waitFree_uart0() L2_waitFree_uart0() - - -/********* -while(ts_uart_send_shop.ok != D_ready)\ - {\ - if(ts_uart_send_shop.over ++ > 600000)\ - {\ - break;\ - }\ - }\ -*********************/ -void L0_uart0_us(vU32 ww) -{ - U_U16 uStemp; - uStemp.word = ww; - L0_uart0_uc(uStemp.BYTE2.h); - L0_uart0_uc(uStemp.BYTE2.l); -} -void L0_uart0_ul(vU32 ww) -{ - L0_uart0_uc(ww >> 24 & 0xFF); - L0_uart0_uc(ww >> 16 & 0xFF); - L0_uart0_uc(ww >> 8 & 0xFF); - L0_uart0_uc(ww >> 0 & 0xFF); -} -void L0_uart0_uchex(U8 ww) -{ - D_waitFree_uart0(); - ts_uart_send_shop.buf3[0] = cguHex2Char[D_uc_high(ww)][1]; - ts_uart_send_shop.buf3[1] = cguHex2Char[D_uc_low(ww)][1]; - L0_uart0_sendArray(ts_uart_send_shop.buf3,2); -} - -// void L0_uart0_ushex(U16 ww) -// { -// L0_uart0_uchex(ww >> 8 & 0xFF); -// L0_uart0_uchex(ww >> 0 & 0xFF); -// } - -void L0_uart0_ulhex(U32 ww) -{ - L0_uart0_uchex(ww >> 24 & 0xFF); - L0_uart0_uchex(ww >> 16 & 0xFF); - L0_uart0_uchex(ww >> 8 & 0xFF); - L0_uart0_uchex(ww >> 0 & 0xFF); +#include "uart0.h" +#include "../msp/time.h" +//#define _USE_485 + +static volatile Ts_uart_send_buf idata ts_uart_send_shop; + +TP_Handler_X s_uart0_rec; +TS_PH4_modbus s_uart0_ack; + +void L0_uart0_init(void) +{ + U16 val = D_BRT_COUNT(12,D_sys_MainFre,D_uart0_BRT); + SCON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + AUXR |= 0x01; //涓插彛1閫夋嫨瀹氭椂鍣2涓烘尝鐗圭巼鍙戠敓鍣 + AUXR &= 0xFB; //瀹氭椂鍣2鏃堕挓涓篎osc/12,鍗12T + //T2L = 0xFE; //璁惧畾瀹氭椂鍒濆 + //T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 + T2L = val; + T2H = val >> 8; + AUXR |= 0x10; //鍚姩瀹氭椂鍣2 } -void L0_uart0_uldec(U32 ww) +void L0_uart0_buf_init(void) { - L0_uart0_uc(ww / 1000000 % 10 + '0'); - L0_uart0_uc(ww / 100000 % 10 + '0'); - L0_uart0_uc(ww / 10000 % 10 + '0'); - L0_uart0_uc(ww / 1000 % 10 + '0'); - L0_uart0_uc(ww / 100 % 10 + '0'); - L0_uart0_uc(ww / 10 % 10 + '0'); - L0_uart0_uc(ww / 1 % 10 + '0'); -} - -/********** -void L0_uart0_uc_debug(U8 ww) -{ - L0_uart0_sendArray(&ww,1); - while(0 != ts_uart_send_shop.now){} -} - -void L0_uart0_ushex(vU16 ww,U8 hex) -{ - U8 buf3[4]; - U_F16 k; - k.us = ww; - if(16 == hex ) - { - buf3[0] = cguHex2Char[D_uc_high(k.BYTE2.H)][1]; - buf3[1] = cguHex2Char[D_uc_low(k.BYTE2.H)][1]; - buf3[2] = cguHex2Char[D_uc_high(k.BYTE2.L)][1]; - buf3[3] = cguHex2Char[D_uc_low(k.BYTE2.L)][1]; - L0_uart0_sendArray(buf3,4); - - }else if(2 == hex) - { - buf3[0] = (k.BYTE2.H); - buf3[1] = (k.BYTE2.L); - L0_uart0_sendArray(buf3,2); - }else - { - - buf3[0] = 0x55; - buf3[1] = 0x66; - - L0_uart0_sendArray(buf3,2); - - } -} -k.us = 0x1234 -uc - [0]=0x12 - [1]=0x34 -byte2 - H=0x12 - L=0x34 - -**********/ - -void L0_uart0_ushex(vU16 ww,U8 hex) -{ - U_F16 k; - k.us = ww; - D_waitFree_uart0(); - if(16 == hex ) - { - ts_uart_send_shop.buf3[0] = cguHex2Char[D_uc_high(k.BYTE2.H)][1]; - ts_uart_send_shop.buf3[1] = cguHex2Char[D_uc_low(k.BYTE2.H)][1]; - ts_uart_send_shop.buf3[2] = cguHex2Char[D_uc_high(k.BYTE2.L)][1]; - ts_uart_send_shop.buf3[3] = cguHex2Char[D_uc_low(k.BYTE2.L)][1]; - L0_uart0_sendArray(ts_uart_send_shop.buf3,4); - - } - - - /**************** - else if(2 == hex) - { - ts_uart_send_shop.buf3[0] = (k.BYTE2.H); - ts_uart_send_shop.buf3[1] = (k.BYTE2.L); - L0_uart0_sendArray(ts_uart_send_shop.buf3,2); - }else - { - ts_uart_send_shop.buf3[0] = 0x55; - ts_uart_send_shop.buf3[1] = 0x66; - L0_uart0_sendArray(ts_uart_send_shop.buf3,2); - } + ts_uart[uNum0].p = &ts_uart_send_shop; + ts_uart[uNum0].p->max = ts_uart[uNum0].p->now = 0; + ts_uart[uNum0].p->ok = D_ready; + ts_uart[uNum0].t = &s_uart0_rec; + ts_uart[uNum0].t->head = 0; + ts_uart[uNum0].t->ok = 0; + //ts_uart[uNum0].tp_handler = L1_s2b_PH4; + ts_uart[uNum0].tp_handler = NULL; //浣跨敤鍑芥暟鎸囬拡瀵艰嚧閿欒 + ts_uart[uNum0].ack = (U8*)&s_uart0_ack; + L0_uart0_init(); + D_uart0_ES_INT(1); //鎵撳紑涓插彛涓柇 - */ -} -void L2_waitFree_uart0(void) -{ - while(ts_uart_send_shop.ok != D_ready) - { - if(ts_uart_send_shop.over ++ > 600000) - { - break; - } - } +#if (D_UART0_485_TYPE != TYPE_485_NONE) + D_UART0_485_RX() //榛樿澶勪簬鎺ユ敹鐘舵 +#endif } -void L0_uart0_sendArray(U8 *buf,U16 len) +void L0_uart0_sendArray(U8 * buf, U16 len) { - D_485_TX(); //鍒囨崲鍒拌緭鍑虹姸鎬 - - D_waitFree_uart0(); // P31 = 1; - ts_uart_send_shop.over = 0; - ts_uart_send_shop.p = buf; - ts_uart_send_shop.max = len; - ts_uart_send_shop.now = 1; - ts_uart_send_shop.ok = D_clear; - L0_uart0_set(ts_uart_send_shop.p[0]); +#if (D_UART0_485_TYPE != TYPE_485_NONE) + D_UART0_485_TX() //鍒囨崲鍒拌緭鍑虹姸鎬 +#endif + L0_uartN_sendArray(uNum0,buf,len); } - /************************************************* UART 涓柇 *************************************************/ -void INTERRUPT_UART(void) interrupt D_SERVE_UART// using 2 +void INTERRUPT_UART(void) D_SERVE_UART { - NOP(); NOP(); NOP(); - if(L0_uart0_IntRI() /*&& G.e.mcu_enc_id[5] == eep_enc.enc_val[5]*/) //濡傛灉鏄疷0鎺ユ敹涓柇 + //NOP(); NOP(); NOP(); + if(L0_uart0_IntRI()) //濡傛灉鏄疷0鎺ユ敹涓柇 { L0_uart0_IntRIClear(); //娓呴櫎鎺ユ敹涓柇鏍囧織 - //s_nos_tick.tp_count = 0; - L0_timer1_reset(); - s_uart0_rec.reg = L0_uart0_get(); - L1_s2b_PH4(&s_uart0_rec); + ts_uart[uNum0].t->reg = L0_uartN_get(uNum0); + //ts_uart[uNum0].tp_handler(ts_uart[uNum0].t); + L1_s2b_PH4(ts_uart[uNum0].t); + L0_timer1_restart(); } if(L0_uart0_IntTI()) //濡傛灉鏄疷0鍙戦佷腑鏂 { L0_uart0_IntTIClear(); //娓呴櫎鍙戦佷腑鏂爣蹇 - if(ts_uart_send_shop.max != ts_uart_send_shop.now) + if(ts_uart[uNum0].p->max != ts_uart[uNum0].p->now) { - L0_uart0_set(ts_uart_send_shop.p[ts_uart_send_shop.now]); - ts_uart_send_shop.now ++; + L0_uartN_set(uNum0,ts_uart[uNum0].p->p[ts_uart[uNum0].p->now]); + ts_uart[uNum0].p->now ++; } else { - ts_uart_send_shop.ok = D_ready; - ts_uart_send_shop.max = 0; - ts_uart_send_shop.now = 0;//鍙互鍙戦佷笅涓涓暟鎹 - // P31 = 0; - //鍒囨崲鍒版帴鏀剁姸鎬 - D_485_RX(); + ts_uart[uNum0].p->ok = D_ready; + ts_uart[uNum0].p->max = 0; + ts_uart[uNum0].p->now = 0;//鍙互鍙戦佷笅涓涓暟鎹 +#if (D_UART0_485_TYPE != TYPE_485_NONE) + D_UART0_485_RX() //鍒囨崲鍒版帴鏀剁姸鎬 +#endif } } - else - { - //鍏朵粬涓柇 - } - NOP(); NOP(); NOP(); + //NOP(); NOP(); NOP(); } -#if 1 -void timer1_isrHanddle (void) interrupt D_ISR_timer1 -{// - TF1 = 0; - //s_nos_tick.uart0_free = 1; - //if(s_uart0_rec.head == 1) //鏀跺埌涓鏉″崗璁 - if(s_uart0_rec.head == 1) //鏀跺埌涓鏉″崗璁 +void timer1_isrHanddle(void) D_SERVE_TIMER1 +{ + struct _tp_handler_x *p = &s_uart0_rec; + + if((p->head == 1) && (p->num >= D_s_modbus_min)) { - s_uart0_rec.head = 0; - P10 ^= 1; - if(s_uart0_rec.ok == 0) - { - s_uart0_rec.ok = 1; - //Lc_buf_copy_uc(); + //LED1 ^= 1; + p->head = 0; + crc16(p->crc,p->buf,p->num - 2); //鏍¢獙CRC + if(p->crc[0] == p->buf[p->num-2] && p->crc[1] == p->buf[p->num-1]) + { + p->ok = 1; + LED0 ^= 1; } } + L0_timer1_stop(); } -#else - -void timer1_isrHanddle (void) interrupt D_ISR_timer1 -{// - TF1 = 0; - //s_nos_tick.uart0_free = 1; - if(s_uart0_rec.head == 1) //鏀跺埌涓鏉″崗璁 - { - s_uart0_rec.head = 0; - s_uart0_rec.ok = 1; - L3_task_uart0_modbus_handler(&s_uart0_rec); - } -} - - - -#endif - - diff --git a/source/msp/UART0.h b/source/msp/UART0.h index 3df7585..37bd779 100644 --- a/source/msp/UART0.h +++ b/source/msp/UART0.h @@ -14,10 +14,10 @@ /// /// /// 淇璇存槑锛氭渶鍒濈増鏈 -/// Modified by: cc -/// Modified date: 20190222 +/// Modified by: +/// Modified date: /// Version: -/// Descriptions: 涓柇鐨刵ow鍜宮ax璋冩暣绫诲瀷 鍙互鏀寔int鍨嬬殑鏁版嵁涓娆″彂閫,鍓嶆彁鏄寚鍚戝凡鏈夌殑鏁扮粍 +/// Descriptions: ////////////////////////////////////////////////////////////////////////// /***************************************************************************** update by cc @201700110 @@ -53,100 +53,36 @@ msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 #ifndef _uart0_H #define _uart0_H #include "../bsp/bsp_config.h" -#include "../clib/type.h" -//#include "../debug/debug_drv.h" -//#include "../uartcom/urec2protocol.h" -//?include "../uartcom/uprotocol2app.h" -#include "../tpc/tpc_modbus.h" -#define Ldi_print(x) Lc_print_buf(x) -//#include "../uartcom/UProtocol.h" -#include "../ctask/task.h" -#include "../clib/Clib.h" +#include "../tpc/modbus.h" +#include "uart_x.h" +//#include "../tpc/tpc_x.h" -//extern struct _s_uart_rec_ s_uart0_rec; -// extern TS_Handle_PH1 volatile s_uart0_rec; -//extern TS_Handle_PH1A volatile s_uart0_rec; -extern TS_Handle_PH4 s_uart0_rec; +#define uNum0 0 - -///#define D_s_uart0_rec_close(); s_uart0_rec.ok = 2;// 鍏抽棴涓插彛鍗忚瑙f瀽 -///#define D_s_uart0_rec_open(); s_uart0_rec.ok = 0;// 鍏抽棴涓插彛鍗忚瑙f瀽 -#define D_uart0_free() (0 == ts_uart_send_shop.max) -#define D_uart0_busy() (0 != ts_uart_send_shop.max) - - - -//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -////fixme:鍜宑pu鐨勭▼搴忓閲忔伅鎭浉鍏 -#define D_send_buf_max 8 /// 9600bps = 10000bps = 1000 Bps = 1Byte/ms - /// 19200bps = 20000bps = 2000Bps = 2Byte/ms = 1Byte/0.5ms - /// 128Bytes = 128*0.5ms = 64ms - -#define D_send_buf2_max 6 - -typedef struct _ts_uart0_send_buf_ -{//8byte - U8 num; //鎺ユ敹鍒扮殑鏁扮洰娉ㄦ剰鏁版嵁闀垮害鐨勮寖鍥 - U8 *p; - vU16 now; /// 褰撳墠buf鎵鍦ㄧ殑浣嶇疆 0------(max-1) - vU16 max; /// 褰撳墠buf鐨勬渶澶у,涔熷氨鏄渶瑕佸彂閫佺殑闀垮害 - vU16 over; /// 褰撳墠buf鐨勬渶澶у,涔熷氨鏄渶瑕佸彂閫佺殑闀垮害 - U8 ok; /// 褰撳墠buf鐨勬渶澶у,涔熷氨鏄渶瑕佸彂閫佺殑闀垮害 - U8 buf[D_send_buf_max]; -/// U8 buf2[D_send_buf2_max]; - U8 buf3[D_send_buf2_max]; -//// U8 buf4[D_send_buf_max]; - /// U8 buf[D_send_buf_max + 1];//buffer 鐨勭涓浣嶆槸 闀垮害 -}Ts_uart_send_buf; - - -extern volatile Ts_uart_send_buf ts_uart_send_shop; -///extern volatile Ts_uart_send_buf ts_uart_send_depot; - - -#define D_uart0_ES_INT(x) ES = (x) - - -#define L0_uart0_IntRI() (RI)//BITN_G(SCON,U0RI) -#define L0_uart0_IntTI() (TI)//BITN_G(SCON,U0TI) +#define D_uart0_ES_INT(x) ES = (x) +#define L0_uart0_IntRI() (RI)//BITN_G(SCON,U0RI) +#define L0_uart0_IntTI() (TI)//BITN_G(SCON,U0TI) #define L0_uart0_IntRIClear(); RI = 0;//BITN_0(SCON,U0RI) #define L0_uart0_IntTIClear(); TI = 0;//BITN_0(SCON,U0TI) -#define L0_uart0_set(x) SBUF = (x); -#define L0_uart0_get() (SBUF) -//#define D_send_us(x) gRccUs01 = x;L0_uart0_uc(gRccUs01_H);L0_uart0_uc(gRccUs01_L); - -#define D_send_ushex(x) L0_uart0_ushex(x,16);///Lc_delay_ms(2);//gRccUs01 = x;L0_uart0_uchex(gRccUs01_H);L0_uart0_uchex(gRccUs01_L); -#define D_uart0_send_over() (D_ready == ts_uart_send_shop.ok) - //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -void L1_uart0_buf_init(void); - -extern void L0_uart0_init(void); -extern void L0_uart0_init32K_290BPS(void); +void L0_uart0_buf_init(void); +void L0_uart0_sendArray(U8 * buf, U16 len); -extern void L0_Uart0_Init4800(void) ; +#define L0_uart0_uc(X) L0_uartN_uc(uNum0,X) +#define L0_uart0_us(X) L0_uartN_us(uNum0,X) +#define L0_uart0_ul(X) L0_uartN_ul(uNum0,X) +#define L0_uart0_0d0a() L0_uartN_0d0a(0) +#define L0_uart0_uchex(X) L0_uartN_uchex(uNum0,X) +#define L0_uart0_ushex(X) L0_uartN_ushex(uNum0,X) +#define L0_uart0_ulhex(X) L0_uartN_ulhex(uNum0,X) +#define L0_uart0_sendstr(buf) L0_uartN_sendstr(uNum0,buf) +#define L1_uart0_uchexArray(buf) L1_uartN_uchexArray(uNum0,buf) -extern void L0_uart0_uchex(U8 ww); - -extern void L0_uart0_ulhex(vU32 ww); - -extern void L0_uart0_ul(vU32 ww); -extern void L0_uart0_sendstr(U8 *str); -extern void L0_uart0_0d0a(void); -extern void L0_uart0_uc(U8 ww); -extern void L0_uart0_uc_debug(U8 ww); -extern void L0_uart0_us(vU32 ww); -extern void L0_uart0_ushex(vU16 ww,U8 hex); -extern void L0_uart0_uldec(U32 ww); - -/////////////////////////////////////////////////////////////// -extern void L0_uart0_sendArray(U8 *buf,U16 len); -extern void L0_uart0_sendbuf(void); -///extern void L0_uart0_sendArraylong(U8 *buf,U16 usStart,U16 usEnd); +extern TP_Handler_X s_uart0_rec; +extern TS_PH4_modbus s_uart0_ack; #endif //#ifndef _uart0_H - diff --git a/source/msp/eeprom.c b/source/msp/eeprom.c new file mode 100644 index 0000000..e9d706b --- /dev/null +++ b/source/msp/eeprom.c @@ -0,0 +1,223 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. +///------------------------------------------------------------------------- +/// @file msp_eeprom.c +/// @brief msp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20190106 +/// @note cc_AS_stc02 鐢眘tc-isp v6.0860 +////////////////////////////////////////////////////////////////////////////// +#include "eeprom.h" +#include "../bsp/bsp_config.h" + +struct eeprom_block_t eep_block; + +#if(TYPE_MCU == TYPE_MCU_STC_8A || TYPE_MCU == TYPE_MCU_STC_8F) +#define WT_30M 0x80 +#define WT_24M 0x81 +#define WT_20M 0x82 +#define WT_12M 0x83 +#define WT_6M 0x84 +#define WT_3M 0x85 +#define WT_2M 0x86 +#define WT_1M 0x87 + + +void L0_Iap_Idle() +{ + IAP_CONTR = 0; //鍏抽棴IAP鍔熻兘 + IAP_CMD = 0; //娓呴櫎鍛戒护瀵勫瓨鍣 + IAP_TRIG = 0; //娓呴櫎瑙﹀彂瀵勫瓨鍣 + IAP_ADDRH = 0x80; //灏嗗湴鍧璁剧疆鍒伴潪IAP鍖哄煙 + IAP_ADDRL = 0; +} + +char L0_Iap_Read(vU16 addr) +{ + char dat; + + IAP_CONTR = WT_12M; //浣胯兘IAP + IAP_CMD = 1; //璁剧疆IAP璇诲懡浠 + IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 + IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 + IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) + IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) + _nop_(); + dat = IAP_DATA; //璇籌AP鏁版嵁 + L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 + + return dat; +} + +void L0_Iap_Program(vU16 addr, char dat) +{ + IAP_CONTR = WT_12M; //浣胯兘IAP + IAP_CMD = 2; //璁剧疆IAP鍐欏懡浠 + IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 + IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 + IAP_DATA = dat; //鍐橧AP鏁版嵁 + IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) + IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) + _nop_(); + L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 +} + +///姣忎釜鎵囧尯512瀛楄妭 +///鎸囧畾鍦板潃鍙互涓哄綋鍓嶆墖鍖哄唴鐨勪换鎰忓湴鍧锛岄兘浼氬畬鏁存摝闄ゅ綋鍓嶆墖鍖 +void L0_Iap_Erase(vU16 addr) +{ + IAP_CONTR = WT_12M; //浣胯兘IAP + IAP_CMD = 3; //璁剧疆IAP鎿﹂櫎鍛戒护 + IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 + IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 + IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) + IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) + _nop_(); // + L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 +} + +#elif (TYPE_MCU == TYPE_MCU_STC_8G || TYPE_MCU == TYPE_MCU_STC_8H) +void L0_Iap_Idle() +{ + IAP_CONTR = 0; //鍏抽棴IAP鍔熻兘 + IAP_CMD = 0; //娓呴櫎鍛戒护瀵勫瓨鍣 + IAP_TRIG = 0; //娓呴櫎瑙﹀彂瀵勫瓨鍣 + IAP_ADDRH = 0x80; //灏嗗湴鍧璁剧疆鍒伴潪IAP鍖哄煙 + IAP_ADDRL = 0; +} + +char L0_Iap_Read(vU16 addr) +{ + char dat; + + IAP_CONTR = 0x80; //浣胯兘IAP + IAP_TPS = 12; + IAP_CMD = 1; //璁剧疆IAP璇诲懡浠 + IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 + IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 + IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) + IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) + _nop_(); + dat = IAP_DATA; //璇籌AP鏁版嵁 + L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 + + return dat; +} + +void L0_Iap_Program(vU16 addr, char dat) +{ + IAP_CONTR = 0x80; //浣胯兘IAP + IAP_TPS = 12; //璁剧疆鎿﹂櫎绛夊緟鍙傛暟 12MHz + IAP_CMD = 2; //璁剧疆IAP鍐欏懡浠 + IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 + IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 + IAP_DATA = dat; //鍐橧AP鏁版嵁 + IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) + IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) + _nop_(); + L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 +} + +///姣忎釜鎵囧尯512瀛楄妭 +///鎸囧畾鍦板潃鍙互涓哄綋鍓嶆墖鍖哄唴鐨勪换鎰忓湴鍧锛岄兘浼氬畬鏁存摝闄ゅ綋鍓嶆墖鍖 +void L0_Iap_Erase(vU16 addr) +{ + IAP_CONTR = 0x80; //浣胯兘IAP + IAP_TPS = 12; //璁剧疆鎿﹂櫎绛夊緟鍙傛暟 12MHz + IAP_CMD = 3; //璁剧疆IAP鎿﹂櫎鍛戒护 + IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 + IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 + IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) + IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) + _nop_(); // + L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 +} +#endif + + +void L0_Iap_Program_array(vU16 addr,U8 *buf,U8 len) +{ + U8 i = 0; + for(i=0;i D_EEP_SECTOR_BLOCK_BUF_SIZE) + { + L0_uart0_sendstr("eep write error."); + return 1; + } + + Lc_memset((U8*)&eep_block,0,sizeof(eep_block)); + eep_block.filter[0] = D_EEP_BLOCK_FILTER0; + eep_block.filter[1] = D_EEP_BLOCK_FILTER1; + eep_block.len[0] = len >> 8 & 0xFF; + eep_block.len[1] = len >> 0 & 0xFF; + for(i=0;i>>绔彛浣嶅畾涔夛紝鍙慨鏀!!!!!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - -#include "../cpu/stc_stc8a8k.h" -#include "../cpu/c51_macro.h" -#include "../bsp/bsp_config.h" - - #include "uart0.h" -extern void L3_eeprom_fun(U8 *pPara); +/** + * EEPROM 瀛樺偍缁撴瀯 + * filter0 + filter1 + len0 + len1 + {data} + crc0 + crc1 + */ +#define D_EEP_SECTOR_BLOCK_BUF_SIZE (D_EEP_SECTOR_BLOCK_SIZE - 6) +typedef struct eeprom_block_t +{ + U8 filter[2]; //filter + U8 len[2]; //鏈夋晥鏁版嵁鐨勪釜鏁 + U8 buf[D_EEP_SECTOR_BLOCK_BUF_SIZE]; + U8 crc[2]; //浠巉ilter寮濮嬭繘琛屾暣浣撴牎楠 +}EEPROM_BLOCK; + +extern struct eeprom_block_t eep_block; +extern U8 L1_eep_read_block(U8 sector, U8 block, U16 blocksize, U8 *buf, U16 *plen); +extern U8 L1_eep_write_block(U8 sector, U8 block, U16 blocksize, const U8 *buf, U16 len, U8 sectorEraseFlag); +extern U8 L1_eep_erase_sector(U8 sector); + ///姣忎釜鎵囧尯512瀛楄妭 extern void L0_Iap_Erase(vU16 addr); @@ -41,6 +49,7 @@ extern char L0_Iap_Read(vU16 addr); extern void L0_Iap_Program_array(vU16 addr,U8 *buf,U8 len); extern void L0_Iap_Read_array(vU16 addr,U8 *buf,U8 len); extern void L1_Iap_main(void); +extern void L3_eeprom_fun(U8 *pPara); #endif// #ifndef _msp_eeprom_H_ diff --git a/source/msp/iic_sim.h b/source/msp/iic_sim.h index d3665bd..b6a89e8 100644 --- a/source/msp/iic_sim.h +++ b/source/msp/iic_sim.h @@ -25,8 +25,6 @@ ///>>>端口位定义,可修改!!!!!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#include "../cpu/stc_stc8a8k.h" -#include "../cpu/c51_macro.h" #include "../bsp/bsp_config.h" diff --git a/source/msp/msp_eeprom.c b/source/msp/msp_eeprom.c deleted file mode 100644 index 3020f46..0000000 --- a/source/msp/msp_eeprom.c +++ /dev/null @@ -1,153 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -///@copyright Copyright (c) 2018, 浼犳帶绉戞妧 All rights reserved. -///------------------------------------------------------------------------- -/// @file msp_eeprom.c -/// @brief msp @ driver config -///------------------------------------------------------------------------- -/// @version 1.0 -/// @author CC -/// @date 20190106 -/// @note cc_AS_stc02 鐢眘tc-isp v6.0860 -////////////////////////////////////////////////////////////////////////////// -#include "msp_eeprom.h" - -#include "../tpc/tpc_uart.h" - - -#define WT_30M 0x80 -#define WT_24M 0x81 -#define WT_20M 0x82 -#define WT_12M 0x83 -#define WT_6M 0x84 -#define WT_3M 0x85 -#define WT_2M 0x86 -#define WT_1M 0x87 - - -U_F16 uf_ee_add; - - -void L0_Iap_Idle() -{ - IAP_CONTR = 0; //鍏抽棴IAP鍔熻兘 - IAP_CMD = 0; //娓呴櫎鍛戒护瀵勫瓨鍣 - IAP_TRIG = 0; //娓呴櫎瑙﹀彂瀵勫瓨鍣 - IAP_ADDRH = 0x80; //灏嗗湴鍧璁剧疆鍒伴潪IAP鍖哄煙 - IAP_ADDRL = 0; -} - -char L0_Iap_Read(vU16 addr) -{ - char dat; - - IAP_CONTR = WT_12M; //浣胯兘IAP - IAP_CMD = 1; //璁剧疆IAP璇诲懡浠 - IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 - IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 - IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) - IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) - _nop_(); - dat = IAP_DATA; //璇籌AP鏁版嵁 - L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 - - return dat; -} - -void L0_Iap_Program(vU16 addr, char dat) -{ - IAP_CONTR = WT_12M; //浣胯兘IAP - IAP_CMD = 2; //璁剧疆IAP鍐欏懡浠 - IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 - IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 - IAP_DATA = dat; //鍐橧AP鏁版嵁 - IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) - IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) - _nop_(); - L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 -} - -///姣忎釜鎵囧尯512瀛楄妭 -///鎸囧畾鍦板潃鍙互涓哄綋鍓嶆墖鍖哄唴鐨勪换鎰忓湴鍧锛岄兘浼氬畬鏁存摝闄ゅ綋鍓嶆墖鍖 -void L0_Iap_Erase(vU16 addr) -{ - IAP_CONTR = WT_12M; //浣胯兘IAP - IAP_CMD = 3; //璁剧疆IAP鎿﹂櫎鍛戒护 - IAP_ADDRL = addr; //璁剧疆IAP浣庡湴鍧 - IAP_ADDRH = addr >> 8; //璁剧疆IAP楂樺湴鍧 - IAP_TRIG = 0x5a; //鍐欒Е鍙戝懡浠(0x5a) - IAP_TRIG = 0xa5; //鍐欒Е鍙戝懡浠(0xa5) - _nop_(); // - L0_Iap_Idle(); //鍏抽棴IAP鍔熻兘 -} - -void L0_Iap_Program_array(vU16 addr,U8 *buf,U8 len) -{ - U8 i = 0; - for(i=0;i>8 & 0xFF); - L0_uart0_uchex(i>>0 & 0xFF); - } - } -#endif - Lc_delay_ms(100); - L0_uart0_uc('%'); - - while(1); -} -#endif - diff --git a/source/msp/time.c b/source/msp/time.c index e34f228..8007b26 100644 --- a/source/msp/time.c +++ b/source/msp/time.c @@ -1,84 +1,28 @@ -#include "Time.h" +#include "time.h" +#define D_TIMER_COUNT(t,clk,timeInUs) (U16)(65536 - 1.0 * (clk) / 1000 * (1.0 * timeInUs / 1000) / t) +//#define D_TIMER_COUNT(t,clk,timeInUs) (U16)(65536 - (clk) / 1000 * timeInUs / 1000 / t) /*************鍒濆鍖栧畾鏃跺櫒0鐢 stc-isp v6.86L瀹氭椂鍣ㄨ绠楀櫒鐢熸垚******************/ -#if(MainFre_5M == D_sys_MainFre) -#elif(MainFre_27M == D_sys_MainFre) -#elif(MainFre_22M == D_sys_MainFre) -void L0_timer0_Init(void) //25姣@22.1184MHz +void L0_timer0_Init(void) { + U16 val = D_TIMER_COUNT(12,D_sys_MainFre,D_sys_Jiffies * 1000); AUXR &= 0x7F; //瀹氭椂鍣ㄦ椂閽12T妯″紡 TMOD &= 0xF0; //璁剧疆瀹氭椂鍣ㄦā寮 - TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH0 = 0x4C; //璁剧疆瀹氭椂鍒濆 + //TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 + //TH0 = 0x4C; //璁剧疆瀹氭椂鍒濆 + TL0 = val; //璁剧疆瀹氭椂鍒濆 + TH0 = val >> 8; //璁剧疆瀹氭椂鍒濆 TF0 = 0; //娓呴櫎TF0鏍囧織 TR0 = 1; //瀹氭椂鍣0寮濮嬭鏃 ET0 = 1; //add by cc } -/******************************************** -void L0_timer0_Init(void) //10姣@22.1184MHz -{ - AUXR &= 0x7F; //瀹氭椂鍣ㄦ椂閽12T妯″紡 - TMOD &= 0xF0; //璁剧疆瀹氭椂鍣ㄦā寮 - TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH0 = 0xB8; //璁剧疆瀹氭椂鍒濆 - TF0 = 0; //娓呴櫎TF0鏍囧織 - TR0 = 1; //瀹氭椂鍣0寮濮嬭鏃 - ET0 = 1; //add by cc -} - -void L0_timer0_Init_32k(void) //4fen@32kHz -{ - AUXR &= 0x7F; //瀹氭椂鍣ㄦ椂閽12T妯″紡 - TMOD &= 0xF0; //璁剧疆瀹氭椂鍣ㄦā寮 - #if 0 - TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH0 = 0xB8; //璁剧疆瀹氭椂鍒濆/// 4m20s 71 - #else - TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH0 = 0xcc; //璁剧疆瀹氭椂鍒濆// ff 4s - - - #endif - TF0 = 0; //娓呴櫎TF0鏍囧織 - TR0 = 1; //瀹氭椂鍣0寮濮嬭鏃 - ET0 = 1; //add by cc - BITN_0(DR_who_wakeup, DRB_who_wakeup_timer0); /// 鏍囧織涓柇绫诲瀷: 瀹氭椂鍣 -} -****************************************************/ - -#else ///MainFre_11M -void L0_timer0_Init(void) //10姣@11.0592MHz -{ - AUXR &= 0x7F; //瀹氭椂鍣ㄦ椂閽12T妯″紡 - TMOD &= 0xF0; //璁剧疆瀹氭椂鍣ㄦā寮 - TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH0 = 0xDC; //璁剧疆瀹氭椂鍒濆 - TF0 = 0; //娓呴櫎TF0鏍囧織 - TR0 = 1; //瀹氭椂鍣0寮濮嬭鏃 - ET0 = 1; //add by cc -} - -/******************************************** -void L0_timer0_Init(void) //25姣@11.0592MHz -{ - AUXR &= 0x7F; //瀹氭椂鍣ㄦ椂閽12T妯″紡 - TMOD &= 0xF0; //璁剧疆瀹氭椂鍣ㄦā寮 - TL0 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH0 = 0xA6; //璁剧疆瀹氭椂鍒濆 - TF0 = 0; //娓呴櫎TF0鏍囧織 - TR0 = 1; //瀹氭椂鍣0寮濮嬭鏃 - ET0 = 1; //add by cc -} -****************************************************/ -#endif//D_sys_MainFre) - //10---87 10s /********************** Timer0涓柇鍑芥暟************************/ /// 鍜 L0_timer0_Init 鍏宠仈,闇瑕侀厤缃 bsp_config.h涓殑 D_sys_MainFre /// 榛樿10ms 浣滀负TTSS绯荤粺鐨勫畾鏃跺紩鎿 -void timer0_isrHanddle (void) interrupt D_ISR_timer0 +void timer0_isrHandle (void) D_SERVE_TIMER0 {// NOP(); NOP(); NOP(); TF0 = 0; @@ -99,154 +43,64 @@ void timer0_isrHanddle (void) interrupt D_ISR_timer0 - - - - - - -#if(MainFre_5M == D_sys_MainFre) -#elif(MainFre_27M == D_sys_MainFre) -#elif(MainFre_22M == D_sys_MainFre) -/****************************** -void L0_Timer1_Init(void) //35姣@22.1184MHz -{///鑷姩閲嶈浇 - AUXR &= 0xFB; //瀹氭椂鍣ㄦ椂閽12T妯″紡 - T2L = 0x00; //璁剧疆瀹氭椂鍒濆 - T2H = 0x04; //璁剧疆瀹氭椂鍒濆 - AUXR |= 0x10; //瀹氭椂鍣2寮濮嬭鏃 - - BITN_1(IE2, ET2);// IE2 = ET2; //浣胯兘瀹氭椂鍣ㄤ腑鏂 -} -**********************************/ -#else ///MainFre_11M - -void L0_timer1_Init_7ms(void) //7姣@11.0592MHz +void L0_timer1_Init() //600寰@11.0592MHz { - AUXR &= 0xBF; //瀹氭椂鍣ㄦ椂閽12T妯″紡 +#if 0 + AUXR |= 0x40; //瀹氭椂鍣ㄦ椂閽1T妯″紡 TMOD &= 0x0F; //璁剧疆瀹氭椂鍣ㄦā寮 - TL1 = 0xCD; //璁剧疆瀹氭椂鍒濆 + TL1 = 0x14; //璁剧疆瀹氭椂鍒濆 TH1 = 0xE6; //璁剧疆瀹氭椂鍒濆 TF1 = 0; //娓呴櫎TF1鏍囧織 TR1 = 1; //瀹氭椂鍣1寮濮嬭鏃 ET1 = 1; //add by cc -} -void L0_timer1_Init_5ms(void) //5姣@11.0592MHz -{//0x7F绀烘尝鍣ㄦ祴璇曞ぇ绾40ms锛宭ed闂儊 鑲夌溂鍙 - AUXR &= 0xBF; //瀹氭椂鍣ㄦ椂閽12T妯″紡 +#else + U16 val = D_TIMER_COUNT(1,D_sys_MainFre,600); + AUXR |= 0x40; //瀹氭椂鍣ㄦ椂閽1T妯″紡 TMOD &= 0x0F; //璁剧疆瀹氭椂鍣ㄦā寮 - TL1 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH1 = 0xEE; //璁剧疆瀹氭椂鍒濆 + //TL1 = 0xCD; //璁剧疆瀹氭椂鍒濆鍊 + //TH1 = 0xD4; //璁剧疆瀹氭椂鍒濆鍊 + TL1 = val; //璁剧疆瀹氭椂鍒濆 + TH1 = val >>8; //璁剧疆瀹氭椂鍒濆 TF1 = 0; //娓呴櫎TF1鏍囧織 TR1 = 1; //瀹氭椂鍣1寮濮嬭鏃 ET1 = 1; //add by cc +#endif } -void L0_timer1_Init_1ms(void) //1姣@11.0592MHz + +void L0_timer1_restart() //600寰@11.0592MHz { + U16 val = D_TIMER_COUNT(1,D_sys_MainFre,600); + TR1 = 0; //鍏堝叧闂紝鍚﹀垯浼氶噸澶嶄腑鏂紝璧蜂笉鍒皉esetart鏁堟灉 +#if 1 AUXR |= 0x40; //瀹氭椂鍣ㄦ椂閽1T妯″紡 TMOD &= 0x0F; //璁剧疆瀹氭椂鍣ㄦā寮 - TL1 = 0xCD; //璁剧疆瀹氭椂鍒濆 - TH1 = 0xD4; //璁剧疆瀹氭椂鍒濆 + //TL1 = 0x14; //璁剧疆瀹氭椂鍒濆 + //TH1 = 0xE6; //璁剧疆瀹氭椂鍒濆 + TL1 = val; //璁剧疆瀹氭椂鍒濆 + TH1 = val >>8; //璁剧疆瀹氭椂鍒濆 TF1 = 0; //娓呴櫎TF1鏍囧織 TR1 = 1; //瀹氭椂鍣1寮濮嬭鏃 ET1 = 1; //add by cc -} -void L0_timer1_Init(void) //600寰@11.0592MHz -{ +#else AUXR |= 0x40; //瀹氭椂鍣ㄦ椂閽1T妯″紡 TMOD &= 0x0F; //璁剧疆瀹氭椂鍣ㄦā寮 - TL1 = 0x14; //璁剧疆瀹氭椂鍒濆 - TH1 = 0xE6; //璁剧疆瀹氭椂鍒濆 + TL1 = 0xCD; //璁剧疆瀹氭椂鍒濆鍊 + TH1 = 0xD4; //璁剧疆瀹氭椂鍒濆鍊 TF1 = 0; //娓呴櫎TF1鏍囧織 TR1 = 1; //瀹氭椂鍣1寮濮嬭鏃 ET1 = 1; //add by cc +#endif } - -//0x7F绀烘尝鍣ㄦ祴璇曞ぇ绾40ms锛宭ed闂儊 鑲夌溂鍙 -void L0_timer1_reset(void) +void L0_timer1_stop(void) { TR1 = 0; - TL1 = 0x14; //璁剧疆瀹氭椂鍒濆 - TH1 = 0xE6; //璁剧疆瀹氭椂鍒濆 - TR1 = 1; TF1 = 0; } -#endif//D_sys_MainFre) - - -#if 0 -void L0_Timer1Init(void) -{ - #if 0 - - //30姣@22.1184MHz - AUXR &= 0xBF; //瀹氭椂鍣ㄦ椂閽12T妯″紡 - TMOD &= 0x0F; //璁剧疆瀹氭椂鍣ㄦā寮 - TMOD |= 0x10; //璁剧疆瀹氭椂鍣ㄦā寮 - TL1 = 0x00; //璁剧疆瀹氭椂鍒濆 - TH1 = 0x28; //璁剧疆瀹氭椂鍒濆 - TF1 = 0; //娓呴櫎TF1鏍囧織 -#else - TMOD = 0x40; //澶栭儴璁℃暟妯″紡 - TL1 = (0xff-10); - TH1 = 0xff; - - - #endif -// TR1 = 1; //瀹氭椂鍣1寮濮嬭鏃 - L0_TIMER1_start(); - //L0_TIMER1_end(); - L0_TIMER1_isr_CLOSE(); -/// ET1 = 1; // add by cc 鍚姩瀹氭椂鍣1鐨勪腑鏂 -} - -void L0_timer1_Init(void) //璁℃暟鍣1鍒濆鍖 -{ - - TMOD = 0x40; //澶栭儴璁℃暟妯″紡 - TL1 = 0x9c; - TH1 = 0xff; - // TR1 = 1; //鍚姩瀹氭椂鍣 - ET1 = 1; //浣胯兘瀹氭椂鍣ㄤ腑鏂 - // EA = 1; -} -#define L0_timer1_on(); TR1 = 1; //鍚姩璁℃暟鍣 -#define L0_timer1_off(); TR1 = 0; //鍏抽棴璁℃暟鍣 //鍚姩璁℃暟鍣 - -//10---87 10s -/********************** Timer0涓柇鍑芥暟************************/ -/// 鍜 L0_timer0_Init 鍏宠仈,闇瑕侀厤缃 bsp_config.h涓殑 D_sys_MainFre -/// 榛樿10ms 浣滀负TTSS绯荤粺鐨勫畾鏃跺紩鎿 -void timer1_inr (void) interrupt 3 -{ - -/******* - s_task_GC032A.usN ++; - s_task_GC032A.buf[s_task_GC032A.usN] = P1; - if(s_task_GC032A.usN < D_row_max) - { - - }else - { - s_task_GC032A.status = 1; - } -// task_handler.line_camera++; -****************/ -} - -#endif - - - - - - - /******************************END*********************************/ diff --git a/source/msp/time.h b/source/msp/time.h index 1f49191..6d78f09 100644 --- a/source/msp/time.h +++ b/source/msp/time.h @@ -6,7 +6,9 @@ #include "../bsp/bsp_config.h" #include "../ctask/tick.h" - +extern void L0_timer1_stop(void); +extern void L0_timer1_start(); +extern void L0_timer1_restart(void); //600寰@11.0592MHz extern void L0_timer1_Init(void); extern void L0_timer1_reset(void); extern void L0_timer1_off(void); diff --git a/source/msp/uart2.c b/source/msp/uart2.c new file mode 100644 index 0000000..3884af7 --- /dev/null +++ b/source/msp/uart2.c @@ -0,0 +1,156 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +// 20160413 CC-ACC-VH02 +// 杩炴帴鑷 J22 RXD0 TXD0 +//P5_DIR &= ~BITN1; //p5.1杈撳嚭TXD +//P5_DIR |= BITN0; //p5.0杈撳叆RXD +//P5_SEL0 &= ~(BITN0 +BITN1); //璁剧疆P5.0 P5.1涓篣ART0 RXD TXD +//P5_SEL1 |= BITN0 +BITN1; + +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_UART0_Init + UART0_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ +#include "uart2.h" +#include "../app/common.h" + +//#define _USE_485 + +static volatile Ts_uart_send_buf idata ts_uart_send_shop; +TP_Handler_X s_uart2_rec; +TS_PH3_ccmodbus s_uart2_ack; + +void L0_uart2_init(void) +{ +#if(MainFre_11M == D_sys_MainFre) //115200bps@11.0592MHz + S2CON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + AUXR |= 0x04; //瀹氭椂鍣2鏃堕挓涓篎osc,鍗1T + T2L = 0xE8; //璁惧畾瀹氭椂鍒濆 + T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 + AUXR |= 0x10; //鍚姩瀹氭椂鍣2 + +#elif (MainFre_22M == D_sys_MainFre) //115200bps@22.1184MHz + S2CON = 0x50; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + AUXR |= 0x04; //瀹氭椂鍣2鏃堕挓涓篎osc,鍗1T + T2L = 0xD0; //璁惧畾瀹氭椂鍒濆 + T2H = 0xFF; //璁惧畾瀹氭椂鍒濆 + AUXR |= 0x10; //鍚姩瀹氭椂鍣2 +#endif +} + +void L0_uart2_buf_init(void) +{ + ts_uart[uNum2].p = &ts_uart_send_shop; + ts_uart[uNum2].p->now = 0; + ts_uart[uNum2].p->ok = D_ready; + ts_uart[uNum2].t = &s_uart2_rec; + ts_uart[uNum2].t->head_0 = D_CMD_Filter1_ff; + ts_uart[uNum2].t->head_1 = D_CMD_Filter2_fe; + ts_uart[uNum2].t->head = 0; + ts_uart[uNum2].t->ok = 0; + ts_uart[uNum2].tp_handler = L1_s2b_PH3; + ts_uart[uNum2].ack = (U8*)&s_uart2_ack; + L0_uart2_init(); + D_uart2_ES_INT(1); //鎵撳紑涓插彛涓柇 + +#if (D_UART2_485_TYPE != TYPE_485_NONE) + D_UART2_485_RX() //榛樿澶勪簬鎺ユ敹鐘舵 +#endif +} + +void L0_uart2_sendArray(U8 * buf, U16 len) +{ +#if (D_UART2_485_TYPE != TYPE_485_NONE) + D_UART2_485_TX() //鍒囨崲鍒拌緭鍑虹姸鎬 +#endif + L0_uartN_sendArray(uNum2,buf,len); +} + +/************************************************* +UART 涓柇 +*************************************************/ +#define D_SERVE_uart2 interrupt 8 +void INTERRUPT_uart2(void) D_SERVE_uart2// using 2 +{ + //NOP(); NOP(); NOP(); + if(L0_uart2_IntRI()) //濡傛灉鏄疷2鎺ユ敹涓柇 + { + L0_uart2_IntRIClear(); //娓呴櫎鎺ユ敹涓柇鏍囧織 + ts_uart[uNum2].t->reg = L0_uartN_get(uNum2); + ts_uart[uNum2].tp_handler(ts_uart[uNum2].t); + } + if(L0_uart2_IntTI()) //濡傛灉鏄疷0鍙戦佷腑鏂 + { + L0_uart2_IntTIClear(); //娓呴櫎鍙戦佷腑鏂爣蹇 + if(ts_uart[uNum2].p->max != ts_uart[uNum2].p->now) + { + L0_uartN_set(uNum2,ts_uart[uNum2].p->p[ts_uart[uNum2].p->now]); + ts_uart[uNum2].p->now ++; + } + else + { + ts_uart[uNum2].p->ok = D_ready; + ts_uart[uNum2].p->max = 0; + ts_uart[uNum2].p->now = 0;//鍙互鍙戦佷笅涓涓暟鎹 +#if (D_UART2_485_TYPE != TYPE_485_NONE) + D_UART2_485_RX() //鍒囨崲鍒版帴鏀剁姸鎬 +#endif + + } + } + //NOP(); NOP(); NOP(); +} + + + + + + + + + + + diff --git a/source/msp/uart2.h b/source/msp/uart2.h new file mode 100644 index 0000000..8d2835b --- /dev/null +++ b/source/msp/uart2.h @@ -0,0 +1,86 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +////////////////////////////////////////////////////////////////////////// +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_uart2_Init + uart2_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ + + +#ifndef _uart2_H +#define _uart2_H + +#include "../bsp/bsp_config.h" +#include "../tpc/tpc_ccmodbus.h" +#include "uartN.h" + +#define uNum2 1 + +#define D_uart2_ES_INT(x) (x) ? (BITN_1(IE2,ES2)) : (BITN_0(IE2,ES2)) +#define L0_uart2_IntRI() (S2CON & S2RI)//BITN_G(SCON,U0RI) +#define L0_uart2_IntTI() (S2CON & S2TI)//BITN_G(SCON,U0TI) +#define L0_uart2_IntRIClear(); BITN_0(S2CON,S2RI) +#define L0_uart2_IntTIClear(); BITN_0(S2CON,S2TI) + +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +void L0_uart2_buf_init(void); +void L0_uart2_sendArray(U8 * buf, U16 len); + +#define L0_uart2_uc(X) L0_uartN_uc(uNum2,X) +#define L0_uart2_us(X) L0_uartN_us(uNum2,X) +#define L0_uart2_ul(X) L0_uartN_ul(uNum2,X) +#define L0_uart2_0d0a() L0_uartN_0d0a(0) +#define L0_uart2_uchex(X) L0_uartN_uchex(uNum2,X) +#define L0_uart2_ushex(X) L0_uartN_ushex(uNum2,X) +#define L0_uart2_ulhex(X) L0_uartN_ulhex(uNum2,X) +#define L0_uart2_sendstr(buf) L0_uartN_sendstr(uNum2,buf) + +extern TP_Handler_X s_uart2_rec; +extern TS_PH3_ccmodbus s_uart2_ack; + +#endif //#ifndef _uart2_H + diff --git a/source/msp/uart3.c b/source/msp/uart3.c new file mode 100644 index 0000000..5c59ccb --- /dev/null +++ b/source/msp/uart3.c @@ -0,0 +1,170 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +// 20160413 CC-ACC-VH02 +// 杩炴帴鑷 J22 RXD0 TXD0 +//P5_DIR &= ~BITN1; //p5.1杈撳嚭TXD +//P5_DIR |= BITN0; //p5.0杈撳叆RXD +//P5_SEL0 &= ~(BITN0 +BITN1); //璁剧疆P5.0 P5.1涓篣ART0 RXD TXD +//P5_SEL1 |= BITN0 +BITN1; + +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_UART0_Init + UART0_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ +#include "uart3.h" +#include "time.h" +#include + +static volatile Ts_uart_send_buf idata ts_uart_send_shop; +struct _tp_handler_x s_uart3_rec; +TS_PH4_modbus s_uart3_ack; + +void L0_uart3_init(void) +{ +#if(MainFre_11M == D_sys_MainFre) //115200bps@11.0592MHz + S3CON = 0x10; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + S3CON |= 0x40; //涓插彛3閫夋嫨瀹氭椂鍣3涓烘尝鐗圭巼鍙戠敓鍣 + T4T3M |= 0x02; //瀹氭椂鍣3鏃堕挓涓篎osc,鍗1T + T3L = 0xE8; //璁惧畾瀹氭椂鍒濆 + T3H = 0xFF; //璁惧畾瀹氭椂鍒濆 + T4T3M |= 0x08; //鍚姩瀹氭椂鍣3 + +#elif (MainFre_22M == D_sys_MainFre) //115200bps@22.1184MHz + S3CON = 0x10; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + S3CON |= 0x40; //涓插彛3閫夋嫨瀹氭椂鍣3涓烘尝鐗圭巼鍙戠敓鍣 + T4T3M |= 0x02; //瀹氭椂鍣3鏃堕挓涓篎osc,鍗1T + T3L = 0xD0; //璁惧畾瀹氭椂鍒濆 + T3H = 0xFF; //璁惧畾瀹氭椂鍒濆 + T4T3M |= 0x08; //鍚姩瀹氭椂鍣3 +#endif + +} + +void L0_uart3_buf_init(void) +{ + ts_uart[uNum3].p = &ts_uart_send_shop; + ts_uart[uNum3].p->now = 0; + ts_uart[uNum3].p->ok = D_ready; + ts_uart[uNum3].t = &s_uart3_rec; + ts_uart[uNum3].t->head = 0; + ts_uart[uNum3].t->ok = 0; + ts_uart[uNum3].tp_handler = L1_s2b_PH4; + ts_uart[uNum3].ack = (U8*)&s_uart3_ack; + L0_uart3_init(); + //D_uart3_ES_INT_OPEN(); //鎵撳紑涓插彛涓柇 + D_uart3_ES_INT(1); //鎵撳紑涓插彛涓柇 + +#if (D_UART3_485_TYPE != TYPE_485_NONE) + D_UART3_485_RX() //榛樿澶勪簬鎺ユ敹鐘舵 +#endif +} + +void L0_uart3_sendArray(U8 * buf, U16 len) +{ +#if (D_UART3_485_TYPE != TYPE_485_NONE) + D_UART3_485_TX() //鍒囨崲鍒拌緭鍑虹姸鎬 +#endif + L0_uartN_sendArray(uNum3,buf,len); +} + +/************************************************* +UART 涓柇 +*************************************************/ +#define D_SERVE_UART3 interrupt 17 +void INTERRUPT_UART3(void) D_SERVE_UART3// using 3 +{ + NOP(); NOP(); NOP(); + if(L0_uart3_IntRI()) //濡傛灉鏄疷0鎺ユ敹涓柇 + { + L0_uart3_IntRIClear(); //娓呴櫎鎺ユ敹涓柇鏍囧織 + ts_uart[uNum3].t->reg = L0_uartN_get(uNum3); + ts_uart[uNum3].tp_handler(ts_uart[uNum3].t); + //L0_timer4_start(0); + } + if(L0_uart3_IntTI()) + { + if(L0_uart3_IntTI()) //濡傛灉鏄疷0鍙戦佷腑鏂 + { + L0_uart3_IntTIClear(); //娓呴櫎鍙戦佷腑鏂爣蹇 + if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now) + { + L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]); + ts_uart[uNum3].p->now ++; + } + else + { + ts_uart[uNum3].p->ok = D_ready; + ts_uart[uNum3].p->max = 0; + ts_uart[uNum3].p->now = 0;//鍙互鍙戦佷笅涓涓暟鎹 +#if (D_UART3_485_TYPE != TYPE_485_NONE) + D_UART3_485_RX() //鍒囨崲鍒版帴鏀剁姸鎬 +#endif + } + } + } + NOP(); NOP(); NOP(); +} + +void timer4_isrHanddle(void) D_SERVE_TIMER4 +{ + struct _tp_handler_x *p = &s_uart3_rec; + if((p->head == 1) && (p->num >= D_s_modbus_min)) + { + p->head = 0; + crc16_irq(p->crc,p->buf,p->num - 2); //鏍¢獙CRC + if(p->crc[0] == p->buf[p->num-2] && p->crc[1] == p->buf[p->num-1]) + { + if(p->ok == 0) + { + p->ok = 1; + } + } + LED0 ^= 1; + } + L0_timer4_stop(); +} + + diff --git a/source/msp/uart3.h b/source/msp/uart3.h new file mode 100644 index 0000000..a4e2ea8 --- /dev/null +++ b/source/msp/uart3.h @@ -0,0 +1,93 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +////////////////////////////////////////////////////////////////////////// +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_uart3_Init + uart3_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ + + +#ifndef _uart3_H +#define _uart3_H + +#include "../bsp/bsp_config.h" +#include "../tpc/tpc_modbus.h" +#include "uartN.h" + +#define uNum3 2 + +//#define S4SM0 BITN7 +#define D_uart3_ES_INT(x) (x) ? (BITN_1(IE2,ES3)) : (BITN_0(IE2,ES3)) +//#define D_uart3_ES_INT_CLOSE() BITN_0(IE2,ES3) +//#define D_uart3_ES_INT_OPEN() BITN_1(IE2,ES3) +#define L0_uart3_IntRI() (S3CON & S3RI)//BITN_G(SCON,U0RI) +#define L0_uart3_IntTI() (S3CON & S3TI)//BITN_G(SCON,U0TI) +#define L0_uart3_IntRIClear(); BITN_0(S3CON,S3RI) +#define L0_uart3_IntTIClear(); BITN_0(S3CON,S3TI) +#define L0_uart3_set(x) S3BUF = (x); +#define L0_uart3_get() (S3BUF) + + +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +void L0_uart3_buf_init(void); +void L0_uart3_sendArray(U8 * buf, U16 len); + +#define L0_uart3_uc(X) L0_uartN_uc(uNum3,X) +#define L0_uart3_us(X) L0_uartN_us(uNum3,X) +#define L0_uart3_ul(X) L0_uartN_ul(uNum3,X) +#define L0_uart3_0d0a() L0_uartN_0d0a(uNum3) +#define L0_uart3_uchex(X) L0_uartN_uchex(uNum3,X) +#define L0_uart3_ushex(X) L0_uartN_ushex(uNum3,X) +#define L0_uart3_ulhex(X) L0_uartN_ulhex(uNum3,X) +#define L0_uart3_sendstr(buf) L0_uartN_sendstr(uNum3,buf) +#define L1_uart3_uchexArray(buf) L1_uartN_uchexArray(uNum3,buf) + +extern TP_Handler_X s_uart3_rec; +extern TS_PH4_modbus s_uart3_ack; + +#endif //#ifndef _uart3_H + diff --git a/source/msp/uart4.C b/source/msp/uart4.C new file mode 100644 index 0000000..9184f55 --- /dev/null +++ b/source/msp/uart4.C @@ -0,0 +1,169 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +// 20160413 CC-ACC-VH02 +// 杩炴帴鑷 J22 RXD0 TXD0 +//P5_DIR &= ~BITN1; //p5.1杈撳嚭TXD +//P5_DIR |= BITN0; //p5.0杈撳叆RXD +//P5_SEL0 &= ~(BITN0 +BITN1); //璁剧疆P5.0 P5.1涓簎art4 RXD TXD +//P5_SEL1 |= BITN0 +BITN1; + +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_uart4_Init + uart4_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ +#include "uart4.h" + +//#define _USE_485 + +static volatile Ts_uart_send_buf idata ts_uart_send_shop; +//TP_Handler_X s_uart4_at_rec; +//TP_Handler_X s_uart4_tcp_rec; +TP_Handler_X s_uart4_rec; +TS_PH3_ccmodbus s_uart4_ack; + +//#define FOSC 11059200L //绯荤粺棰戠巼 +//#define BAUD4 115200 //涓插彛娉㈢壒鐜 +void L0_uart4_init(void)//115200bps@11.0592MHz +{ + #if(MainFre_11M == D_sys_MainFre) +#if 0 + S4CON = 0x50; //8浣嶅彲鍙樻尝鐗圭巼 + T4L = (65536 - (FOSC/4/BAUD4)); //璁剧疆娉㈢壒鐜囬噸瑁呭 + T4H = (65536 - (FOSC/4/BAUD4))>>8; + T4T3M |= 0x20; //瀹氭椂鍣4涓1T妯″紡 + T4T3M |= 0x80; //瀹氭椂鍣4寮濮嬭鏃 +#else + S4CON = 0x10; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + S4CON |= 0x40; //涓插彛4閫夋嫨瀹氭椂鍣4涓烘尝鐗圭巼鍙戠敓鍣 + T4T3M |= 0x20; //瀹氭椂鍣4鏃堕挓涓篎osc,鍗1T + T4L = 0xE8; //璁惧畾瀹氭椂鍒濆 + T4H = 0xFF; //璁惧畾瀹氭椂鍒濆 + T4T3M |= 0x80; //鍚姩瀹氭椂鍣4 +#endif + + +#elif (MainFre_22M == D_sys_MainFre) //115200bps@22.1184MHz + S4CON = 0x10; //8浣嶆暟鎹,鍙彉娉㈢壒鐜 + S4CON |= 0x40; //涓插彛4閫夋嫨瀹氭椂鍣4涓烘尝鐗圭巼鍙戠敓鍣 + T4T3M |= 0x20; //瀹氭椂鍣4鏃堕挓涓篎osc,鍗1T + T4L = 0xD0; //璁惧畾瀹氭椂鍒濆 + T4H = 0xFF; //璁惧畾瀹氭椂鍒濆 + T4T3M |= 0x80; //鍚姩瀹氭椂鍣4 +#endif +} + +void L0_uart4_buf_init(void) +{ + ts_uart[uNum4].p = &ts_uart_send_shop; + ts_uart[uNum4].p->now = 0; + ts_uart[uNum4].p->ok = D_ready; + ts_uart[uNum4].t = &s_uart4_rec; + ts_uart[uNum4].t->head_0 = D_CMD_Filter1_ff; + ts_uart[uNum4].t->head_1 = D_CMD_Filter2_fe; + ts_uart[uNum4].t->head = 0; + ts_uart[uNum4].t->ok = 0; + ts_uart[uNum4].tp_handler = L1_s2b_PH3; + ts_uart[uNum4].ack = (U8*)&s_uart4_ack; + + //s_uart4_tcp_rec.head_0 = D_CMD_Filter1_ff; + //s_uart4_tcp_rec.head_1 = D_CMD_Filter2_fe; + //s_uart4_tcp_rec.head = 0; + //s_uart4_tcp_rec.ok = 0; + L0_uart4_init(); + D_uart4_ES_INT(1); //鎵撳紑涓插彛涓柇 + +#if (D_UART4_485_TYPE != TYPE_485_NONE) + D_UART4_485_RX() //榛樿澶勪簬鎺ユ敹鐘舵 +#endif +} + +void L0_uart4_sendArray(U8 * buf, U16 len) +{ +#if (D_UART4_485_TYPE != TYPE_485_NONE) + D_UART4_485_TX() //鍒囨崲鍒拌緭鍑虹姸鎬 +#endif + L0_uartN_sendArray(uNum4,buf,len); +} + +/************************************************* +UART 涓柇 +*************************************************/ + +#define D_SERVE_uart4 interrupt 18 +void INTERRUPT_uart4(void) D_SERVE_uart4// using 2 +{ +#if 1 + //NOP(); NOP(); NOP(); + if(L0_uart4_IntRI()) //濡傛灉鏄疷0鎺ユ敹涓柇 + { + L0_uart4_IntRIClear(); //娓呴櫎鎺ユ敹涓柇鏍囧織 + ts_uart[uNum4].t->reg = L0_uartN_get(uNum4); + ts_uart[uNum4].tp_handler(ts_uart[uNum4].t); + } + if(L0_uart4_IntTI()) //濡傛灉鏄疷0鍙戦佷腑鏂 + { + L0_uart4_IntTIClear(); //娓呴櫎鍙戦佷腑鏂爣蹇 + if(ts_uart[uNum4].p->max != ts_uart[uNum4].p->now) + { + L0_uartN_set(uNum4,ts_uart[uNum4].p->p[ts_uart[uNum4].p->now]); + ts_uart[uNum4].p->now ++; + } + else + { + ts_uart[uNum4].p->ok = D_ready; + ts_uart[uNum4].p->max = 0; + ts_uart[uNum4].p->now = 0;//鍙互鍙戦佷笅涓涓暟鎹 +#if (D_UART4_485_TYPE != TYPE_485_NONE) + D_UART4_485_RX() //鍒囨崲鍒版帴鏀剁姸鎬 +#endif + + } + } + //NOP(); NOP(); NOP(); +#endif +} + + diff --git a/source/msp/uart4.h b/source/msp/uart4.h new file mode 100644 index 0000000..b70da6c --- /dev/null +++ b/source/msp/uart4.h @@ -0,0 +1,88 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +////////////////////////////////////////////////////////////////////////// +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_uart4_Init + uart4_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ + + +#ifndef _uart4_H +#define _uart4_H + +#include "../bsp/bsp_config.h" +#include "../tpc/tpc_ccmodbus.h" +#include "uartN.h" + +#define uNum4 3 + +#define D_uart4_ES_INT(x) (x) ? (BITN_1(IE2,ES4)) : (BITN_0(IE2,ES4)) +#define L0_uart4_IntRI() (S4CON & S4RI)//BITN_G(SCON,U0RI) +#define L0_uart4_IntTI() (S4CON & S4TI)//BITN_G(SCON,U0TI) +#define L0_uart4_IntRIClear(); BITN_0(S4CON,S4RI) +#define L0_uart4_IntTIClear(); BITN_0(S4CON,S4TI) + + +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +void L0_uart4_buf_init(void); +void L0_uart4_sendArray(U8 * buf, U16 len); + +#define L0_uart4_uc(X) L0_uartN_uc(uNum4,X) +#define L0_uart4_us(X) L0_uartN_us(uNum4,X) +#define L0_uart4_ul(X) L0_uartN_ul(uNum4,X) +#define L0_uart4_0d0a() L0_uartN_0d0a(0) +#define L0_uart4_uchex(X) L0_uartN_uchex(uNum4,X) +#define L0_uart4_ushex(X) L0_uartN_ushex(uNum4,X) +#define L0_uart4_ulhex(X) L0_uartN_ulhex(uNum4,X) +#define L0_uart4_sendstr(buf) L0_uartN_sendstr(uNum4,buf) +#define L1_uart4_uchexArray(buf) L1_uartN_uchexArray(uNum4,buf) + +extern TP_Handler_X s_uart4_rec; +extern TS_PH3_ccmodbus s_uart4_ack; + +#endif //#ifndef _uart4_H + diff --git a/source/msp/uart_x.c b/source/msp/uart_x.c new file mode 100644 index 0000000..3be3670 --- /dev/null +++ b/source/msp/uart_x.c @@ -0,0 +1,211 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2015, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file main.c +/// @brief main app +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// 淇璇存槑锛氭渶鍒濈増鏈 +/// Modified by: +/// Modified date: +/// Version: +/// Descriptions: +// 20160413 CC-ACC-VH02 +// 杩炴帴鑷 J22 RXD0 TXD0 +//P5_DIR &= ~BITN1; //p5.1杈撳嚭TXD +//P5_DIR |= BITN0; //p5.0杈撳叆RXD +//P5_SEL0 &= ~(BITN0 +BITN1); //璁剧疆P5.0 P5.1涓篣ART0 RXD TXD +//P5_SEL1 |= BITN0 +BITN1; + +/***************************************************************************** +update by cc @201700110 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/clib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/Uprotocol2app + 鍗忚鍒板簲鐢 + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/urec2protocol: 鎺ユ敹鍒扮殑鏁版嵁鏀惧叆鍒版寚鍚戠壒瀹氬崗璁殑缂撳瓨涓紝鍜屽崗璁殑鏍煎紡鏈夊叧 涓鑸垎涓 鏍囧ご寮忔垨鑰呮爣灏惧紡 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_uart_rec_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_uart_rec_ + void L1_uart_2buf(struct _s_uart_rec_ *p)涓茶鏁版嵁淇濆瓨鍒版寚鍚戠壒瀹氬崗璁殑缂撳啿涓 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 缂撳瓨鍙戦佷篃鏀惧湪閲岄潰 + L0_UART0_Init + UART0_IRQHandler + L0_Usend_uc------UserDef +----------------------------------------------------------------------------------------- +********************************************************************************/ +#include "uart_x.h" + +TS_uart_reg idata ts_uart[SERIAL_MAX_NUM] = {0}; + +void L0_uartN_set(U8 uartx,U8 x) /*reentrant*/ +{ + switch(uartx) + { + case 0:SBUF = (x);break; + case 1:S2BUF = (x);break; + case 2:S3BUF = (x);break; + case 3:S4BUF = (x);break; + default:break; + } +} + +U8 L0_uartN_get(U8 uartx) +{ + U8 x = 0; + switch(uartx) + { + case 0:x = SBUF; break; + case 1:x = S2BUF;break; + case 2:x = S3BUF;break; + case 3:x = S4BUF;break; + default:break; + } + return x; +} + +void L0_waitFree_uartN(U8 uartx) +{ + ts_uart[uartx].p->over = 0; + while(ts_uart[uartx].p->ok != D_ready) + { + #if 0 //鍙戦佹暟鎹壒鍒揩鏃讹紝鏌愪簺鎯呭喌涓嬩細瀵艰嚧鏁版嵁鍙戦佸嚭閿 + if(ts_uart[uartx].p->over ++ > 600000) + { + break; + } + #endif + } +} + +void L0_uartN_sendArray(U8 uartx,void *buf,U16 len) +{ + L0_waitFree_uartN(uartx); + ts_uart[uartx].p->ok = D_clear; + ts_uart[uartx].p->over = 0; + ts_uart[uartx].p->max = len; + ts_uart[uartx].p->now = 1; + if(len <= D_UART_send_buf_max) + { + //灏嗗弬鏁癰uf鎷疯礉鑷冲唴閮╞uf + for(ts_uart[uartx].p->num = 0;ts_uart[uartx].p->num < len;ts_uart[uartx].p->num ++) + { + ts_uart[uartx].p->buf[ts_uart[uartx].p->num] = ((U8*)buf)[ts_uart[uartx].p->num]; + } + ts_uart[uartx].p->p = ts_uart[uartx].p->buf; + } + else + { + //涓嶄娇鐢ㄥ唴閮╞uf,濡傛灉鍐嶅彂閫佸畬姣曚箣鍓,鍙傛暟buf琚洖鏀,鍙戦佷細鍑洪敊 + ts_uart[uartx].p->p = (U8 *)buf; + } + L0_uartN_set(uartx,ts_uart[uartx].p->p[0]); +} + +void L0_uartN_uc(U8 uartx,U8 ww) +{ + L0_uartN_sendArray(uartx,&ww,1); +} + +void L0_uartN_us(U8 uartx,vU16 ww) +{ + U_U16 uStemp; + uStemp.word = ww; + ts_uart[uartx].p->buf3[0] = uStemp.BYTE2.h; + ts_uart[uartx].p->buf3[1] = uStemp.BYTE2.l; + L0_uartN_sendArray(uartx,ts_uart[uartx].p->buf3,2); +} + +void L0_uartN_ul(U8 uartx,vU32 ww) +{ + U_U32 uStemp; + L0_waitFree_uartN(uartx); + uStemp.dWord = ww; + ts_uart[uartx].p->buf3[0] = uStemp.BYTE4.byte0; + ts_uart[uartx].p->buf3[1] = uStemp.BYTE4.byte1; + ts_uart[uartx].p->buf3[2] = uStemp.BYTE4.byte2; + ts_uart[uartx].p->buf3[3] = uStemp.BYTE4.byte3; + L0_uartN_sendArray(uartx,ts_uart[uartx].p->buf3,4); +} + +void L0_uartN_0d0a(U8 uartx) +{ + L0_waitFree_uartN(uartx); + ts_uart[uartx].p->buf3[0] = 0x0d; + ts_uart[uartx].p->buf3[1] = 0x0a; + L0_uartN_sendArray(uartx,ts_uart[uartx].p->buf3,2); +} + +void L0_uartN_uchex(U8 uartx,U8 ww) +{ + L0_waitFree_uartN(uartx); + ts_uart[uartx].p->buf3[0] = cguHex2Char[D_uc_high(ww)][1]; + ts_uart[uartx].p->buf3[1] = cguHex2Char[D_uc_low (ww)][1]; + L0_uartN_sendArray(uartx,ts_uart[uartx].p->buf3,2); +} + +void L0_uartN_ushex(U8 uartx,vU16 ww) +{ + U_F16 k; + L0_waitFree_uartN(uartx); + k.us = ww; + ts_uart[uartx].p->buf3[0] = cguHex2Char[D_uc_high(k.BYTE2.H)][1]; + ts_uart[uartx].p->buf3[1] = cguHex2Char[D_uc_low (k.BYTE2.H)][1]; + ts_uart[uartx].p->buf3[2] = cguHex2Char[D_uc_high(k.BYTE2.L)][1]; + ts_uart[uartx].p->buf3[3] = cguHex2Char[D_uc_low (k.BYTE2.L)][1]; + L0_uartN_sendArray(uartx,ts_uart[uartx].p->buf3,4); +} + +void L0_uartN_ulhex(U8 uartx,U32 ww) +{ + U_U32 k; + L0_waitFree_uartN(uartx); + k.dWord = ww; + ts_uart[uartx].p->buf3[0] = cguHex2Char[D_uc_high(k.BYTE4.byte0)][1]; + ts_uart[uartx].p->buf3[1] = cguHex2Char[D_uc_low (k.BYTE4.byte0)][1]; + ts_uart[uartx].p->buf3[2] = cguHex2Char[D_uc_high(k.BYTE4.byte1)][1]; + ts_uart[uartx].p->buf3[3] = cguHex2Char[D_uc_low (k.BYTE4.byte1)][1]; + ts_uart[uartx].p->buf3[4] = cguHex2Char[D_uc_high(k.BYTE4.byte2)][1]; + ts_uart[uartx].p->buf3[5] = cguHex2Char[D_uc_low (k.BYTE4.byte2)][1]; + ts_uart[uartx].p->buf3[6] = cguHex2Char[D_uc_high(k.BYTE4.byte3)][1]; + ts_uart[uartx].p->buf3[7] = cguHex2Char[D_uc_low (k.BYTE4.byte3)][1]; + L0_uartN_sendArray(uartx,ts_uart[uartx].p->buf3,8); +} + +void L0_uartN_sendstr(U8 uartx,U8 *str) +{ + L0_uartN_sendArray(uartx,str,Lc_strlen(str)); +} + +void L0_uartN_uchexArray(U8 uartx,vU8 *buf,U16 n) +{ + int i; + for(i=0;i>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +//L1_uart_2strbuf(&s_uart0_rec);s_uart0_rec.ok = 2 +/// 鎺ユ敹浠d oa涓虹粨鏉熺殑鏍囧噯鐨刟ssci鐮佺殑鍗忚 绫讳技 send xx (鍥炶溅鎹㈣)娴嬭瘯鏃舵敞鎰忎互鍥炶溅鎹㈣ +/// 涓虹粨鏉熸爣蹇楋紝涔熷氨鏄彂閫佺殑鏁版嵁鍚庨潰 蹇呴』鏈夊洖杞︽崲琛 :0x0d 0x0a + + +//瀵逛簬杩炵画鐨勫鏉″崗璁紝姣斿锛歛bcdefg\r\n12345\r\n锛屽鏋滃墠涓鏉″鐞嗕笉鍙婃椂锛屽彲鑳戒細琚悗涓鏉¤鐩 +void L1_s2b_0d0a(struct _tp_handler_x *p) //reentrant +{ + if(p->head == 0) + { + p->head = 1; + p->num = 0; + } + + if(p->num >= D_tp_handle_x_len) + { + p->num = 0; + } + p->cashe[1] = p->cashe[0]; + p->cashe[0] = p->reg;// + + p->buf[++p->num] = p->cashe[0]; + //p->buf[++p->num] = p->cashe[0]; + + if ((p->num > 2) && (p->cashe[0] == 0x0a) && (p->cashe[1] == 0x0d))// 0d0a + { + if(1 != p->ok) + { + p->buf[0] = p->num - 2; //鍘绘帀0d0a + if(p->sp2 != NULL) //澶囦唤缂撳啿鍖轰笉涓簄ull + { + //byte_copy_uc(p->buf + 1,p->__buf,p->num-2); //缁忚繃璋冭瘯,姝ゅ涓嶈璋冪敤澶栭儴鍑芥暟锛屽叆鏍堝嚭鏍堜細澧炲姞鍑洪敊椋庨櫓 + for(p->i=0;p->ibuf[0]+1;p->i++) + { + p->sp2[p->i] = p->buf[p->i]; + } + } + p->ok = 1;//鏀跺埌 鍛戒护缁撴潫,蹇呴』鏈変釜鍦版柟娓0锛屽惁鍒欐棤娉曞啀娆℃帴鍙楁姤鏂 + } + p->head = 0; + } +} + diff --git a/source/tpc/0d0a.h b/source/tpc/0d0a.h new file mode 100644 index 0000000..ddf5a39 --- /dev/null +++ b/source/tpc/0d0a.h @@ -0,0 +1,33 @@ +#ifndef TPC_0D0A_H +#define TPC_0D0A_H + +#include "tpc_x.h" + +///----------------------------------------------------------------------------------------- +//#define D_s_SSTR_0D0A_len 64 //str绫荤殑鍗忚闇瑕侀暱搴﹀ぇ涓浜涳紝瀹规槗bug鐨勫湴鏂癸紝闄愬埗涓烘帴鏀64bytes鐨勬暟鎹 +#if 0 +#define FLAG_NONE 0 +#define FLAG_DISCARD 1 +#define FLAG_CCID 2 +#define FLAG_CIP 3 +typedef struct _s_PC1_0D0A_ +{//8byte + vU8 reg; + // vU8 sub_num; //鎺ユ敹鍒扮殑鏁扮洰娉ㄦ剰鏁版嵁闀垮害鐨勮寖鍥 + vU8 head; //鎺ユ敹鏍囧織澶存爣蹇 + + vU8 cashe[4]; + //vU8 filter1; + //vU8 filter2; + vU8 num; //鎺ユ敹鍒扮殑鏁版嵁鐨勮鏁帮紝 闅忕潃鏁版嵁鎺ユ敹鑰屽彉鍖栨敞鎰忔暟鎹暱搴︾殑鑼冨洿 + + vU8 ok; //鎺ユ敹鍗忚ok鏍囧織 + vU8 max; //鎺ユ敹鍒扮殑鏁扮洰鐨勬渶澶у + vU8 __buf[D_s_SSTR_0D0A_len+1];//buffer + vU8 buf[D_s_SSTR_0D0A_len+1];//array鐨勭涓浣嶆槸 闀垮害 //鍗忚缂撳啿 + // U8 pro[16]; ///瑙f瀽鍗忚鐢 +}TS_Handle_0d0a; +#endif +extern void L1_s2b_0d0a(struct _tp_handler_x *p); //reentrant; + +#endif diff --git a/source/tpc/ccmodbus.c b/source/tpc/ccmodbus.c new file mode 100644 index 0000000..b847efa --- /dev/null +++ b/source/tpc/ccmodbus.c @@ -0,0 +1,182 @@ +锘 +/***************************************************************************** +update by cc @201501101001 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +uartcom/uartlib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/uartcom0 + 鍜寀art鐩稿叧鐨勯氳鍗忚 com + n + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/uprotocol: 涓昏鏄负 uartcom + n鏈嶅姟鐨 椹卞姩灞傚埌搴旂敤灞傜紦瀛樼殑杩囧害 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_protocol_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_protocol_ + void L1_uart_2buf(struct _s_protocol_ *p)涓茶鏁版嵁淇濆瓨鍒扮紦鍐蹭腑 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 + L0_UART0_Init + UART0_IRQHandler + L0_Usend_uc----------s_at0 +----------------------------------------------------------------------------------------- +********************************************************************************/ + +#include "ccmodbus.h" +#include "../clib/clib.h" + +#if 0 +U8 L3_pack_ccmodbus_03(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U16 num) +{ + U8 bufsize = 4; + pmodbus->slaver = slaverId; + pmodbus->oper = MODBUS_OPER_READ; + pmodbus->buf[0] = reg >> 8 & 0xFF; + pmodbus->buf[1] = reg >> 0 & 0xFF; + pmodbus->buf[2] = num >> 8 * 0xFF; + pmodbus->buf[3] = num >> 0 & 0xFF; + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize); + pmodbus->buf[bufsize] = pmodbus->crc[0]; + pmodbus->buf[bufsize + 1] = pmodbus->crc[1]; + + return bufsize + 2 + 2; +} + +U8 L3_pack_ccmodbus_06(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U8 *buf) +{ + U8 bufsize = 4; + pmodbus->slaver = slaverId; + pmodbus->oper = MODBUS_OPER_WRITE; + pmodbus->buf[0] = reg >> 8 & 0xFF; + pmodbus->buf[1] = reg >> 0 & 0xFF; + pmodbus->buf[2] = buf[0]; + pmodbus->buf[3] = buf[1]; + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize); + pmodbus->buf[bufsize] = pmodbus->crc[0]; + pmodbus->buf[bufsize + 1] = pmodbus->crc[1]; + + return bufsize + 2 + 2; +} + +U8 L3_pack_ccmodbus_10(TS_PH3_ccmodbus *pmodbus ,U8 slaverId, U16 reg, U16 num, U8 bytes, U8 *buf) +{ + U8 bufsize = 5,i = 0; + pmodbus->slaver = slaverId; + pmodbus->oper = MODBUS_OPER_WRITE_M; + pmodbus->buf[0] = reg >> 8 & 0xFF; + pmodbus->buf[1] = reg >> 0 & 0xFF; + pmodbus->buf[2] = num >> 8 * 0xFF; + pmodbus->buf[3] = num >> 0 & 0xFF; + pmodbus->buf[4] = bytes; + + for(i=0;ibuf[5+i] = buf[i]; + } + crc16(pmodbus->crc,&pmodbus->slaver,2 + bufsize + bytes); + pmodbus->buf[bufsize + bytes] = pmodbus->crc[0]; + pmodbus->buf[bufsize + bytes + 1] = pmodbus->crc[1]; + + return bufsize + bytes + 2 + 2; +} +#endif + +U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, MD_SLAVER_INFO *slaver_info) +{ + U8 pkglen = 0; + pccmodbus->filter1 = D_CMD_Filter1_ff; + pccmodbus->filter2 = D_CMD_Filter2_fe; + pccmodbus->num = L3_pack_modbus((TS_PH4_modbus*)&pccmodbus->slaver, slaver_info); +#if 0 + switch(slaver_info->oper) + { + case MODBUS_OPER_READ: + pkglen = L3_pack_ccmodbus_03(pccmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->regnum); + break; + case MODBUS_OPER_WRITE: + pkglen = L3_pack_ccmodbus_06(pccmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->buf); + break; + case MODBUS_OPER_WRITE_M: + pkglen = L3_pack_ccmodbus_10(pccmodbus,slaver_info->slaver,slaver_info->reg,slaver_info->regnum,slaver_info->bytes,slaver_info->buf); + break; + default: + break; + } + pccmodbus->num = pkglen; +#endif + return pccmodbus->num + 3; +} + +U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck) +{ + U16 pkglen = L3_modbus_slaver_ack((TS_PH4_modbus*)&pccmodbus->slaver, (TS_PH4_modbus*)&pModbusAck->slaver); + pModbusAck->filter1 = D_CMD_Filter1_ff; + pModbusAck->filter2 = D_CMD_Filter2_fe; + pModbusAck->num = pkglen; + return pkglen + 3; +} + +void L3_ccmodbus_master_handler(TS_PH3_ccmodbus *pmodbus,MD_SLAVER_INFO *p_slaver_info) +{ + L3_modbus_master_handler((TS_PH4_modbus*)pmodbus->slaver,p_slaver_info); +} + +///FF FE 08 52 16 11 22 33 44 F5 9F 鍙戦佷簡涓涓猰odbus鍗忚鍖(8涓暟鎹52 16 11 22 33 44 F5 9F ) +/// 0 1 2 3 4 5 6 7 8 9 10 +/// 鍗忚琛ㄨ揪鐨勬剰鎬濅负鍦板潃涓0x52鐨勪粠鏈, 鍔熻兘鐮16 鏁版嵁涓11 22 33 44,鏍¢獙鐮 F5 9F +void L1_s2b_PH3(struct _tp_handler_x *p)// reentrant +{ + p->cashe[1] = p->cashe[0]; + p->cashe[0] = p->reg;// + + if (0 == p->head) + { + if ((p->cashe[1] == p->head_0)&&(p->cashe[0] == p->head_1)) + { + p->head = 1; + p->max = D_tp_handle_x_len; + p->sp = p->buf; + p->num = 0; + p->sp[p->num++] = p->head_0; + p->sp[p->num++] = p->head_1; + } + } + else + { + p->sp[p->num++] = p->cashe[0]; + if(p->num == 3)//鏁伴噺 绗3涓暟鎹 + { + p->max = p->cashe[0] + 3; + if((p->max > D_tp_handle_x_len) || (p->max < D_s_ccmodbus_min)) + { + p->head = 0; + return; //error 瓒呰繃鏈澶ч暱搴 + } + } + if(p->num >= p->max) + { + crc16(p->crc,p->buf + 3,p->num - 3 - 2); + if(p->crc[0] == p->buf[p->num-2] && p->crc[1] == p->buf[p->num-1]) + { + if (p->ok != 1) + { + p->ok = 1;//鏀跺埌 鍛戒护缁撴潫,蹇呴』鏈変釜鍦版柟娓0锛屽惁鍒欐棤娉曞啀娆℃帴鍙楁姤鏂 + } + } + p->head = 0; //鏀惧湪if (p->ok != 1) 澶 + } + } +} + + + +/****************************************************************************** +** End Of File +******************************************************************************/ diff --git a/source/tpc/ccmodbus.h b/source/tpc/ccmodbus.h new file mode 100644 index 0000000..80f9eff --- /dev/null +++ b/source/tpc/ccmodbus.h @@ -0,0 +1,98 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2018, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file tpc_fsk.c +/// @brief transaction protocol control of fsk +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// @version 1.2 CCsens technology +/// @author CC +/// @date 20180308 +/// @info 鏁寸悊 + +// +////////////////////////////////////////////////////////////////////////// + + +/***************************************************************************** +@version 1.2 +update by cc @201501101001 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +clib/uartlib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鎺ユ敹鍚勭被鍗忚鐨勫鐞嗗嚱鏁 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- + + +----------------------------------------------------------------------------------------- + + +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 + L0_UART0_Init + UART0_IRQHandler + L0_Usend_uc----------s_at0 +----------------------------------------------------------------------------------------- +********************************************************************************/ + + + +#ifndef __TPC_CCMODBUS_H_ +#define __TPC_CCMODBUS_H_ + +#include "tpc_x.h" +#include "tpc_modbus.h" +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +///鍗忚绫诲瀷: 鍗佸叚杩涘埗鍗忚3->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +/// 鍙戦佺殑鏁版嵁涓烘湁ff fe寮澶寸殑鍗佸叚杩涘埗鐨勯暱鍗忚锛屽唴鍖呭惈鏍囧噯鐨刴odbus鍗忚 +///FF FE 08 52 16 11 22 33 44 F5 9F 鍙戦佷簡涓涓猰odbus鍗忚鍖(8涓暟鎹52 16 11 22 33 44 F5 9F ) +/// 鍗忚琛ㄨ揪鐨勬剰鎬濅负鍦板潃涓0x52鐨勪粠鏈, 鍔熻兘鐮16 鏁版嵁涓11 22 33 44,鏍¢獙鐮 F5 9F +/// 鏍¢獙鐮佺殑鑼冨洿涓 + +//#define D_s_PH3_ccmodbus_max 128 +#define D_s_ccmodbus_min (D_s_modbus_min + 3) + +typedef struct +{//8byte + vU8 filter1; + vU8 filter2; + vU8 num; //鎺ユ敹鍒扮殑鏁版嵁鐨勮鏁帮紝 闅忕潃鏁版嵁鎺ユ敹鑰屽彉鍖栨敞鎰忔暟鎹暱搴︾殑鑼冨洿 + vU8 slaver; //鍙戦佹柟鐨勫湴鍧鎴栧懡浠 + vU8 oper; //鍛戒护 + vU8 buf[D_tp_handle_x_len + 8];//D_s_PH3_ccmodbus_max - 3锛岄暱涓鐐归槻姝㈣秺鐣 + vU8 crc[2]; //crc16 +}TS_PH3_ccmodbus; + +#if 0 +typedef struct +{ + U16 slaver; + U16 oper; + U16 reg; + U16 regnum; + U16 bytes; + U8 *buf; + U16 mask; +}CCMD_SLAVER_INFO; +#endif + +extern U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, MD_SLAVER_INFO *slaver_info); +extern U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck); +extern void L3_ccmodbus_master_handler(TS_PH3_ccmodbus *pmodbus,MD_SLAVER_INFO *p_slaver_info); +extern void L1_s2b_PH3(struct _tp_handler_x *p);// reentrant; + +#endif /* end __TPC_CCMODBUS_H_ */ + diff --git a/source/tpc/debug.c b/source/tpc/debug.c new file mode 100644 index 0000000..59a0e4a --- /dev/null +++ b/source/tpc/debug.c @@ -0,0 +1,88 @@ +锘 +/***************************************************************************** +update by cc @201501101001 +閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 +涓渶瑕佸钩琛$殑浜嬫儏. + +uartcom/uartlib.c: +鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 +鏀剧疆涓茶妯″紡(涓插彛绛夊叾浠栭氳鎬荤嚎绫荤殑杈撳嚭)杈撳嚭鐨勫嚱鏁, +涓浜涜鐩栨ā寮忚緭鍑虹殑(lcd绛夊浐灞忚緭鍑虹殑)鐨勪篃鍙娇鐢 + void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) +----------------------------------------------------------------------------------------- +uartcom/uartcom0 + 鍜寀art鐩稿叧鐨勯氳鍗忚 com + n + 涓轰簡閫傚簲涓嶅悓鐨勯氳鍗忚闇瑕佷笉鍚岀殑uart鍙f潵瀵瑰簲 鍜屽簲鐢ㄧ浉鍏 + +typedef struct _ts_lcm_pro_; 搴旂敤鍗忚鍖呯殑瀹氫箟? LCM鐨勫崗璁------------ + L3_UARTcom0_exp_protocol 瑙f瀽搴旂敤鍗忚 +----------------------------------------------------------------------------------------- +uartcom/uprotocol: 涓昏鏄负 uartcom + n鏈嶅姟鐨 椹卞姩灞傚埌搴旂敤灞傜紦瀛樼殑杩囧害 +鍏敤鐨勪覆鍙i氳瀹氫箟 + struct _s_protocol_ 鐨勫叕鍏卞崗璁寘(鍏抽敭鐨勭粨鏋勪綋)鐨勫0鏄------struct _s_protocol_ + void L1_uart_2buf(struct _s_protocol_ *p)涓茶鏁版嵁淇濆瓨鍒扮紦鍐蹭腑 +-------------------------------------------------------------------------------------------- +msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 + L0_UART0_Init + UART0_IRQHandler + L0_Usend_uc----------s_at0 +----------------------------------------------------------------------------------------- +********************************************************************************/ + +#include "debug.h" +#include "../clib/clib.h" + +//NUM: 0 1 2 3 4 +// Fx R1 R2 R3 ocr +// F+浠庢満 R1 R2 R3 鏍¢獙 +//鐩稿叧鍔熻兘绉诲姩鍒皌pc_fx.c +/// 瀹炶返涓彂鐜 濡傛灉鏀跺埌澶氫釜浠0d0a缁撴潫鐨勭煭鍗忚鏃,濡傛灉 +/// 鍗忚涔嬮棿闂撮殧鏃堕棿澶煭,ok澶勭悊涓嶅強鏃 浼氬嚭鐜颁涪澶卞崗璁殑 +/// 鐨勬儏鍐,鎵浠 瀵逛簬鐭殏鐨勫涓崗璁 搴旇鏈変竴瀹氬閲忕殑缂撳啿 +/// 淇濈暀 ,鍚屾椂 澶勭悊瀹屽崗璁悗,搴旇娓呴櫎鎺ユ敹缂撳啿,鍚﹀垯缂撳啿 +/// 浼氬湪鑷韩婊′簡鍚庤嚜鍔ㄦ竻闄 +//_s_HRTU_P_rf_ +/// _s_HRTU_Pfx_ +/// fx 11 22 33 oc -- oc = 11+ 22+33 +//buf 0 1 2 3 [4] +//fd 01 02 03 06 fd涓哄ご 010203涓烘暟鎹 06涓烘暟鎹牎楠屽拰(01+02+03) + +//瀵逛簬杩炵画鐨勫鏉″崗璁紝濡傛灉鍓嶄竴鏉″鐞嗕笉鍙婃椂锛屽彲鑳戒細琚悗涓鏉¤鐩 +void L1_s2b_PH1 (struct _tp_handler_x *p) //reentrant +{ + if (0 == p->head) + { + if (D_HETU_FX_fi == (p->reg & p->head_0)) + { + p->head = 1; + p->num = 1; + p->buf[0] = p->reg; + //p->ok = 1; + } + } + else + { + p->buf[p->num++] = p->reg; + if(p->num >= D_HETU_FX_buf_max) // [D_HETU_FX_buf_max == 5] + { + p->ocr = p->buf[1]; + p->ocr += p->buf[2]; + p->ocr += p->buf[3]; + if(p->ocr == p->buf[D_HETU_FX_buf_max-1]) + { + if (p->ok != 1) + { + p->ok = 1;//鏀跺埌 鍛戒护缁撴潫,蹇呴』鏈変釜鍦版柟娓0锛屽惁鍒欐棤娉曞啀娆℃帴鍙楁姤鏂 + } + } + p->head = 0; //鏀惧湪if (p->ok != 1) 澶 + } + } +} + + + +/****************************************************************************** +** End Of File +******************************************************************************/ + diff --git a/source/tpc/tpc_modbus.h b/source/tpc/debug.h similarity index 65% rename from source/tpc/tpc_modbus.h rename to source/tpc/debug.h index 37605e9..88d7231 100644 --- a/source/tpc/tpc_modbus.h +++ b/source/tpc/debug.h @@ -22,33 +22,27 @@ ////////////////////////////////////////////////////////////////////////// -#ifndef __TPC_MODBUS_H_ -#define __TPC_MODBUS_H_ - -#include "../clib/Type.h" -#include "../bsp/bsp_config.h" -#include "../app/common.h" +#ifndef __TPC_DEBUG_H_ +#define __TPC_DEBUG_H_ +#include "tpc_x.h" //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - +//瀹氶暱鍗忚锛氶暱搴﹀浐瀹氫负5涓瓧鑺 +//eg: F1 01 02 03 06 typedef struct -{ - U8 reg; - U8 max; //鎺ユ敹鍒扮殑鏁扮洰鐨勬渶澶у - U8 slaver; - vU8 head; //鎺ユ敹鏍囧織澶存爣蹇 - vU8 ok; //鎺ユ敹鍗忚ok鏍囧織 - vU8 num; - vU8 error; //閿欒 - vU8 *sp; - U8 buf[D_s_PH4_modbus_max + 8]; - vU8 crc[2]; -}TS_Handle_PH4; - -extern void L1_s2b_PH4_init(TS_Handle_PH4 *p,U8 slaver); -extern void L1_s2b_PH4(TS_Handle_PH4 *p); - -#endif /* end __TPC_UART_H_ */ +{//8byte + vU8 filter; + vU8 R1; + vU8 R2; + vU8 R3; + vU8 ocr; +}TS_P_debug; + +#define D_HETU_FX_buf_max 5 //瀹氶暱鍗忚 闀垮害涓5 + +extern void L1_s2b_PH1 (struct _tp_handler_x *p);// reentrant; + +#endif /* end __TPC_DEBUG_H_ */ /***************************************************************************** ** End Of File ******************************************************************************/ diff --git a/source/tpc/tpc_modbus.c b/source/tpc/modbus.c similarity index 81% rename from source/tpc/tpc_modbus.c rename to source/tpc/modbus.c index 54b7561..f858244 100644 --- a/source/tpc/tpc_modbus.c +++ b/source/tpc/modbus.c @@ -2,7 +2,7 @@ /***************************************************************************** update by cc @201501101001 閽堝澶氫覆鍙 鍜 鍗曚竴涓插彛 鏈夊尯鍒 姣忎釜涓插彛鏄嫭绔嬬殑杩樻槸鍒嗗紑鐨勬湁璁茬┒ 绋嬪簭鏄鏉傜殑杩樻槸杞欢搴旂敤绠鍗曟槸 -涓渶瑕佸钩琛$殑浜嬫儏. +涓渶瑕佸钩琛$殑浜嬫儏.d uartcom/uartlib.c: 鍏敤鐨勫嚱鏁 鍜岀‖浠舵棤鍏 @@ -29,31 +29,23 @@ msp/uartx.c 搴曞眰浠g爜 鍜宑pu鐩稿叧 ----------------------------------------------------------------------------------------- ********************************************************************************/ -#include "tpc_modbus.h" +#include "modbus.h" +#include "../bsp/bsp_config.h" +#include "../ctask/tick.h" +#include "../clib/clib.h" -void L1_s2b_PH4_init(TS_Handle_PH4 *p,U8 slaver) -{ - p->max = 0; - p->ok = 0; - p->head = 0; - p->num = 0; - p->slaver = slaver; - p->error = 0; -} - -void L1_s2b_PH4(TS_Handle_PH4 *p) +//MODBUS鍗忚瑙f瀽鍑芥暟 +//瓒呭嚭D_tp_handle_x_len锛屼笉缁х画淇濆瓨鏁版嵁 +void L1_s2b_PH4(struct _tp_handler_x *p) { + //p->modbusstmp = D_sys_now; if(p->head == 0) { - if(p->reg == p->slaver) - { - p->head = 1; - p->error = 0; - p->max = D_s_PH4_modbus_max; - p->sp = p->buf; - p->num = 0; - p->sp[p->num++] = p->reg; - } + p->head = 1; + p->max = D_TPC_HANDLER_X_LEN; + p->sp = p->buf; + p->num = 0; + p->sp[p->num++] = p->reg; } else { @@ -61,16 +53,9 @@ void L1_s2b_PH4(TS_Handle_PH4 *p) { p->sp[p->num++] = p->reg; } - else - { - //P10 ^= 1; - p->error = 1; - } } } - - /****************************************************************************** ** End Of File ******************************************************************************/ diff --git a/source/tpc/modbus.h b/source/tpc/modbus.h new file mode 100644 index 0000000..491bf66 --- /dev/null +++ b/source/tpc/modbus.h @@ -0,0 +1,114 @@ +////////////////////////////////////////////////////////////////////////// +/// COPYRIGHT NOTICE +/// Copyright (c) 2018, 浼犳帶绉戞妧 +/// All rights reserved. +/// +/// @file tpc_fsk.c +/// @brief transaction protocol control of fsk +/// +///锛堟湰鏂囦欢瀹炵幇鐨勫姛鑳界殑璇﹁堪锛 +/// +/// @version 1.1 CCsens technology +/// @author CC +/// @date 20150102 +/// +/// +/// @version 1.2 CCsens technology +/// @author CC +/// @date 20180308 +/// @info 鏁寸悊 + +// +////////////////////////////////////////////////////////////////////////// + + +#ifndef __TPC_MODBUS_H_ +#define __TPC_MODBUS_H_ + +#include "tpc_x.h" +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +/** + * 鐢ㄦ埛鍗忚 + */ +enum MODBUS_OPER +{ + MODBUS_OPER_READ = 0x03, + MODBUS_OPER_READCONFIG = 0x04, + MODBUS_OPER_WRITE = 0x06, + MODBUS_OPER_WRITE_M = 0x10, + MODBUS_OPER_ERR = 0x8F, +}; + +//鍗忚绫诲瀷: MODBUS RTU妯″紡 +//#define D_s_PH4_modbus_max (128) +//#define D_s_PH4_modbus_max (64) +#define D_s_modbus_min 4 //modbus鍗忚鐨勬渶灏忛暱搴 + +typedef struct ts_ph4_modbus +{ + U8 slaver; //浠庢満鍦板潃 + U8 oper; //鍔熻兘鐮 + U8 buf[D_TPC_HANDLER_X_LEN + 8]; + U8 crc[2]; +}TS_PH4_modbus; + +typedef struct s_modbus_03_ack +{ + U8 bytes; + U8 buf[D_TPC_HANDLER_X_LEN-1]; +}Modbus03Ack; + +typedef struct s_modbus_06_ack +{ + U16 reg; + U16 val; +}Modbus06Ack; + +typedef struct s_modbus_10_ack +{ + U16 reg; + U16 num; +}Modbus10Ack; + +typedef struct +{ + U16 slaver; + U16 oper; + U16 reg; + U16 regnum; + U16 bytes; + U8 *buf; + U16 mask; +}MD_SLAVER_INFO; + +#if 0 +typedef struct +{ + U8 reg; + U8 slaver; //瀵逛簬涓昏澶囷紝slaver浠h〃褰撳墠杞鐨勫寘鐨刬d锛屼富璁惧姣忔杞鏃讹紝鎬绘槸搴旇灏唖laver璁剧疆涓鸿疆璇㈠埌鐨勪粠璁惧id锛涘浜庝粠璁惧锛宻laver鎬绘槸绛変簬slaverId + U8 max; //鎺ユ敹鍒扮殑鏁扮洰鐨勬渶澶у + vU8 head; //鎺ユ敹鏍囧織澶存爣蹇 + vU8 ok; //鎺ユ敹鍗忚ok鏍囧織 + vU8 num; + vU8 *sp; + U8 buf[D_s_PH4_modbus_max + 8]; + vU8 crc[2]; + vU32 modbusstmp; +}TS_Handle_PH4; +#endif +extern U8 L3_pack_modbus(TS_PH4_modbus *pmodbus, MD_SLAVER_INFO *slaver_info); +//extern U8 L3_pack_modbusack(TS_PH4_modbus *pmodbus ,U8 slaver, U8 oper, U8 bufsize); +extern U16 L3_modbus_slaver_ack(TS_PH4_modbus *pmodbus,TS_PH4_modbus *pModbusAck); +extern void L3_modbus_master_handler(TS_PH4_modbus *pmodbus,MD_SLAVER_INFO *p_slaver_info); +extern void L1_s2b_PH4(struct _tp_handler_x *p); +extern void L1_modbus_split(struct _tp_handler_x *p); + + +#endif /* end __TPC_UART_H_ */ +/***************************************************************************** +** End Of File +******************************************************************************/ + + + diff --git a/source/tpc/tpc_uart.c b/source/tpc/tpc_uart.c deleted file mode 100644 index 24ea373..0000000 --- a/source/tpc/tpc_uart.c +++ /dev/null @@ -1,191 +0,0 @@ - -/***************************************************************************** -update by cc @201501101001 -针对多串口 和 单一串口 有区别 每个串口是独立的还是分开的有讲究 程序是复杂的还是软件应用简单是 -个需要平衡的事情. - -uartcom/uartlib.c: -公用的函数 和硬件无关 -放置串行模式(串口等其他通讯总线类的输出)输出的函数, -一些覆盖模式输出的(lcd等固屏输出的)的也可使用 - void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) ------------------------------------------------------------------------------------------ -uartcom/uartcom0 - 和uart相关的通讯协议 com + n - 为了适应不同的通讯协议需要不同的uart口来对应 和应用相关 - -typedef struct _ts_lcm_pro_; 应用协议包的定义? LCM的协议------------ - L3_UARTcom0_exp_protocol 解析应用协议 ------------------------------------------------------------------------------------------ -uartcom/uprotocol: 主要是为 uartcom + n服务的 驱动层到应用层缓存的过度 -公用的串口通讯定义 - struct _s_protocol_ 的公共协议包(关键的结构体)的声明------struct _s_protocol_ - void L1_uart_2buf(struct _s_protocol_ *p)串行数据保存到缓冲中 --------------------------------------------------------------------------------------------- -msp/uartx.c 底层代码 和cpu相关 - L0_UART0_Init - UART0_IRQHandler - L0_Usend_uc----------s_at0 ------------------------------------------------------------------------------------------ -********************************************************************************/ - -#include "tpc_uart.h" - - -//NUM: 0 1 2 3 4 -// Fx R1 R2 R3 ocr -// F+从机 R1 R2 R3 校验 - - - - -/// 实践中发现 如果收到多个以0d0a结束的短协议时,如果 -/// 协议之间间隔时间太短,ok处理不及时 会出现丢失协议的 -/// 的情况,所以 对于短暂的多个协议 应该有一定容量的缓冲 -/// 保留 ,同时 处理完协议后,应该清除接收缓冲,否则缓冲 -/// 会在自身满了后自动清除 -//_s_HRTU_P_rf_ -/// _s_HRTU_Pfx_ -/// fx 11 22 33 oc -- oc = 11+ 22+33 -//buf 0 1 2 3 [4] -// -//// protocol hex 1 serial to buff -#ifdef D_use_uart_rx -void L1_s2b_PH1 (TS_Handle_PH1 *p)// reentrant -{ - if (0 == p->head) - { - if (D_HETU_FX_fi == (p->reg&D_HETU_FX_H4)) - {//p->ok = 1;p->head = 0; - p->head = 1; - p->num = 0; - //p->ocx = 0; - p->buf[p->num]=p->reg; - } - }else - { - p->num ++; - p->buf[p->num] = p->reg; - - if(p->num >= D_HETU_FX_buf_max) // [4] - { - ///p->ocr = p->buf[1]; p->ocr += p->buf[2];p->ocr += p->buf[3]; - ///if(p->ocr == p->buf[D_HETU_FX_buf_max]) - { - // if (p->ok != 1) - { - // D_led_D2_ON(); - p->ok = 1;//收到 命令结束,必须有个地方清0,否则无法再次接受报文 - // D_led_D2_OFF(); - } - } - p->num = 0; //放在if (p->ok != 1) 外 - p->head = 0; //放在if (p->ok != 1) 外 - //p->max = 0; - } - } -} -#endif - -////485 -//// 带地址判定的 -void L1_s2b_PH1A (TS_Handle_PH1A *p)// reentrant -{ - if (0 == p->head) - { - if (D_HETU_FXA == p->reg) - {//p->ok = 1;p->head = 0; - p->head = 1; - p->num = 0; - //p->ocx = 0; - p->buf[p->num]=p->reg; - } - }else - { - p->num ++; - p->buf[p->num] = p->reg; - if(p->num >= D_HETU_FXA_buf_max - 1) // [4] - { - ///p->ocr = p->buf[1]; p->ocr += p->buf[2];p->ocr += p->buf[3]; - ///if(p->ocr == p->buf[D_HETU_FX_buf_max]) - { - //if (p->add == p->buf[1])///地址不匹配 - { - // D_led_D2_ON(); - p->ok = 1;//收到 命令结束,必须有个地方清0,否则无法再次接受报文 - // D_led_D2_OFF(); - } - // p->ok = 1; - } - p->num = 0; //放在if (p->ok != 1) 外 - p->head = 0; //放在if (p->ok != 1) 外 - //p->max = 0; - } - } -} - - -///FF FE 08 52 16 11 22 33 44 F5 9F 发送了一个modbus协议包(8个数据52 16 11 22 33 44 F5 9F ) -/// 1 2 3 4 5 6 7 8 -/// 0 1 2 3 4 5 6 7 8 9 10 -/// 协议表达的意思为地址为0x52的从机, 功能码16 数据为11 22 33 44,校验码 F5 9F - -void L1_s2b_PH3_init(TS_Handle_PH3 *p) -{ - p->max = 0; - p->ok = 0; - p->num = 0; - p->head = 0; - p->head_0 = TS_PH3_FILTER0; - p->head_1 = TS_PH3_FILTER1; -} - -void L1_s2b_PH3(TS_Handle_PH3 *p)// reentrant -{ - p->cashe[1] = p->cashe[0]; - p->cashe[0] = p->reg;// - - if (0 == p->head) - { - if ((p->cashe[1] == p->head_0)&&(p->cashe[0] == p->head_1)) - { - p->head = 1; - p->max = D_s_PH3_ccmodbus_max - 1; - p->sp = p->buf; - p->sp[0] = p->head_0; - p->sp[1] = p->head_1; - p->num = 1; - } - } - else - { - p->num ++; - p->sp[p->num] = p->cashe[0]; - if(p->num == 2)//数量 第3个数据 - { - p->max = p->reg + 2;// - if(p->max >= D_s_PH3_ccmodbus_max) - { - p->max = D_s_PH3_ccmodbus_max - 1; - } - } - if(p->num >= p->max) - { - //p->ts_ccmodbus.crc = (p->sp[p->num-1] | p->sp[p->num]) & 0xFFFF; - if(/*crc()==p->ts_ccmodbus.crc*/ 1) - { - if (p->ok != 1) - { - p->ok = 1;//收到 命令结束,必须有个地方清0,否则无法再次接受报文 - } - } - p->num = 0; - p->head = 0; - } - } -} - - -/****************************************************************************** -** End Of File -******************************************************************************/ diff --git a/source/tpc/tpc_uart.h b/source/tpc/tpc_uart.h deleted file mode 100644 index 305c5b2..0000000 --- a/source/tpc/tpc_uart.h +++ /dev/null @@ -1,408 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -/// COPYRIGHT NOTICE -/// Copyright (c) 2018, 传控科技 -/// All rights reserved. -/// -/// @file tpc_fsk.c -/// @brief transaction protocol control of fsk -/// -///(本文件实现的功能的详述) -/// -/// @version 1.1 CCsens technology -/// @author CC -/// @date 20150102 -/// -/// -/// @version 1.2 CCsens technology -/// @author CC -/// @date 20180308 -/// @info 整理 - -// -////////////////////////////////////////////////////////////////////////// - - -/***************************************************************************** -@version 1.2 -update by cc @201501101001 -针对多串口 和 单一串口 有区别 每个串口是独立的还是分开的有讲究 程序是复杂的还是软件应用简单是 -个需要平衡的事情. - -clib/uartlib.c: -公用的函数 和硬件无关 -接收各类协议的处理函数 -放置串行模式(串口等其他通讯总线类的输出)输出的函数, -一些覆盖模式输出的(lcd等固屏输出的)的也可使用 - void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...) ------------------------------------------------------------------------------------------ - - ------------------------------------------------------------------------------------------ - - --------------------------------------------------------------------------------------------- -msp/uartx.c 底层代码 和cpu相关 - L0_UART0_Init - UART0_IRQHandler - L0_Usend_uc----------s_at0 ------------------------------------------------------------------------------------------ -********************************************************************************/ - - - -#ifndef __TPC_UART_H_ -#define __TPC_UART_H_ - -#include "../clib/Type.h" -#include "../bsp/bsp_config.h" - - -// 20170609 - -///----------------------------------------------------- - - - -//L0_type_byte(ts_cmd_pro0)[] -//#define D_CMD_Filter1 0xA5 -//#define D_CMD_Filter2 0x5A -#define D_CMD_Filter1 0x0a -#define D_CMD_Filter2 0x0d - -#define D_CMD_Filter1_ff 0xFF -#define D_CMD_Filter2_fe 0xFE - - - -///协议类型: 十六进制协议1->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -/// 发送的数据为有fx开头的十六进制的短协议,和长协议的区别除了帧头简化为1个字节外,数据的长度也是比较精简,大部分按位操作的,适合低波特率rf433之类的传播 -///定长5个 适合于传感器定时上传 -/// R1 -///位数 7 6 5 4 3 2 1 0 -///定义 动作传感器AS1 (0---15) 动作传感器AS2 (0---15) - -/// R2 -///位数 7 6 5 4 3 2 1 0 -///定义 气压Press (0---15) open mic - -/// R3 -///位数 7 6 5 4 3 2 1 0 -///定义 Temp (0---15) Gsensor(0---15) - -typedef struct -{//8byte -///////// - vU8 as2:4; - vU8 as1:4; -///////// - vU8 mic:3; - vU8 open:1; - vU8 press:4; -//////////////// - vU8 Gsensor:4; - vU8 temp:4; -/////////// -}TS_P_pc_dat; - -typedef struct -{//8byte - ///////// - U8 cameraBoardPower; //当前行第4个点采集的图像数据 - vU16 paperNum:10; //10bit纸张数据 表示最大量程1024 实际170张 - vU16 cameraIndex:4; //摄像头编号 - vU16 cameraWorking:1; //是否正常工作 - vU16 LowPower:1; // =1 lowPower 提醒需要充电,或者未连接电池 -}TS_P_paper; - -//NUM: 0 1 2 3 4 -// Fx R1 R2 R3 ocr -// F+从机 R1 R2 R3 校验 -typedef struct _s_P_rf_ -{//8byte - vU8 slave:4; - vU8 filter1:4; -//////////////// - TS_P_paper r123; - vU8 ocr; -}TS_P_rf; - -typedef struct _s_P_rf433_ -{//8byte - vU8 ha; -// vU8 hb; - - vU8 slave:4; - vU8 filter1:4; -//////////////// - TS_P_paper r123; - vU8 ocr; -/// vU8 hc; -}TS_P_rf433; - -//NUM: 0 1 2 3 4 -// Fx R1 R2 R3 ocr -// F+从机 R1 R2 R3 校验 - -typedef struct -{//8byte - vU8 slave:4; - vU8 filter1:4; -//////////////// - vU8 G1; -//////////////// - vU8 G2; -//////////////// - vU8 Tmp:4; - vU8 Press:4; -//////////////// - vU8 ocr; -}TS_P_as; - -typedef struct -{//8byte - vU8 slave:4; - vU8 filter1:4; -//////////////// - vU8 cmd; -//////////////// - vU8 R2; -//////////////// - vU8 R3; -//////////////// - vU8 ocr; -}TS_P_debug; - - -#define D_HETU_FX_fi 0xa0 ///2018.7.7 -#define D_HETU_FX_H4 0xf0 ///2018.7.7 - -#define D_HETU_FX_buf_max 4 //max 是是指实际的数量,num或者cnt是指当时的 -/// Hex RTU Protocol 0xFx -typedef struct -{//8byte - vU8 reg; - vU8 n; - vU8 head; //接收标志头标志 - vU8 ok; //接收协议ok标志 - vU8 num; -// vU8 cmd; - vU8 ocr; -// vU8 *sp; - U8 buf[D_HETU_FX_buf_max+1]; -}TS_Handle_PH1; - - -extern void L1_s2b_PH1 (TS_Handle_PH1 *p);// reentrant; - -//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - -///协议类型: 十六进制协议2->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -/// 发送的数据为有ff fe开头的十六进制的长协议,内有数据数量 -///FF FE 52 03 98 77 88 99 地址为0x52的从机, 向PC发送了3个数据0x77,0x88,0x99 - -///FF FE 06 03 e5 77 88 99 命令(0x06)携带了3个数据0x77,0x88,0x99;校验为0x98(=0x06+0x03+0x77+0x88+0x99三个数据的和) -///附:校验位=0x12+0x34+0x56=0x9c;取低位字节得到OCR=0x9c - -typedef struct -{//8byte - vU8 filter1; - vU8 filter2; - vU8 addr; //发送方的地址或命令 - vU8 num; //接收到的数据的计数, 随着数据接收而变化注意数据长度的范围 - vU8 ocr; - vU8 buf[4];//--->_s_P_pc_dat_ -}TS_P_pc; - -// FF FE 10 02 0C 51 03 -// cashe[1] cashe[0] 本机 数量 校验 数据1 从机 数据2 命令 -// filter2 filter1 -struct _s_PH2_FFFE_ -{//8byte - vU8 cashe[2]; - vU8 reg; - vU8 max; //接收到的数目的最大值 - vU8 head_0; - vU8 head_1; - // vU8 sub_num; //接收到的数目注意数据长度的范围 - vU8 head; //接收标志头标志 - vU8 ok; //接收协议ok标志 - vU8 num; - vU8 *sp; - TS_P_pc s_FF; - // U8 pro[16]; ///解析协议用 -}; - -extern void L1_s2b_PH2(struct _s_PH2_FFFE_ *p);// reentrant; - - -//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -///协议类型: 十六进制协议3->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -/// 发送的数据为有ff fe开头的十六进制的长协议,内包含标准的modbus协议 -///FF FE 08 52 16 11 22 33 44 F5 9F 发送了一个modbus协议包(8个数据52 16 11 22 33 44 F5 9F ) -/// 协议表达的意思为地址为0x52的从机, 功能码16 数据为11 22 33 44,校验码 F5 9F -/// 校验码的范围为 -#define TS_PH3_FILTER0 0xFF -#define TS_PH3_FILTER1 0xFE - -#define D_s_PH3_ccmodbus_max (16 + 8) -typedef struct -{ - U8 filter0; - U8 filter1; - U8 num; - U8 src; //源设备ID - U8 dst; //目标设备ID - U8 oper; - U8 buf[D_s_PH3_ccmodbus_max - 8]; - U8 crc[2]; -}TS_PH3_ccmodbus; - -typedef struct -{//8byte - U8 cashe[2]; - U8 reg; - U8 max; //接收到的数目的最大值 - U8 head_0; - U8 head_1; - // vU8 sub_num; //接收到的数目注意数据长度的范围 - vU8 head; //接收标志头标志 - vU8 ok; //接收协议ok标志 - vU8 num; - vU8 *sp; - U8 _buf[D_s_PH3_ccmodbus_max]; ///解析协议用 - U8 buf[D_s_PH3_ccmodbus_max]; -}TS_Handle_PH3; - -extern void L1_s2b_PH3_init(TS_Handle_PH3 *p); -extern void L1_s2b_PH3(TS_Handle_PH3 *p);// reentrant; -//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - -///协议类型: 字符型协议1->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -/// 发送的数据为以回车换行(即0x0a 0x0d)为结尾的字符型长协议,内有意义比较明确的命令字符和对应的数据,适合debug和速率要求不高,数据量 -/// 不大的场合 - -///----------------------------------------------------------------------------------------- -#define D_s_SSTR_0D0A_len 16 //str类的协议需要长度大一些,容易bug的地方,限制为接收64bytes的数据 -struct _s_PC1_0D0A_ -{//8byte - vU8 reg; - // vU8 sub_num; //接收到的数目注意数据长度的范围 - vU8 head; //接收标志头标志 - - vU8 cashe[2]; - //vU8 filter1; - //vU8 filter2; - vU8 num; //接收到的数据的计数, 随着数据接收而变化注意数据长度的范围 - - vU8 ok; //接收协议ok标志 - vU8 max; //接收到的数目的最大值 - vU8 buf[D_s_SSTR_0D0A_len+1];//buffer 的第一位是 长度 - // U8 pro[16]; ///解析协议用 -}; -extern void L1_s2b_PC1(struct _s_PC1_0D0A_ *p);// reentrant; -//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - - - - -///modebus协议通讯使用>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#ifdef doc_98098908 -///Modbus网络上以RTU模式通信,在消息中的每个8Bit字节按照原值传送,不做处理,如63H,RTU将直接发送01100011。 -////这种方式的主要优点是:数据帧传送之间没有间隔,相同波特率下传输数据的密度要比ASCII高,传输速度更快 [1] 。 -////ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译码和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送, -///用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较慢的机器 -///01 16 1000 1234 ABCD -///这段代码的意思 是 向 地址 01 的 控制器 写入 1000 1234 。 就是这么简单 -////地址域 就是指 从站的地址,比如一个变频器,或者是一个仪表,这个地址就是它的通讯地址 -///功能码 就是你要做的事情,通讯的目的 就是读写数据,所以 MODBUS 功能码虽然很多,但是只有两个是我们常用的,就是读和写。 -///读的功能码是03 写的功能码是16,注意,这里的读写都是一次性写16个位,也就是一个WORD. -///Address Function Data Check -///8-Bits 8-Bits N x 8-Bits 16-Bits -/// 功能(Function)域 -/// 功能域代码告诉了被寻址到的终端执行何种功能。下表列出了该系列仪表用到的功能码,以及它们的意义和功能。 -/// 代码 意义 行为 -/// 03 读数据寄存器 获得一个或多个寄存器的当前二进制值 -/// 16 预置多寄存器 设定二进制值到一系列多寄存器中(不对ACRXXXE开放) - - -///离散量、开关量、数字量都是对同一类型信号的不同说法, -///0表示断开,1表示接通,在PLC和类似控制设备中,都是一种布尔型的变量? -///T谧远///像PLC中的Y/Q,均是这种类型的信号 - - - - -///cc改进版的modebus协议,添加了一个帧头 -/// ff fe num add function dat check -#endif - - -//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - - - - -///协议通讯使用>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#define D_s_protocol_len 32 -struct _s_protocol_ -{//8byte - vU8 rbr; - vU8 reg; - vU8 cashe[3]; - vU8 filter1; - vU8 filter2; - vU8 (*pfun_get)(void); - vU8 num; //接收到的数目注意数据长度的范围 - vU8 sub_num; //接收到的数目注意数据长度的范围 - vU8 head; //接收标志头标志 - vU8 ok; //接收协议ok标志 - vU8 data_ok; //接收协议ok标志 - vU8 ucXor; - vU8 array[D_s_protocol_len];//buffer 的第一位是 长度 - vU8 buf[D_s_protocol_len];//buffer 的第一位是 长度 - vU8 buf2[12];//buffer 的第一位是 长度 -}; - -extern void L1_uart_2buf(struct _s_protocol_ *p); - - - -//485 -///协议类型: 十六进制协议2 带地址判定的 第二个是地址->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -#define D_HETU_FXA 0xaa - -#define D_HETU_FXA_buf_max 8 //max 是是指实际的数量,num或者cnt是指当时的 -/// Hex RTU Protocol 0xFx -typedef struct -{//8byte - vU8 reg; - vU8 n; - vU8 head; //接收标志头标志 - vU8 ok; //接收协议ok标志 - vU8 num; - vU8 add; ///数据地址 - vU8 ocr; -// vU8 *sp; - U8 buf[D_HETU_FXA_buf_max + 1]; -}TS_Handle_PH1A; - -typedef struct -{ - vU8 filter; - vU8 src; - vU8 dst; - vU8 dat[4]; - vU8 ocr; -}TS_PH1A_DAT; - -extern void L1_s2b_PH1A (TS_Handle_PH1A *p); - - -#endif /* end __TPC_UART_H_ */ -/***************************************************************************** -** End Of File -******************************************************************************/ - - diff --git a/source/tpc/tpc_x.h b/source/tpc/tpc_x.h new file mode 100644 index 0000000..8956284 --- /dev/null +++ b/source/tpc/tpc_x.h @@ -0,0 +1,24 @@ +#ifndef TPC_CONFIG_H +#define TPC_CONFIG_H + +#include "../bsp/bsp_config.h" +#include "../clib/type.h" + +typedef struct _tp_handler_x +{//8byte + vU8 reg; + vU8 head; //鎺ユ敹鏍囧織澶存爣蹇 + vU8 cashe[2]; + vU8 head_0; + vU8 head_1; + vU8 num; //鎺ユ敹鍒扮殑鏁版嵁鐨勮鏁帮紝 闅忕潃鏁版嵁鎺ユ敹鑰屽彉鍖栨敞鎰忔暟鎹暱搴︾殑鑼冨洿 + vU8 ok; //鎺ユ敹鍗忚ok鏍囧織 + vU8 max; //鎺ユ敹鍒扮殑鏁扮洰鐨勬渶澶у + vU8 buf[D_TPC_HANDLER_X_LEN+16];////鍗忚缂撳啿 + vU8 *sp; + vU8 *sp2; //澶囦唤鍊硷紝濡傛灉鍗忚闇瑕佸浠斤紝鍗曠嫭鎻愪緵澶囦唤缂撳啿鍖 + vU8 ocr; + vU8 crc[2]; +}TP_Handler_X; + +#endif diff --git a/source/tpc/鍗忚Transfer Protocol Conversion/.keep b/source/tpc/鍗忚Transfer Protocol Conversion/.keep deleted file mode 100644 index e69de29..0000000