作者lin3365 (Lin)
看板Electronics
标题[问题] 28027 ECAP问题
时间Sat Sep 6 14:01:10 2014
请问各位专家,我目前想要用ECAP来做零点侦测,
我测试的方法是使用讯号产生器,产生一个方波给ECAP
然後当ECAP读到HIGH时,GPIO1为HIGH,
读到LOW时,GPIO1为LOW。
但是我实际执行时,却只读的到HIGH,GPIO1就一直保持高电位
好像没有侦测到进ECAP那个方波的下降点,程式如下,麻烦高手帮解决
初始化
void InitECAP(void)
{
asm(" EALLOW");
ECap1Regs.ECEINT.all=0;
ECap1Regs.ECCLR.all=0xFFFF;
ECap1Regs.ECCTL1.bit.CAPLDEN=0; // Disable CAP1-CAP4 register loads
ECap1Regs.ECCTL2.bit.TSCTRSTOP=0;// Make sure the counter is stopped
ECap1Regs.ECCTL2.bit.CAP_APWM=0;
ECap1Regs.ECCTL2.bit.CONT_ONESHT=0;
ECap1Regs.ECCTL2.bit.STOP_WRAP=1;
ECap1Regs.ECCTL1.bit.CAP1POL=0;// Rising edge
ECap1Regs.ECCTL1.bit.CAP2POL=1;// Falling edge
ECap1Regs.ECCTL1.bit.CAP3POL=0;// Rising edge
ECap1Regs.ECCTL1.bit.CAP4POL=1;// Falling edge
ECap1Regs.ECCTL1.bit.CTRRST1=1;
ECap1Regs.ECCTL1.bit.CTRRST2=1;
ECap1Regs.ECCTL1.bit.CTRRST3=1;
ECap1Regs.ECCTL1.bit.CTRRST4=1;
ECap1Regs.ECCTL2.bit.SYNCI_EN=0; //Disable sync-in option
ECap1Regs.ECCTL2.bit.SYNCO_SEL=3; //Disable sync out signal
ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter
ECap1Regs.ECEINT.bit.CEVT2 = 3; // 2 events = interrupt
PieCtrlRegs.PIEIER4.bit.INTx1=1;
IER |= M_INT4;
asm(" EDIS");
}
中断副程式
interrupt void ECAP1_INT_ISR(void) // PIE4.1 @ 0x000D70 ECAP1_INT (ECAP1)
{
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; // Must acknowledge the PIE group
if( ECap1Regs.CAP1);
{
GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1; // Toggle the pin
}
if (ECap1Regs.CAP2);
{
GpioDataRegs.GPATOGGLE.bit.GPIO1 = 0; // Toggle the pin
}
ECap1Regs.ECCLR.bit.CEVT1=1;
ECap1Regs.ECCLR.bit.CEVT2=1;
ECap1Regs.ECCLR.bit.CEVT3=1;
ECap1Regs.ECCLR.bit.CEVT4=1;
ECap1Regs.ECCLR.bit.INT=1;
ECap1IntCount = 0 ;
asm (" ESTOP0"); // Emulator Halt instruction
while(1);
}
感谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.124.43.71
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Electronics/M.1409983272.A.AD2.html
※ 编辑: lin3365 (140.124.43.71), 09/06/2014 14:02:53
1F:推 beggerchou: 使用ECAP这根脚有没有用电阻PULL-UP或PULL-LOW? 09/06 15:32
2F:→ lin3365: 我是直接从讯号产生器给ecap这根脚 没接电阻 09/06 15:40
3F:推 beggerchou: 数位输入脚侦测不要让脚位处於float状态 还有记得要 09/07 09:26
4F:→ beggerchou: 跟讯号产生器共地 09/07 09:27