[PIC®/AVR®/dsPIC®产品] 求助,PIC关于利用定时器中断判断输入波形的疑问

[复制链接]
5296|4
 楼主| 蓝天之歌 发表于 2022-7-18 21:46 | 显示全部楼层 |阅读模式
ic, pi
本帖最后由 蓝天之歌 于 2022-7-19 09:19 编辑

图片PIC单片机1508定时器0配置1ms。函数 SL_DRL_scan在定时0运行
void SL_DRL_scan(void)
    static uint8_t cycle=125,ratio=0,low_tim=0;//周期,比率
    if(cycle==0)
    {
        if(ratio>=100)
        {

        }
        else if(ratio<50 && ratio>=8)
        {
            D_LED=1;//灯亮起

        }
        else if(ratio<4)
        {

        }
        ratio=0;
        cycle=125;     
    }
    else
    {
        if(D_PORT)//输入高电平
        {
            ratio++;  //比率加1         

        }
        else
        {
            low_tim++;
            if(low_tim>=50)
            {
                ratio=0;
                cycle=125;  

            }

        }
    }
    cycle--;
}

这个函数是对(80hz) 12.5ms输入波形进行判断(配置和代码实验过可以正确判断运行)
个人不太理解的是定时器0是1MS 中断,想要12.5ms输入波形进行判断,cycle=125不应该是12.5或者定时器0配置0.1ms中断,所以不此求教想问一下这个函数原理是怎么样的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ynwa 发表于 2022-7-19 10:16 | 显示全部楼层
你是在看别人的项目吧。“这个函数是对(80hz) 12.5ms输入波形进行判断”,具体是怎么判断?判断什么?判断的目的又是什么?如果要揣摩代码的原意,至少先要清楚这个函数对应的设计目标到底具体是什么。
 楼主| 蓝天之歌 发表于 2022-7-19 10:59 | 显示全部楼层
本帖最后由 蓝天之歌 于 2022-7-19 11:04 编辑
ynwa 发表于 2022-7-19 10:16
你是在看别人的项目吧。“这个函数是对(80hz) 12.5ms输入波形进行判断”,具体是怎么判断?判断什么?判 ...

这个函数是输入12.5ms波形,占空比是20%让一个输出口置1,我个人理解是D_PORT检测到上升沿ratio++根据ratio值做出判断,个人目前不太理解这段代码
lcczg 发表于 2022-7-19 17:22 | 显示全部楼层
整体感觉不太对。D_LED=1;//灯亮起,此时ratio是几?在中断里翻转IO,看一下频率。
 楼主| 蓝天之歌 发表于 2022-7-19 18:08 | 显示全部楼层
翻转时LED输出角信号就是输入角的信号80hz
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部