打印

求助:关于AW60的PWM中断问题。进不了中断。

[复制链接]
2308|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mc9s08aw60|  楼主 | 2007-1-30 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM, se, TI, ui, TE
/******************************************************************************
*
*       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; 
}

相关帖子

沙发
mc9s08aw60|  楼主 | 2007-1-30 16:40 | 只看该作者

TPM1通道2。。。请教各位看看中断程序对吗?

在PRM文件中我设置:
VECTOR 7  PWMCH2_ISR

使用特权

评论回复
板凳
JerryBJ| | 2007-1-30 17:11 | 只看该作者

是进不了中断还是进去了出不来?

我看是出不来。中断标志CHnF的清除方法是这样的:在CHnF=1时,首先读TPMxCnSC,然后向CHnF位写0。
所以进入中断后,应该这样来清除CHnF:
interrupt void PWMCH2_ISR(void) 
{
    unsigned char tmp;
    
    tmp = TPM1C2SC;
    TPM1C2SC&=0x7F;
// ........

否则,CHnF一直为logic 1,退出中断后马上又进来了。

使用特权

评论回复
地板
mc9s08aw60|  楼主 | 2007-1-30 17:15 | 只看该作者

谢谢。。。我试试。

使用特权

评论回复
5
mc9s08aw60|  楼主 | 2007-1-30 17:18 | 只看该作者

.........

谢谢斑竹,解决了。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

133

帖子

0

粉丝