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

作者: asdrtyjkl925 (阿斯拉)   2017-04-12 17:21:28
因為想做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則是無影響呢?
作者: chuegou (chuegou)   2017-04-12 19:14:00
看起來是timer的中斷flag在isr裡沒清掉...可是你又說gpio確定是1us
作者: asdrtyjkl925 (阿斯拉)   2017-04-12 19:57:00
對耶!!我真的沒清Flag!!卡住的原因應該是這個感謝提醒:) 不過也真的有量到1us,明天再看看是怎麼回事
作者: m490521 (阿青)   2017-04-12 20:58:00
tick就是很簡單的timer通常會拿來做RTOS的timebasetimer除了記時,通常還可以跟其他東西連動比如觸發adc轉換,pwm,capture等
作者: asdrtyjkl925 (阿斯拉)   2017-04-13 09:23:00
了解 感謝樓上:)昨天可能眼殘了,今天仔細一看timer沒清flag的話用gpio量每次的間隔才0.87us XD有清flag就真的是1us,感謝大大指點迷津:D
作者: chuegou (chuegou)   2017-04-13 12:48:00
systick設定有問題吧? 差4倍不合理阿
作者: asdrtyjkl925 (阿斯拉)   2017-04-13 16:48:00
好喔 設定是直接Copy example的 還沒仔細去看 等等回去公司後來逐行突破:)近期要處理其它案子,這個問題要暫時先擱置了ˊˋ

Links booklink

Contact Us: admin [ a t ] ucptt.com