打印

产生PWM波,然后读管脚IO信号

[复制链接]
1631|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caojun105|  楼主 | 2010-4-22 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我产生一个pWM波接至某管脚,来驱动蜂鸣器。
      现在的问题是 我需要测量频率,采用的是测量周期法。需要读PWM波输出管脚的电平 怎么处理?急 谢谢各位不吝解答~
沙发
fox411| | 2010-4-22 19:31 | 只看该作者
放个Counter8, 设置其中断频率是PWM的20倍以上,然后在其中断函数里测量高电平和低电平的个数,乘以中断周期就可以了。给你个参考程序
WORD wPos = 0;
WORD wNeg = 0;
WORD wCnt = 0;
BYTE bFlag = 0;

#define PWM_PIN     0x10
#define PWM_PORT    PRT2DR

#pragma interrupt_handler Counter8_ISR
void Counter8_ISR(void)
{
    if(PWM_PORT & PWM_PIN)
    {
        if(bFlag == 0)
        {
            wNeg = wCnt;
            wCnt = 0;
            bFlag = 1;
        }
        wCnt++;
    }
    else  
    {
        if(bFlag == 1)
        {
            wPos = wCnt;
            wCnt = 0;
            bFlag = 0;
        }
        wCnt++;
    }
}

使用特权

评论回复
板凳
虎虎生威| | 2010-4-22 21:07 | 只看该作者
学习了

使用特权

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

本版积分规则

0

主题

11

帖子

1

粉丝