音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

中斷問題,想不通。。!是不是中斷復(fù)位問題啊???

作者:win2000_li 欄目:ARM技術(shù)
中斷問題,想不通。。!是不是中斷復(fù)位問題???
請教各位大俠,這個(gè)中斷計(jì)數(shù)我明明是只讓PWM2中斷輸出,為什么計(jì)數(shù)的確是PWM4,但是是PWM2輸出。按道理說應(yīng)該是PWM2計(jì)數(shù)(脈沖個(gè)數(shù)。)


void __irq PWM_Handler(void)
{
    if(PWMIR&0x01 == 0x01)//判斷中斷0是否中斷
     {
       d++;
       PWMIR |= 0x01;               //復(fù)位中斷0    
     }
       if(PWMIR&0x04 == 0x04)//判斷中斷2是否中斷
     {
      d2++;
      PWMIR |= 0x04;                //復(fù)位中斷2
     }
    if(PWMIR&0x100 == 0x100)//判斷中斷4是否中斷
     {
      d4++;
      PWMIR |= 0x100;                  //復(fù)位中斷4
     }
    if(PWMIR&0x400 == 0x400)//判斷中斷6是否中斷
     {
      d6++;
      PWMIR |= 0x400;                  //復(fù)位中斷6
     }
          
    VICVectAddr = 0x00;             // 通知VIC中斷處理結(jié)束
}


int main (void)
{    
       IRQEnable();
    PWMPR=0;
      PINSEL0 = 0x00008000;            //連接到PWM2
    PWMPCR |= 0x0400;               //設(shè)置PWM2輸出,并為單邊沿控制模式
    PWMMR0 = PwmSize;                
    PWMMR2 = PwmStartSize;
    PWMLER = 0x05;
    
    PWMMCR=(1<<0)|(1<<6);  //PWMMR2與PWMTC匹配時(shí)產(chǎn)生中斷
                           //PWMMR0與PWMTC匹配時(shí)產(chǎn)生中斷
   
  

// PWMIR=0x03;
  PWMTCR = 0x02;
  PWMTCR = 0x09;

  VICIntSelect =0x00;                  // 所有中斷通道設(shè)置為IRQ中斷
  VICVectCntl0 = (0x20|8);             //PWM優(yōu)先級最高    
  VICVectAddr0 = (int)PWM_Handler;     //VICDefVectAddr改為VICVectAddr0就可以進(jìn)入中斷
  VICIntEnable = (1<<8);               //使能PWM中斷請求
  while(1)
  {
   if(d2 == 20)
     ClosePwm(0)
     ;
  }
  return 0;
}


2樓: >>參與討論
win2000_li
自已頂!!怎么沒有人。
 
3樓: >>參與討論
win2000_li
老師,我按照你的方法調(diào)了一下。
結(jié)果是這樣的:
      首先,我把中斷
       PWMMCR=(1<<0)|(1<<6);  //PWMMR2與PWMTC匹配時(shí)產(chǎn)生中斷
                           //PWMMR0與PWMTC匹配時(shí)產(chǎn)生中斷
     改為PWMMCR = (1《 6);
程序進(jìn)入中斷了一次,而且PWMIR的值為0x04,但是在程序走到
if(PWMIR&0x04 == 0x04)時(shí),判斷結(jié)果是假,直接跳過,直到函
中斷函數(shù)結(jié)束,好像是跑飛了。


    

4樓: >>參與討論
zlgarm
中斷函數(shù)中的條件判斷上有語法錯(cuò)誤。
正確的程序如下:(注意if語句條件判斷多了一對()號)

void __irq PWM_Handler(void)
{
   
    
    if((PWMIR&0x01) == 0x01)//判斷中斷0是否中斷
    {
        d++;
       PWMIR = 0x01;               //復(fù)位中斷0   
        
    }

    if((PWMIR&0x04) == 0x04)//判斷中斷2是否中斷
    {
      d2++;
      PWMIR = 0x04;                //復(fù)位中斷2
    }

    if((PWMIR&0x100) == 0x100)//判斷中斷4是否中斷
    {
      d4++;
      PWMIR = 0x100;                  //復(fù)位中斷4
    }

    if((PWMIR&0x400) == 0x400)//判斷中斷6是否中斷
    {
      d6++;
      PWMIR = 0x400;                  //復(fù)位中斷6
    }

          
    VICVectAddr = 0x00;             // 通知VIC中斷處理結(jié)束
}


int main (void)
{    
    IRQEnable();
    PWMPR=0;
    PINSEL0 = 0x00008000;            //連接到PWM2
    PWMPCR |= 0x0400;               //設(shè)置PWM2輸出,并為單邊沿控制模式
    PWMMR0 = 10000.html">10000;                
    PWMMR2 = 1000;
    PWMLER = 0x05;
    
    PWMMCR=(1<<0)|(1<<6);  //PWMMR2與PWMTC匹配時(shí)產(chǎn)生中斷
                           //PWMMR0與PWMTC匹配時(shí)產(chǎn)生中斷
   
  

// PWMIR=0x03;
  PWMTCR = 0x02;
  PWMTCR = 0x09;

  VICIntSelect =0x00;                  // 所有中斷通道設(shè)置為IRQ中斷
  VICVectCntl0 = (0x20|8);             //PWM優(yōu)先級最高    
  VICVectAddr0 = (int)PWM_Handler;     //VICDefVectAddr改為VICVectAddr0就可以進(jìn)入中斷
  VICIntEnable = (1<<8);               //使能PWM中斷請求
  while(1)
  {
   if(d2 == 20)
    ClosePwm(0);
  }
  return 0;
  
}

5樓: >>參與討論
win2000_li
這個(gè)東東會(huì)不會(huì)影響進(jìn)入中斷計(jì)數(shù)問題??
uint32 PwmSize = Fpclk;
uint32 PwmStartSize = Fpclk/2;
uint32 d = 0, d2 = 0, d4 = 0, d6 = 0;
...........

   PWMMR0 = PwmSize;
   PWMMR2 = PwmStartSize;

..........

還有,老師,我用的精振是:11.0592M.html">11.0592M,那么它的Fpclk=11.0592啊???
            我的主頻是44.2368M

那么我的每一條指令為:1/44.2368M=22.6056ns
                     從此推出:11.0592M.html">11.0592M*22.6056ns = 24.9999ms
                              頻率:1/25ms = 40HZ

     我的計(jì)算是不是正確??????
   



6樓: >>參與討論
win2000_li
re:zlgarm老師,謝謝你的幫助,現(xiàn)在可以正常工作了。
老師,你看一下,這個(gè)周期與頻率計(jì)算的正確嗎????

因?yàn)槲椰F(xiàn)在手上沒有示波器,所以不能測量。

再次謝謝您,老師

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有誰知道39VF1601的32K保護(hù)區(qū)是干什么的?不保護(hù)行不行?
2103用哪個(gè)工程模板?
LPC2101能否用貴公司EASYJTAG調(diào)試,哪個(gè)模板?支持ISP否?
最近試用LPC2103,在ADS環(huán)境下編譯,用keil ULINK下載調(diào)試,不爽
我想換一個(gè)開發(fā)板?AT91RM9200換EasyARM2200!
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號