Re: [問題] 計時器如何使用

看板ASM (組合語言)作者 (IOU)時間13年前 (2011/08/01 23:21), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串3/3 (看更多)
我想請問一下 我目前看到 所有的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

08/02 00:23, , 1F
利用中斷的方式為什麼不精準?
08/02 00:23, 1F

08/02 04:55, , 2F
兩個方法可以很精確:1.純軟,詳細計算你每個指令的時間
08/02 04:55, 2F

08/02 04:56, , 3F
,然後強制程式一定要在特定的週期跑完一個LEAP,不管怎
08/02 04:56, 3F

08/02 04:57, , 4F
怎麼分岐,每個分支都要校正到總週期都一致。第二種方法:
08/02 04:57, 4F

08/02 04:58, , 5F
純硬派,再外面裝置各種精密計時器,然後透過CPU來操控
08/02 04:58, 5F

08/02 04:58, , 6F
硬體計時器的輸出(硬體轉接硬體,軟體只提供解碼資訊)
08/02 04:58, 6F

08/02 04:59, , 7F
兩種方法可以混合,但是只要有一方偷懶就無精密度可言
08/02 04:59, 7F

08/02 08:17, , 8F
要求的準度的量級在那邊?
08/02 08:17, 8F

08/02 22:10, , 9F
Pico Second :P (逃)
08/02 22:10, 9F

08/02 23:49, , 10F
不管軟還是硬最後都會遇上振盪器溫度之壁呀Radio control?
08/02 23:49, 10F

08/02 23:54, , 11F
使用Cs133 做9192.631770MHZ震盪...夠精確了吧 :P
08/02 23:54, 11F
文章代碼(AID): #1EDiHiSy (ASM)
文章代碼(AID): #1EDiHiSy (ASM)