作者ED9 (IOU)
看板ASM
标题Re: [问题] 计时器如何使用
时间Mon Aug 1 23:21:12 2011
我想请问一下
我目前看到 所有的Timer应用产生一亮一暗
都离不开回圈 也就是i++或i--
不过这样会造成timer计时不是最精确的
请问有其他方法吗???
谢谢...
※ 引述《MasterChang (我爱ASM)》之铭言:
: ※ 引述《wayne78117 (kid1412)》之铭言:
: : 我找了书上面有关计时器的内容
: : 有的是写什麽先除一个数 之後又取mod什麽的
: : 有的是他的计时时间是固定的 可能1000ms一次
: : 不过我现在要记时的时间都不一定
: 1.先做出10ms的计时器中断
: 2.建立一个Led控制的变数
: ex: int led_counter[3] = {500,800,700};
: 每次10ms中断发生时 led_counter[n] 减一
: 当led_counter[n]小於100时点亮led,当led_counter[n]等於0时
: 重置led_counter[n]的值...
: : 像是我想让第一个灯亮一下後关掉 之後隔5秒
: : 第二个灯亮一下後关掉 隔8秒
: : 第三个灯亮一下後关掉 隔7秒
: : 第一个灯亮一下後关掉 等等 ......
: : 哪个灯什麽时候亮 隔多久亮 这些资讯我都有
: : 这些资讯都用成矩阵存在C里面了
: : 那我计时器该怎麽写呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.103.119
1F:→ kikiqqp:利用中断的方式为什麽不精准? 08/02 00:23
2F:推 WolfLord:两个方法可以很精确:1.纯软,详细计算你每个指令的时间 08/02 04:55
3F:→ WolfLord:,然後强制程式一定要在特定的周期跑完一个LEAP,不管怎 08/02 04:56
4F:→ WolfLord:怎麽分岐,每个分支都要校正到总周期都一致。第二种方法: 08/02 04:57
5F:→ WolfLord:纯硬派,再外面装置各种精密计时器,然後透过CPU来操控 08/02 04:58
6F:→ WolfLord:硬体计时器的输出(硬体转接硬体,软体只提供解码资讯) 08/02 04:58
7F:→ WolfLord:两种方法可以混合,但是只要有一方偷懒就无精密度可言 08/02 04:59
8F:推 ruemann:要求的准度的量级在那边? 08/02 08:17
9F:→ WolfLord:Pico Second :P (逃) 08/02 22:10
10F:→ kikiqqp:不管软还是硬最後都会遇上振荡器温度之壁呀Radio control? 08/02 23:49
11F:推 WolfLord:使用Cs133 做9192.631770MHZ震荡...够精确了吧 :P 08/02 23:54