| 帮忙看看这个烂定时器 |
我想要用定时器0来实现比较短的定时,10us,所以我选择了模式2 书上说的公式是(256-x)* 1us = 10us,我的CPU是51的6倍,所以我用了公式(256-x) / 6 = 10 ,然后用keil进行仿真,结果时间比我设置的10us要长的多。我的keil工程文件里头用的是对应的芯片,哪位大侠知道这是为什么? 作者:xin___xin 2008-1-24 9:47:00 |
|
| 回复1 问题没有表达清楚167521 |
看看你的晶振,每个机器周期的执行时间是多少再说 如果允许定时器计数数减去中断10US里面花的时间还剩下有20个周期以上,我的程序结构可以帮助你做到,全局均衡运行。否则,即使你做到了,其他任务没法跑,CPU几乎呈死机状态,因为这动作太快。
作者:ldy216 2008-1-24 9:58:00 |
|
| 回复2 timer原理167522 |
CPU是51的6倍,所以设置定时器的公式就给改了? 多看看原理,定时器怎么实现的
作者:mapleyang 2008-1-24 10:14:00 |
|
| 回复3 到底是定时器烂还是人烂啊?167523 |
建议去重修小学数学
作者:xwj 2008-1-24 10:14:00 |
|
| 回复4 谢谢楼上大侠167524 |
我用的是philips 的p89LPC934,晶体是12m的,他的指令周期是1/6m,所以我才改的公式,这个应该没有问题吧? 人当然是比定时器烂,呵呵。 我的keil编译器也是这么设置的,仿真出来的时间总是对不上,我再试试
作者:xin___xin 2008-1-24 11:16:00 |
|
| 回复5 跟指令周期有什么关系!167525 |
跟指令周期有什么关系!
作者:dandywang 2008-1-24 14:44:00 |
|
| 回复6 问题找到了,给大家通报一下167526 |
首先是设置失误,导致自己以为定时器工作模式2,其实人家工作在模式1当中,寒自己一个;设置完成以后发现,每次调用定时的时候发现第一次调用总是时间不对,然后就对了。。。最后发现,定时器控制不能只用ET来控制,TR也要用的时候才开始计数,教训啊教训
作者:xin___xin 2008-1-24 14:45:00 |
|
| 回复7 re dandywang167527 |
我用的单片机的定时器用的就是PCLK计数
作者:xin___xin 2008-1-24 14:51:00 |
|
| 回复8 PCLK是什么167528 |
PCLK是什么
作者:dandywang 2008-1-24 15:18:00 |
|
| 回复9 晶振频率不对167529 |
晶振频率不对
作者:ayb_ice 2008-1-24 17:48:00 |
|
| 回复10 re167530 |
to dandywang 这是我用的片子的时钟图 to ayb_ice 因为我现在是软件仿真,晶体是设置对了的 另外,一点小经验,写给自己也给跟我一样做了几年都是菜鸟的人,有时候把问题详细表达出来,问题就解决了一半了,呵呵 
作者:xin___xin 2008-1-25 11:00:00 |
|