|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
定時(shí)器的問題,怎么樣才能準(zhǔn)一點(diǎn)? |
| 作者:zhaor 欄目:單片機(jī) |
我用的是P12F675,內(nèi)部4MHZ OPTION = 0b10001000; //Set Timer0 不分頻 TMR0 = 0X13; // 中斷時(shí)間是250uS 256-250+3+2+8=0x13+ // 這是參考劉和平的書 T0IE = 1; //Timer0 Overflow Interrupt Enabled T0IF = 0; 試驗(yàn)結(jié)果比250us要大 |
| 2樓: | >>參與討論 |
| 作者: 伊萊克斯 于 2004/8/30 9:02:00 發(fā)布:
TMR0 += 0X07,注意用+= |
|
| 3樓: | >>參與討論 |
| 作者: yuntian 于 2004/8/30 20:01:00 發(fā)布:
實(shí)際上要+=9才行. |
|
| 4樓: | >>參與討論 |
| 作者: 張明峰 于 2004/8/30 20:32:00 發(fā)布:
我認(rèn)為應(yīng)該是+=8 256 - 250 + 2 |
|
| 5樓: | >>參與討論 |
| 作者: 伊萊克斯 于 2004/8/31 10:27:00 發(fā)布:
不知道,每個(gè)版本的MPLAB6.XX STOPWATCH(SIM)出的結(jié)果都不同 MPLAB6.50,+9跑10ms,STOPWATCH為整數(shù)。OPTION = 10001111,無分頻。 |
|
| 6樓: | >>參與討論 |
| 作者: zhaor 于 2004/8/31 14:02:00 發(fā)布:
TMR0 += 0X07,注意用+= 為什么這樣,我沒有看明白! 用內(nèi)部的rc,我加上校正,誤差小了! |
|
| 7樓: | >>參與討論 |
| 作者: computer00 于 2004/8/31 14:29:00 發(fā)布:
應(yīng)該是TMR0+=0X07跟用TMR0=TMR0+0X07運(yùn)行時(shí)間不一樣 |
|
| 8樓: | >>參與討論 |
| 作者: 伊萊克斯 于 2004/8/31 16:04:00 發(fā)布:
再RE TO zhaor: 這個(gè)誤差的產(chǎn)生與你用什么方式振蕩無關(guān) 中斷本來就不是能夠及時(shí)發(fā)生的,會(huì)出現(xiàn)1、2cycle的delay,所以TMR0的賦值不能使用直接賦值的方式而是使用ADDWF TMR0,F的方式。 to computer00 : C標(biāo)準(zhǔn)中 X += Y;與 X = X+Y;是同一語句好哇。 不信自己看反匯編。 |
|
| 9樓: | >>參與討論 |
| 作者: computer00 于 2004/8/31 18:58:00 發(fā)布:
哦……那應(yīng)該是我搞錯(cuò)了吧,哎……人老了,就不中用了…… 老糊涂了…… 樓主,抱歉。 |
|
| 10樓: | >>參與討論 |
| 作者: yuntian 于 2004/9/1 7:57:00 發(fā)布:
實(shí)際的產(chǎn)品是+=9 從手冊(cè)來看,也是延遲了三個(gè)指令周期,剛開始時(shí),我用+=8,結(jié)果不論仿真還是實(shí)際,都慢了,后來改為+=9之后,程序在4M下跑了幾天也沒見差,+=8的話早跑到哪去了. |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |