我要用TOUT3口发PWM,
我是在键盘驱动初始化的时候,顺便加上了对定时器的初始化的。
开机的时候运行到键盘初始化那里,进行定时器初始化,
对TCON,TCNTB,TCMPB等赋值,设置成自动装载模式,并更新down-counter的值,然后启动计时。
从示波器里看到运行到TOUT3口确实发出了PWM波,但只有6到7个周期,之后端口成低电平。
通过打印信息,看到TCON的Timer3的启动位,在开始一段时间是'1',但后来就'0'了,就是停止计时了。因此就没方波了。
问题是计时启动后,我并没有对定时器作任何的处理!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
于是我创建了一个线程,在线程里不断检测TCON的Timer3的启动位的状态,是0的话就置1,启动计时器。
打印信息表明:Timer3的启动位频频被置0,我需要不断的给它置1,才能发出PWM,
而且可能是由于检测有时延的原因,发出的PWM波形跟我设定的不一致了!!
我想问一下可能是什么地方频频的把timer3的启动位清零??这个问题有什么好的解决方法或建议??谢谢
极有可能是在初始化后,又有其他的地方做了初始~ 或者说TOUT3被其它的占用!
如果是流驱动的话,下个调式助手看看
[url=http://www.cnblogs.com/we-hjb/archive/2009/05/17/1458725.html][/url]
-------
系统跑起来后,把DLL拷进去,动态加载,然后看示波器的波形
我检查了一下,是触摸屏驱动里用到了计时器,
发出的PWM波应该是用来调节背光的(99Hz,与LCD背光PWM频率吻合)。
把触摸屏驱动里的设置定时器的语句删掉后,触摸屏工作依然正常。
但是我想问一下为什么触摸屏被触摸的时候要调节背光??
三星的驱动是这么写的,可能有它的用途呢。
用GPB0试试吧,GPB1是不是也引出来做GPIO
可能是防止电源芯片功率突然增加,因为触摸屏也比较耗电的,因此调节一下背光,让背光功率减小一些。