硬件连接如图,上电2*6的排线连接TOUCH和我的TS,注意GPIO的ON和NC,如何自适应?
上电的时候 左边1 2 3基本就是单刀双掷开关,试想,如果这个端口没有连接TOUCH的话那就是ON和NC都是高电平。
如果只有ON是低电平的话,那就是1 2之间是通路,从而判断此时TOUCH内部的relay是 1 2连通,2 3断开。
(我是12ON--0 23NC--1)
我在测试中的RELAYON是12ON--1 23NC--0
逻辑清楚了:上电如果2个GPIO都是1代表没有接TOUCH,如果其中一个是低电平那么它就是我定义的relayon因为我是要求闭合是它为1.
void Task_StartRun(void)
{
if(Touch1_Check_RelayA()+Touch1_Check_RelayB()==2)
{/*没有接TOUCH没有测试必要了*/}
else
{
T1_dev.RELAY_ENABLED=Touch1_Check_RelayA()?Touch1_Check_RelayB:Touch1_Check_RelayA;
OSTaskResume(Task_T1_PRIO);
}
if(Touch2_Check_RelayA()+Touch2_Check_RelayB()==2)
{/*没有接TOUCH没有测试必要了*/}
else
{
T2_dev.RELAY_ENABLED=Touch2_Check_RelayA()?Touch2_Check_RelayB:Touch2_Check_RelayA;
OSTaskResume(Task_T2_PRIO);
}
if(Touch3_Check_RelayA()+Touch3_Check_RelayB()==2)
{/*没有接TOUCH没有测试必要了*/}
else
{
T3_dev.RELAY_ENABLED=Touch3_Check_RelayA()?Touch3_Check_RelayB:Touch3_Check_RelayA;
OSTaskResume(Task_T3_PRIO);
}
if(Touch4_Check_RelayA()+Touch4_Check_RelayB()==2)
{/*没有接TOUCH没有测试必要了*/}
else
{
T4_dev.RELAY_ENABLED=Touch4_Check_RelayA()?Touch4_Check_RelayB:Touch4_Check_RelayA;
OSTaskResume(Task_T4_PRIO);
}
if(Touch5_Check_RelayA()+Touch5_Check_RelayB()==2)
{/*没有接TOUCH没有测试必要了*/}
else
{
T5_dev.RELAY_ENABLED=Touch5_Check_RelayA()?Touch5_Check_RelayB:Touch5_Check_RelayA;
OSTaskResume(Task_T5_PRIO);
}
}