作者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