You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
552 lines
9.3 KiB
552 lines
9.3 KiB
1 year ago
|
#include "bsp_pressure.h"
|
||
|
//#include "tpc_debug.h"
|
||
|
////#include "tpc_x.h"
|
||
|
#include "msp_uart1.h"
|
||
|
#include "msp_uart2.h"
|
||
|
#include "msp_uart4.h"
|
||
|
#include<intrins.h>
|
||
|
#include "debug_drv.h"
|
||
|
|
||
|
#include "TTSS_task.h"
|
||
|
|
||
|
TS_task_sw_ ts_task_sw;
|
||
|
|
||
|
void L2_pressure_init(void)
|
||
|
{
|
||
|
D_stdIO_P5(BITN2);//485RE
|
||
|
D_HighI_P3(BITN2);//led1
|
||
|
/// D_485_TX();
|
||
|
D_SW_IO_INIT();
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
U8 Fun_SC_Check(U8 *p1, unsigned short int len)//累加和校验
|
||
|
{
|
||
|
U8 sum = 0;
|
||
|
for(;len > 0; len--)
|
||
|
{
|
||
|
sum += *p1++;
|
||
|
}
|
||
|
|
||
|
return sum;
|
||
|
}
|
||
|
|
||
|
|
||
|
//pressure数据初始化
|
||
|
void l2_task_pressure_init()
|
||
|
{
|
||
|
L1_task_init(&ts_task_sw.task);
|
||
|
L3_task_s_go(ts_task_sw,D_task_init);
|
||
|
}
|
||
|
////二维数组的第一个参数是行,第二个参数是列。
|
||
|
///二维数组定义的一般形式是: 类型说明符 数组名[常量表达式1][常量表达式2],
|
||
|
////其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。
|
||
|
|
||
|
|
||
|
|
||
|
void L3_hang_judge(u8 hang)
|
||
|
{
|
||
|
printf(" H %d ",(int)hang);
|
||
|
switch (hang)
|
||
|
{
|
||
|
case 0x00: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x01: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x02: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x03: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x04: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x05: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x06: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x07: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x08: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x09: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0A: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0B: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_OFF();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0C: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0D: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_OFF();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0E: {
|
||
|
L0_adc_S0_OFF();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0F: {
|
||
|
L0_adc_S0_ON();
|
||
|
L0_adc_S1_ON();
|
||
|
L0_adc_S2_ON();
|
||
|
L0_adc_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
/// Lc_delay_us(2);
|
||
|
/*
|
||
|
if((hang & 0x01) == 0x01)
|
||
|
{
|
||
|
L0_adc_S0_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
L0_adc_S0_OFF();
|
||
|
}
|
||
|
if((hang & 0x02) == 0x02)
|
||
|
{
|
||
|
L0_adc_S1_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
L0_adc_S1_OFF();
|
||
|
}
|
||
|
if((hang & 0x04) == 0x04)
|
||
|
{
|
||
|
L0_adc_S2_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
L0_adc_S2_OFF();
|
||
|
}
|
||
|
if((hang & 0x08) == 0x08)
|
||
|
{
|
||
|
L0_adc_S3_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
L0_adc_S3_OFF();
|
||
|
}
|
||
|
*/
|
||
|
}
|
||
|
|
||
|
|
||
|
void L3_lie_judge(u8 lie)
|
||
|
{
|
||
|
printf(" L %d ",(int)lie);
|
||
|
switch (lie)
|
||
|
{
|
||
|
case 0x00: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x01: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x02: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x03: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x04: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x05: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x06: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x07: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_OFF();
|
||
|
break;
|
||
|
}
|
||
|
case 0x08: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x09: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0A: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0B: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_OFF();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0C: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0D: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_OFF();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
case 0x0E: {
|
||
|
D_GND_S0_OFF();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_ON();
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
case 0x0F: {
|
||
|
D_GND_S0_ON();
|
||
|
D_GND_S1_ON();
|
||
|
D_GND_S2_ON();
|
||
|
D_GND_S3_ON();
|
||
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
/// Lc_delay_us(2);
|
||
|
/*
|
||
|
if((lie & 0x01) == 0x01)
|
||
|
{
|
||
|
D_GND_S0_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
D_GND_S0_OFF();
|
||
|
}
|
||
|
if((lie & 0x02) == 0x02)
|
||
|
{
|
||
|
D_GND_S1_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
D_GND_S1_OFF();
|
||
|
}
|
||
|
if((lie & 0x04) == 0x04)
|
||
|
{
|
||
|
D_GND_S2_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
D_GND_S2_OFF();
|
||
|
}
|
||
|
if((lie & 0x08) == 0x08)
|
||
|
{
|
||
|
D_GND_S3_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
L0_adc_S3_OFF();
|
||
|
}
|
||
|
*/
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
#define D_3232_left() D_CD3_ON();D_CD2_OFF(); ts_task_sw.ch = D_DW_left;
|
||
|
#define D_3232_right() D_CD2_ON();D_CD3_OFF(); ts_task_sw.ch = D_DW_right;
|
||
|
#define D_3232_odd() D_CD4_OFF(); D_CD1_ON();///D_CD2_ON();D_CD3_OFF();
|
||
|
#define D_3232_even() D_CD1_OFF(); D_CD4_ON();
|
||
|
|
||
|
//// 和电路的排列息息相关
|
||
|
void L4_SW_set3232(u8 hang,u8 lie)
|
||
|
{
|
||
|
if((hang%2) == 0)
|
||
|
{
|
||
|
D_3232_even();
|
||
|
/// 0->0 2->1 4->2 6->3
|
||
|
hang /= 2;
|
||
|
L3_hang_judge(hang);
|
||
|
}else
|
||
|
{
|
||
|
D_3232_odd(); ///偶数
|
||
|
/// 1->15 3->14 5->13
|
||
|
/// 0 1 2
|
||
|
hang --;
|
||
|
hang /= 2;/// (hang - 1)/2;
|
||
|
L3_hang_judge(15 - hang);
|
||
|
}
|
||
|
|
||
|
|
||
|
if(lie < 16)//左
|
||
|
{
|
||
|
/// 0->15 1->14 2->13 ...15->0
|
||
|
D_3232_left();
|
||
|
L3_lie_judge(15 - lie);
|
||
|
}else
|
||
|
{/// 16-----31
|
||
|
/// 16->15 17->14 18->13 ... 31->0
|
||
|
D_3232_right();
|
||
|
L3_lie_judge(31-lie);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//点的切换
|
||
|
|
||
|
|
||
|
#if 0
|
||
|
|
||
|
ch =0
|
||
|
set
|
||
|
adc
|
||
|
ch =1
|
||
|
set
|
||
|
adc
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif
|
||
|
/// 硬件先切换 行列切换---之后通道 然后当前adc采样,
|
||
|
//// 行切换 hang++
|
||
|
//// 列切换 lie++
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 列切换 lie++
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 列切换 lie++
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
////
|
||
|
//// 列切换....
|
||
|
|
||
|
//// 行切换 hang++
|
||
|
//// 列切换 lie++
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 列切换 lie++
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 列切换 lie++
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
//// 通道切换 ch++
|
||
|
//// adc
|
||
|
////
|
||
|
#if 0
|
||
|
#define D_SW_hang_max 16
|
||
|
#define D_SW_lie_max 16
|
||
|
#define D_SW_hang_max (6-1)
|
||
|
#define D_SW_lie_max (6-1)
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define D_SW_hang_max (2-1)
|
||
|
#define D_SW_lie_max (2-1)
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#define D_SW_all_hang_max 32
|
||
|
#define D_SW_all_lie_max 32
|
||
|
|
||
|
|
||
|
#define D_SW_ch_max (2-1)
|
||
|
|
||
|
void L3_task_sw(TS_task_sw_ *s)
|
||
|
{
|
||
|
|
||
|
TTSS_Task_init():
|
||
|
printf("\r\n task_sw ");
|
||
|
s->H = 0;
|
||
|
s->L = 0;
|
||
|
ts_task_adc.chok1 = 0;
|
||
|
ts_task_adc.chok2 = 0;
|
||
|
L2_pressure_init();
|
||
|
L2_task_go(D_TASK_SW_change);
|
||
|
TTSS_Task_step(D_TASK_SW_change):
|
||
|
L4_SW_set3232(s->H,s->L);
|
||
|
printf("\r\n %d %d ",(int)s->H,(int)s->L);
|
||
|
|
||
|
ts_task_adc.change = 1;
|
||
|
ts_task_adc.ch_now = s->ch;
|
||
|
L2_task_go(D_TASK_SW_wait_adc);
|
||
|
/// L2_task_Cdelay_go(1000,D_TASK_SW_ch);////100000--2s
|
||
|
TTSS_Task_step(D_TASK_SW_wait_adc):
|
||
|
if(ts_task_adc.chok1)
|
||
|
{
|
||
|
ts_task_adc.chok1 = 0;
|
||
|
/// printf("\r\n %d %d %d %d ",(int)s->ch,(int)s->H,(int)s->L,(int)ts_task_adc.chok1);
|
||
|
//// L2_task_go(D_TASK_SW_ch_ok);
|
||
|
L2_task_Cdelay_go(10000,D_TASK_SW_lie);////100000--2s
|
||
|
}
|
||
|
TTSS_Task_step((D_TASK_SW_lie)):
|
||
|
if(s->L >= D_SW_all_lie_max)
|
||
|
{
|
||
|
s->L = 0;
|
||
|
if(s->H >= D_SW_all_hang_max)
|
||
|
{
|
||
|
s->H = 0;
|
||
|
printf("\r\n next circle");
|
||
|
}else
|
||
|
{
|
||
|
s->H ++;
|
||
|
}
|
||
|
|
||
|
}else
|
||
|
{
|
||
|
s->L ++;
|
||
|
}
|
||
|
|
||
|
L2_task_go(D_TASK_SW_change);
|
||
|
|
||
|
TTSS_Task_end();
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void L3_pressure_debug(u8 filter)
|
||
|
{
|
||
|
|
||
|
//u8 D_pressure_hang1 = 0x00;
|
||
|
//u8 D_pressure_hang2 = 0x0f;
|
||
|
if( filter == ts_debug_rec.filter)
|
||
|
{
|
||
|
if(0x33 == ts_debug_rec.ocr )
|
||
|
{
|
||
|
printf("\r\nhang : %d lie: %d ",(int)ts_debug_rec.R1,(int)ts_debug_rec.R2);
|
||
|
L4_SW_set3232(ts_debug_rec.R1,ts_debug_rec.R2);
|
||
|
}else
|
||
|
{
|
||
|
printf("\r\n 44444 ");
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|