完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在dspic4011里我设置了边沿捕捉模式,上升沿和下降沿均捕捉,但是当我给捕捉输入引脚PWM时,无法判断捕捉到的是上升沿还是下降沿,这样相减得到的有可能是高电平时间也有可能是低电平时间!请问如何能够得到高电平时间?
这是我的程序 #include _FOSC(CSW_FSCM_OFF&XT_PLL16) ; //16倍频晶振,Failsafe时钟关闭 _FWDT(WDT_OFF) ; //关闭看门狗定时器 _FBORPOR(PBOR_OFF&MCLR_EN) ; //禁止掉电复位,MCLR复位使能 _FGS(CODE_PROT_OFF); //代码保护禁止 #define FCY 32000000UL //29490000UL // pwm frequency #define FPWM 20000 // FULL_DUTY the equivalent of 100% duty cycle #define FULL_DUTY (2*FCY/FPWM) void __attribute__((__interrupt__))_IC1Interrupt(void);//输入捕捉通道IC1中断服务子程序 unsigned int IC1InterruptCount = 0; unsigned int timerOverFlow=0; unsigned int ICT1=0; unsigned int ICT2=0; unsigned int Fre_H=0; void InitializeSys(void); void InitializeTMR2(); void IC1_Init(void); void InitializeSys(void) { INTCON2 = 0x0000; IEC2 = 0x0000; } void IC1_Init(void) { InitializeTMR2(); TRISDbits.TRISD0 = 1; IC1CONbits.ICM = 0; IC1CONbits.ICTMR = 1;//Timer2 IC1CONbits.ICI = 0; IFS0bits.IC1IF = 0; IEC0bits.IC1IE = 1; IPC0bits.IC1IP = 5; IC1CONbits.ICM = 1; } void InitializeTMR2() { TMR2 = 0; T2CON = 0x0010; PR2 = 0xFFFF; IFS0bits.T2IF = 0; IEC0bits.T2IE = 1; IPC1bits.T2IP = 6; T2CONbits.TON = 1; } void __attribute__((__interrupt__))_IC1Interrupt(void) { IC1InterruptCount++; if(IC1InterruptCount == 1) { ICT1 = IC1BUF;//获取捕捉值 TimerOverFlow = 0; } if(IC1InterruptCount == 2) { unsigned long timecount; ICT2 = IC1BUF;//获取捕捉值 timecount = TimerOverFlow * 65536 + ICT2 -ICT1; IC1InterruptCount = 0; TimerOverFlow = 0; } IFS0bits.IC1IF = 0; } void __attribute__((interrupt, no_auto_psv)) _T2Interrupt(void) { IFS0bits.T2IF = 0; TimerOverFlow ++; } int main() { IC1_Init(); InitializeSys(); while(1) { } } |
|
相关推荐
4个回答
|
|
简单的提供一下思路:如果想计算高电平时间,你可以先打开上升沿捕捉,只打开上升沿,捕捉到上升沿以后,再打开下降沿,这样就可以判断是高电平了
|
|
|
|
??????????????????????
|
|
|
|
我和你遇到相同的问题(O_O)?请问怎么解决的啊,着急调试,请回复啊。
|
|
|
|
時序CHECK
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2075 浏览 1 评论
3456 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2327 浏览 2 评论
2751 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4009 浏览 5 评论
950浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6335浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 09:35 , Processed in 0.754753 second(s), Total 55, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号