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

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | 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

求助:關(guān)于AW60的PWM中斷問(wèn)題。進(jìn)不了中斷。

作者:mc9s08aw60 欄目:單片機(jī)
求助:關(guān)于AW60的PWM中斷問(wèn)題。進(jìn)不了中斷。
/******************************************************************************
*
*       COPYRIGHT (C) 2006 FREESCALE SEMICONDUCTOR, Inc.
*       All Rights Reserved
*
* Filename:     DEMO9S08AW60_TEST.c
* Author:       Daniel Kruczek
* Revision:     3.0
*
* DESCRIPTION:    Flashes LED_BAR7 and LED_BAR0 turns on and off according to
*               the state of SW1.
*
* Notes:        Also serves as an example for the 9S08AW60 DEMO board.
*               Created using CodeWarrior 5.0 for HC(S)08.
******************************************************************************/
// ===================================================================
// Macro Functions definitions
// ===================================================================
// The setting in project preference must be checked
// CHAR should be unsigned 8 bit

typedef    unsigned CHAR    muint8;
typedef    unsigned SHORT    muint16;
typedef    unsigned LONG    muint32;

typedef    CHAR            mint8;
typedef    SHORT            mint16;
typedef    LONG            mint32;

// To Clear or Set SINGLE bits in a byte variable.
#define    b_SetBit(bit_ID, varID)        (varID |= (muint8)(1<<bit_ID))
#define    b_ClearBit(bit_ID, varID)    (varID &= ~(muint8)(1<<bit_ID))
#define    b_XorBit(bit_ID, varID)        (varID ^= (muint8)(1<<bit_ID))

// To Clear or Set SINGLE bits in a word(16-bit) variable.
#define    w_SetBit(bit_ID, varID)        (varID |= (muint16)(1<<bit_ID))
#define    w_ClearBit(bit_ID, varID)    (varID &= ~(muint16)(1<<bit_ID))
#define    w_XorBit(bit_ID, varID)        (varID ^= (muint16)(1<<bit_ID))


#include <hidef.h>             /* EnableInterrupts macro  */
#include "derivative.h" /* include peripheral declarations */

muint8   flag;
/*
// ---------------------------------------------------------------------------
// Peripheral Initialization Routine
// ---------------------------------------------------------------------------
*/
void PeriphInit(void)
{
    SOPT  = 0x00;     /* Disable COP    */
    PTCDD = 0x10;  
    PTCPE = 0xEF;  
    
    PTFDD = 0xFF;     
    PTFD  = 0x00;
    flag=1;                        
}

/***** Init_TPM init code *****/
  
void TPM_init(void)  
{

  //TPM1SC = 0x00;
  TPM1SC = 0x00;   //TPM2SC  
TPM1MOD = 0x5FFF;                                                                                      
  TPM1C2V = 0x0FF;            
  (void)(TPM1C2SC == 0);               

  TPM1C2SC = 0x68;                                                           
  TPM1C3V = 0x0FFF;           
  (void)(TPM1C3SC == 0);             
  //TPM1C2SC = 0x28;
  TPM1C3SC = 0x28;
                     
  (void)(TPM1SC == 0);    
  
  TPM1SC = 0x0F;                              
}

void main(void) {
  
     
  PeriphInit();            /* Microcontroller initialization */
  TPM_init();
  EnableInterrupts; /* enable interrupts */
  
  
  // Begin LED/Switch TEST
  for(;;)            
  {                                                
    if (PTCD_PTCD2==0x01)
        b_ClearBit(2,PTFD);
    else
        b_SetBit(2,PTFD);
    
    b_ClearBit(7,PTFD);
        b_ClearBit(6,PTFD);
        b_ClearBit(5,PTFD);

        
    } /* loop forever */
}/* end main(void) */

interrupt void PWMCH2_ISR(void)
{
    TPM1C2SC_CH2IE=0X00;
    TPM1C2SC&=0xEF;


    flag++;

     if(flag<=1)
     {
        b_SetBit(7,PTFD);
     } else {
       flag=0;
       b_ClearBit(7,PTFD);
     }

     TPM1C2SC_CH2IE=0X01;
}


2樓: >>參與討論
mc9s08aw60
TPM1通道2。。。請(qǐng)教各位看看中斷程序?qū)幔?br>在PRM文件中我設(shè)置:
VECTOR 7  PWMCH2_ISR

3樓: >>參與討論
JerryBJ
是進(jìn)不了中斷還是進(jìn)去了出不來(lái)?
我看是出不來(lái)。中斷標(biāo)志CHnF的清除方法是這樣的:在CHnF=1時(shí),首先讀TPMxCnSC,然后向CHnF位寫0。
所以進(jìn)入中斷后,應(yīng)該這樣來(lái)清除CHnF:
interrupt void PWMCH2_ISR(void)
{
    unsigned CHAR tmp;
    
    tmp = TPM1C2SC;
    TPM1C2SC&=0x7F;
// ........

否則,CHnF一直為LOGIC 1,退出中斷后馬上又進(jìn)來(lái)了。

4樓: >>參與討論
mc9s08aw60
謝謝。。。我試試。
 
5樓: >>參與討論
mc9s08aw60
.........
謝謝斑竹,解決了。。。

* - 本貼最后修改時(shí)間:2007-2-9 15:43:05 修改者:mc9s08aw60

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求助:open source BDM調(diào)試QD4
菜鳥求助S08的SPI與74HC595配合問(wèn)題
freescale 16 位帶MAC的單片機(jī)那一款較好!
請(qǐng)教張工,怎么使用MC68HC908MR32的pwmmc做三相電機(jī)的spwm調(diào)速
飛撕卡爾的資料不好找,才可以控制個(gè)燈啊
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)