|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
定時不準的問題,請教各位大人!感謝!! |
| 作者:liyq 欄目:單片機 |
我現(xiàn)在的單片機c程序中,有多個周期定時的任務,F(xiàn)在是這樣做的,用timer0做了一個中斷,1ms進一次中斷,對g_t_timer++,g_t_timer是unsigned int型。 在主程序中,每個周期任務的開始時間timer=g_t_timer; 如果,g_t_timer-timer>任務周期,那么就開始執(zhí)行周期性的任務。這個在多數(shù)情況下沒問題,但是如果周期特別長時,如30s的時候,定時就不準了。懷疑是減的時候出了問題,比如溢出等等。請問存在這種可能嗎?現(xiàn)在可以確定的是,1ms進中斷是沒問題的。我用的單片機是PIC18F系列的,編譯器mcc18。另外,多個定時器之前切換會存在問題,或者那位大俠有更好的方法解決這類定時問題?多謝了。 |
| 2樓: | >>參與討論 |
| 作者: leezongfan 于 2007/1/8 22:25:00 發(fā)布:
直接在中斷里判斷時間。 |
|
| 3樓: | >>參與討論 |
| 作者: tdh03z 于 2007/1/8 23:53:00 發(fā)布:
不知你的定時精度要達到多少 30S的任務如果需要比較高的精度的話,建議在中斷中執(zhí)行 主要看那個任務需要高的定時精度,1ms定時中斷太頻繁了 |
|
| 4樓: | >>參與討論 |
| 作者: liyq 于 2007/1/9 10:58:00 發(fā)布:
我定時精度不是很高,加減10%的精度。 我程序是can總線通訊,有多個發(fā)送周期,比如100MS,200ms,10ms,1s等。但是有個任務的周期是30s。如果我統(tǒng)一用g_t_timer減timer來判斷周期的的話,這個30s定時有時候就短了,可能只有15s。 |
|
| 5樓: | >>參與討論 |
| 作者: yewuyi 于 2007/1/9 12:23:00 發(fā)布:
求所有周期的公約數(shù)…… |
|
| 6樓: | >>參與討論 |
| 作者: tdh03z 于 2007/1/9 19:42:00 發(fā)布:
100MS為一個基準 我一般利用一個定時器產(chǎn)生幾個時間標志位,在主程序中根據(jù)標志位執(zhí)行相應的任務,執(zhí)行完后清相應的時間標志位。100MS主程序應該循環(huán)了幾十次了吧。對一般的任務應該足夠了,30S又不是很長,你的程序判斷肯定有問題 |
|
| 7樓: | >>參與討論 |
| 作者: liyq 于 2007/1/10 10:32:00 發(fā)布:
程序里面最小有10ms的定時,也有17ms的定時 現(xiàn)在可能是pwm的timer2中斷,影響了timer0定時器。不開timer2定時器就沒問題了。 * - 本貼最后修改時間:2007-1-10 10:35:04 修改者:liyq |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |