打印
[ZLG-MCU]

LPC900 的PWM输出禁止问题

[复制链接]
1945|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoxin1986|  楼主 | 2009-9-20 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我需要在应用中快速的开/关 T1的PWM输出
目前想到的方法有这么几种
1 对TH1填入0x00/0xFF ,不关闭T1。
2 对TR1置位0/1。
3 对P0M1/P0M2进行设置,控制IO输出。
不知道哪一种方法最快最可靠?
方法1 的重新装填会不会需要等到下一个256的时钟周期开会生效?
方法2肯定有问题,如果直接关闭TR1,可能T1停止后,P0^7的电平是不定的。
方法3不知道重新设置I/O会不会有较长时间的延迟。

希望高手们给个意见。

相关帖子

沙发
linhai1986| | 2009-9-20 22:15 | 只看该作者
用第二种方法

// Header:
// File Name:
// Author:
// Date:


#include "reg935.h"
#define uchar unsigned char
#define uint unsigned int


sbit P00 =P0^0;
sbit P01 =P0^1;
sbit P02 =P0^2;
sbit P03 =P0^3;
sbit P04 =P0^4;
sbit P05 =P0^5;
sbit P06 =P0^6;
sbit P07 =P0^7;

sbit P10 =P1^0;
sbit P11 =P1^1;
sbit P12 =P1^2;
sbit P13 =P1^3;
sbit P14 =P1^4;
sbit P15 =P1^5;
sbit P16 =P1^6;
sbit P17 =P1^7;

sbit P20 =P2^0;
sbit P21 =P2^1;
sbit P22 =P2^2;
sbit P23 =P2^3;
sbit P24 =P2^4;
sbit P25 =P2^5;
sbit P26 =P2^6;
sbit P27 =P2^7;

使用特权

评论回复
板凳
linhai1986| | 2009-9-20 22:15 | 只看该作者
void Timeini(void)
{
TH0 =0xff;
TL0 =0xff;
TMOD &=0xF0;
TMOD |=0x02;
TR0 =1;
AUXR1 = 0X10; //溢出相应的端口翻转
// EA = 1;
// ET1 = 1;
}



void main (void)
{
unsigned char x,y;
P0M1 = 0x00;
P0M2 = 0x00;

P1M1 = 0x00;
P1M2 = 0x00;

P2M1 = 0x00;
P2M2 = 0x00;

P3M1 = 0x00;
P3M2 = 0x00;

Timeini();
while(1)
{
TR0 = ~TR0;
//for(x= 0; x<255;x++)
//
for(y= 0 ;y<255 ; y++);


}
}

使用特权

评论回复
地板
xiaoxin1986|  楼主 | 2009-9-20 23:52 | 只看该作者
我实验结果表明,TR0=0之后,根据占空比不同,PIN上的电平是不定的。。。。。。

IO用的是开漏输出模式。

使用特权

评论回复
5
linhai1986| | 2009-9-22 13:39 | 只看该作者
那你停止计时器后再执行端口赋值处理啊。

使用特权

评论回复
6
xiaoxin1986|  楼主 | 2009-9-22 14:08 | 只看该作者
停止计时器后赋值不可以的。你停止T1,接着执行赋值需要等待一段时间。

我现在用 TH1控制。

使用特权

评论回复
7
linhai1986| | 2009-9-23 00:53 | 只看该作者
这个我没有试过,我也不清楚

使用特权

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

本版积分规则

176

主题

1487

帖子

0

粉丝