打印
[PIC®/AVR®/dsPIC®产品]

求助,PIC关于利用定时器中断判断输入波形的疑问

[复制链接]
5059|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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中断,所以不此求教想问一下这个函数原理是怎么样的

38a802179d688d9696e6bd7cc24de37.jpg (42.72 KB )

38a802179d688d9696e6bd7cc24de37.jpg

23b626b87288db8181f7c9a50a197eb.jpg (85.43 KB )

23b626b87288db8181f7c9a50a197eb.jpg

使用特权

评论回复
沙发
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,看一下频率。

使用特权

评论回复
5
蓝天之歌|  楼主 | 2022-7-19 18:08 | 只看该作者
翻转时LED输出角信号就是输入角的信号80hz

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

16

帖子

0

粉丝