IO软件滤波实现

UWORD *uwIoNewStatus[XINPUT_PORT_NUM] = {&BXBrkL, &BXBrkR, &BXBrk1, &BXBrk2, &BXBKShotEr, &BXBRY, &BXBKVHST, &BXBKSTYPE};

/*************************************************************** 
 Function: voIOinputFilter;
 Description: IOinput filter
 Call by: voIOinput 1ms;
 Input Variables: filter CNT (0~255)
 Output/Return Variables: N/A
 Subroutine Call: ...;
 Reference: N/A
****************************************************************/
void voIOinputFilter(UBYTE filtercnt)
{
	UWORD i = 0;

	ulIoBufStatusTemp =  (BKSTYPE<<7) | (BKVH<<6) | (BRY<<5) | (GNDERR<<4) | (BKY2<<3) | (BKY1<<2) | (BK2<<1) |  BK1;
	    
	for(i = 0; i < XINPUT_PORT_NUM; i++)
	{
		uwIoBufStatus[i] = (ulIoBufStatusTemp>>i)&0x0001;
	}
	for(i = 0; i < XINPUT_PORT_NUM; i++)
	{
		if(uwIoBufStatus[i] != uwIoOldStatus[i])
		{
		    uwIoOldStatus[i] = uwIoBufStatus[i];
		    uwFiltercnt[i] = 0;
		}
		else
		{
			if(uwFiltercnt[i] >= filtercnt)//(filtercnt+1)ms
			{
				*uwIoNewStatus[i] = uwIoOldStatus[i];
				uwFiltercnt[i] = 0;
			}
			else
			uwFiltercnt[i]++;
		} 
	}	
}

通过J-scope观察滤波效果(filtercnt设为4),在第五毫秒输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值