[問題] timer和tick有何不同?

看板ASM作者 (阿斯拉)時間7年前 (2017/04/12 17:21), 7年前編輯推噓5(5012)
留言17則, 3人參與, 最新討論串1/1
因為想做delay 1us的功能 目前用的MCU(TI MSP432P401R) 沒辦法讓用類似直接數cpu cycle的方式來delay 本想說只好用timer來達成 但是看到官方提供的example裡有個東西叫做"SysTick" 看它的機制和timer很像,可以說是功能精簡的timer吧 然後做了個實驗 tick和timer都設定每間隔1us就產生一次interrupt (tick和timer有用gpio toggle的方式量過都確定是1us) 然後在ISR裡都只執行i++這一行指令 分別跑一次程式,看結果有何差異 開timer、關tick的時候,只要enable timer interrupt 程式就會陷在timer interrupt ISR裡,再也沒辦法跑回到main 而關timer、開tick時,即使enable tick interrupt 程式依然能回到main,繼續跑之後的while(1) loop都沒問題 請問這兩者一樣都是間隔1us產生interrupt 為什麼用timer程式就會被卡死 而tick則是無影響呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.239.113 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1491988890.A.80A.html ※ 編輯: asdrtyjkl925 (60.251.239.113), 04/12/2017 17:45:28

04/12 19:14, , 1F
看起來是timer的中斷flag在isr裡沒清掉...
04/12 19:14, 1F

04/12 19:16, , 2F
可是你又說gpio確定是1us
04/12 19:16, 2F

04/12 19:57, , 3F
對耶!!我真的沒清Flag!!卡住的原因應該是這個
04/12 19:57, 3F

04/12 19:59, , 4F
感謝提醒:) 不過也真的有量到1us,明天再看看是怎
04/12 19:59, 4F

04/12 19:59, , 5F
麼回事
04/12 19:59, 5F

04/12 20:58, , 6F
tick就是很簡單的timer
04/12 20:58, 6F

04/12 20:58, , 7F
通常會拿來做RTOS的timebase
04/12 20:58, 7F

04/12 21:02, , 8F
timer除了記時,通常還可以跟其他東西連動
04/12 21:02, 8F

04/12 21:04, , 9F
比如觸發adc轉換,pwm,capture等
04/12 21:04, 9F

04/13 09:23, , 10F
了解 感謝樓上:)
04/13 09:23, 10F

04/13 11:52, , 11F
昨天可能眼殘了,今天仔細一看timer沒清flag的話
04/13 11:52, 11F

04/13 11:52, , 12F
用gpio量每次的間隔才0.87us XD
04/13 11:52, 12F

04/13 11:52, , 13F
有清flag就真的是1us,感謝大大指點迷津:D
04/13 11:52, 13F
因為我也有用OLED(控制的IC是SSD1305) timer清了flag之後 肉眼感覺上畫面更新速率比用tick還快 所以另外做了量測: tick和timer在設定間隔1us 將OLED畫面填滿 分別計算兩者情況下所需要的時間 開timer,關tick,所需時間為22.8ms 關timer,開tick,所需時間為99.0ms 兩者都關掉,所需時間為22.6ms 這樣看來用tick會比較影響系統效能 是因為這顆MCU的特性嗎? 是否若換了另一顆MCU,可能就會有不同的結果? ※ 編輯: asdrtyjkl925 (60.251.239.113), 04/13/2017 11:53:33

04/13 12:48, , 14F
systick設定有問題吧? 差4倍不合理阿
04/13 12:48, 14F

04/13 16:48, , 15F
好喔 設定是直接Copy example的 還沒仔細去看 等
04/13 16:48, 15F

04/13 16:48, , 16F
等回去公司後來逐行突破:)
04/13 16:48, 16F

04/17 19:28, , 17F
近期要處理其它案子,這個問題要暫時先擱置了ˊˋ
04/17 19:28, 17F
文章代碼(AID): #1OxV6QWA (ASM)