作者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://www.ptt.cc/bbs/Electronics/M.1409983272.A.AD2.html
※ 編輯: lin3365 (140.124.43.71), 09/06/2014 14:02:53
推 beggerchou: 使用ECAP這根腳有沒有用電阻PULL-UP或PULL-LOW? 09/06 15:32
→ lin3365: 我是直接從訊號產生器給ecap這根腳 沒接電阻 09/06 15:40
推 beggerchou: 數位輸入腳偵測不要讓腳位處於float狀態 還有記得要 09/07 09:26
→ beggerchou: 跟訊號產生器共地 09/07 09:27