[技术问答]

N76E003的双边沿捕获和上下边沿捕获有什么区别?

[复制链接]
3149|25
手机看帖
扫描二维码
随时随地手机跟帖
cyj1232|  楼主 | 2018-9-19 15:25 | 显示全部楼层 |阅读模式
在使用中好像都是测得脉冲周期,双边沿可不可以只测高电平脉冲宽度?
tianxj01| | 2018-9-19 15:46 | 显示全部楼层
典型的,双边沿捕获本来就是用来测试脉冲高电平或者低电平宽度的,单边沿捕获用来测试脉冲周期。

使用特权

评论回复
cyj1232|  楼主 | 2018-9-19 15:49 | 显示全部楼层
怎么用?怎么我用起来都是测脉冲周期,在哪里设高电平和低电平?

使用特权

评论回复
cyj1232|  楼主 | 2018-9-19 16:09 | 显示全部楼层
我把数据手册关于timer2捕获这节看完了,也没有看见\使用上有什么区别,高低电平也没有看见在哪里里设置

使用特权

评论回复
zhuomuniao110| | 2018-9-19 16:52 | 显示全部楼层
测高电平就是,先测一个周期信号,然后再测两个边沿的,刚好是一个的和啊。

使用特权

评论回复
zhuomuniao110| | 2018-9-19 16:53 | 显示全部楼层
测出双边沿的,然后判断当时的状态,如果是低电平,那么刚才的数据是高电平,如果是高电平,那么刚才测的是低电平。

使用特权

评论回复
zhuomuniao110| | 2018-9-19 16:53 | 显示全部楼层
你的明白吗

使用特权

评论回复
cyj1232|  楼主 | 2018-9-19 17:10 | 显示全部楼层
大虾们,不要凭想像分析,问题是三种模式读出的都是周期信号,读不出高电平或低电平数据,不要纸上谈兵,给个例程出来吧

使用特权

评论回复
cyj1232|  楼主 | 2018-9-19 17:11 | 显示全部楼层
最好经过实测的例程

使用特权

评论回复
cyj1232|  楼主 | 2018-9-19 17:33 | 显示全部楼层
数据手册上对这三种方式也没详细的介绍

使用特权

评论回复
tianxj01| | 2018-9-20 09:54 | 显示全部楼层
cyj1232 发表于 2018-9-19 15:49
怎么用?怎么我用起来都是测脉冲周期,在哪里设高电平和低电平?

当采用双边沿捕获时候,当每一个捕获完成中断发生后,很明显,你只需要测量该捕获端口是什么电平,就可以明确知道本次发生的是什么电平的捕获。
比如测试出来,是低电平,那么很明显,本次中断发生的是下降沿捕获,我测试的就是高电平脉宽。
反之,如果中断后,测试的捕获端是高电平,那么很明显这次捕获的就是低电平脉宽。
并不进行测试,直接把相邻2次数据加起来,那么就是被测信号的完整周期。

使用特权

评论回复
cyj1232|  楼主 | 2018-9-20 10:39 | 显示全部楼层
找到原因了,谢谢!是厂家例程库的头文件定义有问题

使用特权

评论回复
cyj1232|  楼主 | 2018-9-20 10:43 | 显示全部楼层
头函数里,实际上把三种形式都定义为了上升沿,昨天晚上找了1个多小时,终于找到了原因,新唐的固件库做得不严谨

使用特权

评论回复
cyj1232|  楼主 | 2018-9-20 10:45 | 显示全部楼层
把有关timer2的寄存器,都对照手册查了一遍

使用特权

评论回复
cbx_xx| | 2018-9-21 11:08 | 显示全部楼层
新塘那帮技术工程师本来就不怎样. 写的库都没认真测试过...很多BUG都是库造成的.效率超低,  所以小心使用.

使用特权

评论回复
评论
shi864698 2020-3-23 13:48 回复TA
很烂 
jasontu| | 2018-9-21 13:09 | 显示全部楼层
拿timer 2 capture作抓pwm
初始化
P05_Input_Mode;
                TIMER2_CAP0_Capture_Mode;
                IC6_P05_CAP0_BothEdge_Capture;
               
                set_ECAP;                                   //Enable Capture interrupt
               
                set_TR2;                                    //Triger Timer2
               
               
                set_EA;                                     //enable interrupts
中断
void Capture_ISR (void) interrupt 12
{
        clr_CAPF0;                          // clear capture0 interrupt flag
              if(P05==0)
                                {
                                        input_capture_state=1;
                                low_input        = (C0H<<8)&0xff00;       
        low_input |= C0L;                                                                                                                // For capture mode CxL/CxH with data capture from I/O pin                                                                                                        
                                }else
                                {
                                        input_capture_state=2;
                                high_input        = (C0H<<8)&0xff00;       
        high_input |= C0L;
                                }
                               
                                clr_TF2;
}

使用特权

评论回复
cyj1232|  楼主 | 2018-9-22 00:08 | 显示全部楼层
上面这段程序为什么要清TF2呢?

使用特权

评论回复
陶文韬| | 2018-9-25 15:28 | 显示全部楼层
666厉害了

使用特权

评论回复
david-lau| | 2018-9-25 17:51 | 显示全部楼层
cyj1232 发表于 2018-9-22 00:08
上面这段程序为什么要清TF2呢?

清除TR2后,会关闭定时器,目前已计数会保留在TH2 TL2,你才能读出来,不然计数器仍然继续计数

使用特权

评论回复
david-lau| | 2018-9-25 17:53 | 显示全部楼层
我看了下BSP 不知道你指的是哪里写错了,贴出来参考下?

使用特权

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

本版积分规则

14

主题

159

帖子

2

粉丝