看板 ASM 關於我們 聯絡資訊
各位大大新年快樂,小弟遇到一情形想問一下 設定一計數器,溢位時觸發中斷,在中斷服務函數裡把TIM_cycle++; 現在我有一task中有程式分別去抓取計數器計數值和cycle數值如下 --------------------------------- : Counter = TIM_GetCounter(TIMX); Cycle = TIM_cycle; : --------------------------------- 目前遇到的問題是,一旦getcounter的值是要溢位前的情況時(如9999,下一個溢位成0) 此時抓到的cycle的值會多1(溢位後),想來問各位大大有什麼方式可以如何避免此情況 呢?~謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.36.13 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1546416695.A.586.html
chuegou: 你在溢位中斷裡讓他+1 然後說想要避免溢位時不要+1 01/02 22:10
chuegou: 恩...把+1那行註解掉? 01/02 22:10
nc23nick: 哈~可能是我說的不清楚讓大大誤會,我是希望counter和 01/03 11:17
nc23nick: cycle值能對應正確~(抓到9999的cycle是還沒+1,抓到 01/03 11:18
nc23nick: 0001時的cycle是有+1),這情況並非每次數到9999時cycle 01/03 11:18
nc23nick: 都多+1,而是時正確時不正確,令人好生困擾~~QQ 01/03 11:19
god145145: 你是用RTOS? 01/03 17:07
大大沒錯是用RTOS~QQ
hizuki: 這邊沒有鎖沒有辦法,而且兩個不是原子操作 01/04 12:32
chuegou: 用violate修飾詞有用嗎 01/04 20:33
※ 編輯: nc23nick (61.216.36.13), 01/08/2019 15:57:33
twolight: volatile 01/03 17:37