|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
atmega128定時器的問題 |
| 作者:zhouxiaoju 欄目:單片機 |
我選了編譯器自動的定時器,開了一個匹配中斷,我在需要用定時器的時候,運行timers_init(),可是TCNT0 ==OCR0 時程序沒有去執(zhí)行中斷SIGNAL(SIG_OUTPUT_COMPARE0)里的程序,為什么? void timers_init(void) { //{{WIZARD_MAP(Timers) // Timer/Counter0 Clock source: SYSTEM Clock // Timer/Counter0 Clock VALUE: 31.250kHz // Timer/Counter0 Mode: CTC, TOP=OCR0 // Timer/Counter0 OUTPUT: Clear sbi(DDRB, 4); ASSR = 0x00; OCR0 = 0x0C; TCNT0 = 0x01; TCCR0 = 0x2e; // Timer/Counter1 Clock source: SYSTEM Clock // Timer/Counter1 Clock VALUE: Stopped // Timer/Counter1 Mode: Normal // Timer/Counter1 OUTPUT: A: Disconnected, B: Disconnected, C: Disconnected OCR1A = 0x0000; OCR1B = 0x0000; OCR1C = 0x0000; TCNT1 = 0x0000; TCCR1A = 0x00; TCCR1B = 0x00; TCCR1C = 0x00; // Timer/Counter2 Clock source: SYSTEM Clock // Timer/Counter2 Clock VALUE: Stopped // Timer/Counter2 Mode: Normal // Timer/Counter2 OUTPUT: Disconnected OCR2 = 0x00; TCNT2 = 0x00; TCCR2 = 0x00; // Timer/Counter3 Clock source: SYSTEM Clock // Timer/Counter3 Clock VALUE: Stopped // Timer/Counter3 Mode: Normal // Timer/Counter3 OUTPUT: A: Disconnected, B: Disconnected, C: Disconnected OCR3A = 0x0000; OCR3B = 0x0000; OCR3C = 0x0000; TCNT3 = 0x0000; TCCR3A = 0x00; TCCR3B = 0x00; TCCR3C = 0x00; TIMSK = 0x02; ETIMSK = 0x00; //}}WIZARD_MAP(Timers) } SIGNAL(SIG_OUTPUT_COMPARE0) { } |
| 2樓: | >>參與討論 |
| 作者: atme162 于 2006/4/6 18:04:00 發(fā)布:
ATMEGA128定時器的問題 我看了程序,TIMER的初始化程序沒有錯誤, 還是在其實設(shè)置找原因吧, 不知道你設(shè)定了中斷優(yōu)先級沒? 在執(zhí)行void timers_init(void)后總中斷開了嗎? 我?guī)湍闼懔艘幌?br>//{{WIZARD_MAP(Timers) // Timer/Counter0 Clock source: SYSTEM Clock // Timer/Counter0 Clock VALUE: 31.250kHz // Timer/Counter0 Mode: CTC, TOP=OCR0 // Timer/Counter0 OUTPUT: Clear sbi(DDRB, 4); ASSR = 0x00; OCR0 = 0x0C; TCNT0 = 0x01; TCCR0 = 0x2e; TIMER0定的時間為0.57MS左右,你可以Clock VALUE小一點,定時長些試一下 |
|
| 3樓: | >>參與討論 |
| 作者: hamel 于 2009/11/1 10:22:15 發(fā)布:
設(shè)置錯誤。 TCCR0應(yīng)該設(shè)置成0x4e. 應(yīng)為ATmega128的寄存器比較怪,WGM00和WCGM01不在一起,中間隔了COM00和COM01 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |