lgl_debug 发表于 2009-8-27 00:03:29

F9222 TM00 PWM写数据与实际PWM宽不成比例

F9222 TM00 PWM写数据与实际PWM宽不成比例,有时正确,有时不正确.
配置如下:

void TM00_Init(void)
{
TMC00 = 0x00;
   
/* TM00 PPG output */
PRM00 = 0x00;/* fXP/2^8 */
TOC00 = 0x1B; //0x12
CR000 = 20; //Cycle
CR010 = 8; //Dute
TMIF000 = 0; // 清中断标志位
TMMK000 = 1; // 屏蔽中断

/* Set TO00 pin */
PM3 &= 0xFD;
P3 &= 0xFD;       
CRC00 = 0;
TMC00 |= 0x0C;/* clear & start occurs on match between TM00 and CR000 */
}

下面实现的功能是用串口控制PWM的比例,W ,S控制PWM比例,可以在控制的过程中CR010的实际数值与P31口,输出PWM比例有时突然跳变不成比例,
是否在CR010寄存器改变后,需要其他的操作?...........

#pragma vector = INTSR6_vect
__interrupt void MD_INTSR6(void)
{
UCHAR rx_data,c;
//UCHAR err_type;

// err_type = (UCHAR)(ASIS6 & 0x07);
rx_data = RXB6;
gUart6RxLen++;   
//OSPT00 = 1;   

    if (gUart6RxLen > 0)
    {
   //TMC00 = 0x00;
    c= TOC00;
    TOC00=0;
   switch(rx_data)
   {
    case 'W'://++
    case 'w':
   if(CR010 < (CR000-1)) CR010++; else CR010=0; break;
   
    case 'S'://--
    case 's':
    if(CR010 > 0) CR010--; else CR010=(CR000-1); break;
   }
      TOC00=c;
//   while(TM00);
//   CR010=CR010;
//   while(TM00);

    }

}

lgl_debug 发表于 2009-8-27 12:28:40

有人用过PWM吗?

lgl_debug 发表于 2009-8-28 16:49:42

? ?
页: [1]
查看完整版本: F9222 TM00 PWM写数据与实际PWM宽不成比例