搜索
bottom↓
回复: 0

M054LAN脉宽捕捉问题请教!

[复制链接]

出0入0汤圆

发表于 2012-2-8 16:27:01 | 显示全部楼层 |阅读模式
最近用M054LAN芯片作一板子,主体功能均编写结束!

测试中发现有一问题,在采用PWMB组对外部LC振荡信号进行捕捉脉冲宽度时,设计要求是检测单个周期长度并由PWM A组输出捕捉到的同频信号.结果发现输入二个信号周期才输出一个周期!用DEBUG在线调试,检测发现PWM B组的捕捉所得数值经计算为输入信号二个周期的长度,可证实为输入信号捕捉出错了,为查清原因,测量了波形图,输入信号没有问题.可确定为软件问题,在PWM的B组捕捉上出问题了!经查程序未能找出问题所在!
请诸位大侠帮忙介绍一下, 有哪些原因会引起PWM 脉宽 捕捉错误!
下附波形图和程序的PWM配置部分!
下载 (45.47 KB)

2012-1-12 21:57
CH1为捕捉输入信号
CH2为同步的输出信号
以下附PWM配置部分的程序:
void PWM_CAP_Init(void)        
{            
    P2_MFP = P2_MFP & (~(P25_AD13_PWM5 )) | PWM5 ;  //配置P2.5PWM   
    IPRSTC2 |= PWM47_RST;         //复位PWM模块   
    IPRSTC2 &= ~PWM47_RST;      //PWM模块从复位状态恢复到正常工作状态   
P2_PMD &= ~Px5_PMD;
P2_PMD |= Px5_QB;
    APBCLK |= PWM45_CLKEN;                   //使能PWM45和PWM67时钟   
    CLKSEL2 = CLKSEL1 & (~(PWM45_CLK));
CLKSEL2 |= PWM45_HCLK;                 //选择HCLK作为PWM45
PPRB |= 0x00000101;  //Select PWM4,5 and pWM6,7 PWM预分频器(1,不分频,2个时钟分频器共用一个16位)
    CSRB |= (CSR1_CLK_1); //分频系数(不分频,同频模式下,组只定义偶数的时钟)  
PCRB |= CH1_AU_RL;             //自动重装最大计数值
CNR1B = 65535;  //最大计数值  脉宽等于 65535+1-触发锁存值()上升沿或下降沿
CCR0B |= CFL_IE1;            //捕捉中断使能,CFL_IF1为下降沿
// CCR0B |= CRL_IE1;            //CRL_IE1为上升沿
//CCR0B |= INV1_ON;            //输入取反打开
CAPENRB |= CAPCH1_ON;         //Enable Capture1 channel input valid
    PIERB |=  PWMIE1;                //PWM5中断使能                        
    NVIC_ISER |= PWMB_INT;      //使能NVIC PWM_INT中断   
    CCR0B |= CAPCH1EN;            // PWM B组通道1脉宽计数使能
    POEB &= ~(PWM5_OE);                                    //PWM5关闭输出   
    PCRB |= (CH5EN);     // 使能CAPENR  定时器使能比特,应用时打开
}

void PWMB_IRQHandler(void)     //PWM中断,检测周期 ,脉宽捕捉
{  
volatile   static uint16_t uiLow_Pulse, uiHigh_Pulse;
volatile uint32_t u32status;
    PIIRB &= PIIRB;//PWMIF5 | PWMIF4;
u32status = CCR0B;
    CCR0B |= CAPIF1;                      //Capture1 flag clearing by writing "1"
/* if(u32status & CRLRI1)
   {                           
    uiLow_Pulse = CNR1B - CRLR1B;         //  CRLR1 上升沿锁存寄存器
    CCR0B |= CRLRI1;
   }           // */
    if(u32status & CFLRI1)
   {                           
       TCAP1 = CNR1B - CFLR1B;               //CFLR1 下降沿锁存寄存器
    CCR0B |= CFLRI1;
   }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 11:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表