方波波形,用IO模拟上升沿中断检测程序
一个方波波形,单片机一个IO口PA0去检测方波的上升沿,立刻控制PB0口输出高电平,上升沿只能用IO判断高低变化,不能用中断;程序设计如下,用示波器观察,有时候会发现下降沿时PB0输出高电平,大部分都是上升沿PB0输出高电平的,请问上升沿检测程序是哪里不对造成的?
void ZeroCross_Task(void)
{
u16 timerout_cnt=0;
LightCONTL.ZeroCross_flag=0;
while(ZeroCross==1)//先检测0
{
if((timerout_cnt++)>(u16)47000)//超时时间
{
LightCONTL.ZeroCross_flag=0;
return;
}
}
timerout_cnt=0;
while((ZeroCross==0))//检测1,即上升沿
{
if((timerout_cnt++)>(u16)47000)//超时时间
{
LightCONTL.ZeroCross_flag=0;
return;
}
}
LightCONTL.ZeroCross_flag=1;
}
没有去抖,
方波是从哪来的? while里面最好也加判断 这个是有干扰,你要仔细地观察,出现问题的时候,各种硬件是否产生干扰,不用的管脚是否设为上拉输入? 五哥1 发表于 2018-12-31 01:33
这个是有干扰,你要仔细地观察,出现问题的时候,各种硬件是否产生干扰,不用的管脚是否设为上拉输入? ...
在检测电平IO口上加一个小电容102,还是一样,会出现检测到下降沿触发,如果是干扰的话,不应该出现异常的时候每次都是在下降沿,不知道我程序设计逻辑是否有问题
页:
[1]