|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
緊急求教:如何用mega8輸出一個頻率為60hz的方波 |
| 作者:ipman 欄目:單片機 |
要求可動態(tài)調(diào)整高電平的寬度,我用一個16ms的定時器,不知如何動態(tài)控制輸出高電平的寬度,難道采用延時?那會不會影響精度? |
| 2樓: | >>參與討論 |
| 作者: dfgeoff 于 2004/12/17 19:31:00 發(fā)布:
M8有PWM,干嗎直接用定時器? 你的應該是相位修正PWM模式,很easy的?磀atasheet里面定時器工作模式里,很詳細。 |
|
| 3樓: | >>參與討論 |
| 作者: zdw77 于 2004/12/17 21:00:00 發(fā)布:
pwm 用pwm |
|
| 4樓: | >>參與討論 |
| 作者: ipman 于 2004/12/18 15:49:00 發(fā)布:
pwm信號輸出端口是固定的嗎?我的線路不好改啊! |
|
| 5樓: | >>參與討論 |
| 作者: dfgeoff 于 2004/12/18 16:06:00 發(fā)布:
PWM輸出端口固定,你看看datasheet,或者—— 如果你現(xiàn)在電路中作為PWM的那個pin與固定PWM的pin不同的話,可以這樣做: 定時器作為PWM生成模式時,同樣有中斷,你只要允許中斷,然后在這個中斷里反轉(zhuǎn)你現(xiàn)在電路中作為PWM的那個pin的狀態(tài)就行。 |
|
| 6樓: | >>參與討論 |
| 作者: 〾⿰⿱⿲⿳ 于 2004/12/18 18:09:00 發(fā)布:
定時器的CTC模式可以方波直接輸出到IO口 |
|
| 7樓: | >>參與討論 |
| 作者: madaha 于 2004/12/18 21:47:00 發(fā)布:
在OC1中斷中輸出,用OC1我感覺還好些。 |
|
| 8樓: | >>參與討論 |
| 作者: ipman 于 2004/12/18 21:58:00 發(fā)布:
這樣會增加cpu資源的使用嗎 |
|
| 9樓: | >>參與討論 |
| 作者: madaha 于 2004/12/19 9:16:00 發(fā)布:
如果OC1A輸出,根本不需要理它。 在配置了OC1A(比較匹配后清零功能)之后,無須軟件管理,自動產(chǎn)生方波。如果通過其他端子則可在OC1A中斷時,在中斷服務子程序中翻轉(zhuǎn)輸出則可。 |
|
| 10樓: | >>參與討論 |
| 作者: ipman 于 2004/12/19 15:57:00 發(fā)布:
任意端口嗎? |
|
| 11樓: | >>參與討論 |
| 作者: madaha 于 2004/12/19 17:16:00 發(fā)布:
你配置的任一個輸出端子 |
|
| 12樓: | >>參與討論 |
| 作者: ipman 于 2004/12/19 20:25:00 發(fā)布:
謝謝!我需要同時輸出3路pwm,是否可行? |
|
| 13樓: | >>參與討論 |
| 作者: madaha 于 2004/12/19 21:06:00 發(fā)布:
可以 硬件上恰好有3個PWM,但是,長度不同。也可以通過OC1A中斷,用軟件實現(xiàn)。 |
|
| 14樓: | >>參與討論 |
| 作者: ipman 于 2004/12/20 23:11:00 發(fā)布:
請問在哪里配置啊,我在datasheet沒發(fā)現(xiàn)端口配置。 |
|
| 15樓: | >>參與討論 |
| 作者: madaha 于 2004/12/21 10:27:00 發(fā)布:
請看馬潮老師的MEGA8的書 |
|
| 16樓: | >>參與討論 |
| 作者: ipman 于 2004/12/21 11:45:00 發(fā)布:
手上只有沈文的關于avc的書,能否簡單指點一下 ,買書要48小時后才有結果啊,你也知道,高技術的性子都比較急,恨不得立馬知道 |
|
| 17樓: | >>參與討論 |
| 作者: ipman 于 2004/12/21 18:05:00 發(fā)布:
今天去看了那本<ATMEGA8原理及應用手冊>,里面沒有pwm端口配置啊 難道真的無法實現(xiàn)嗎 |
|
| 18樓: | >>參與討論 |
| 作者: ipman 于 2004/12/21 22:57:00 發(fā)布:
自己頂,雙龍也來指點一下啊,畢竟我還是avr的忠實用戶! |
|
| 19樓: | >>參與討論 |
| 作者: madaha 于 2004/12/23 10:13:00 發(fā)布:
??!! 用軟件方式產(chǎn)生方波,則必須配置輸出端子。如果用硬件方式(PWM),則只能夠從Pin15,16,17(OC2,OC1A,OC1B)輸出了。 |
|
| 20樓: | >>參與討論 |
| 作者: ipman 于 2004/12/23 19:50:00 發(fā)布:
謝謝!軟件產(chǎn)生是采用16ms定時器+延時控制io電平方式嗎? 這樣我的系統(tǒng)就無法干別的有延時工作了,否則波形就不準確了。 |
|
| 21樓: | >>參與討論 |
| 作者: madaha 于 2004/12/24 9:02:00 發(fā)布:
采用比較匹配中斷 比較匹配具備匹配時自動清零計數(shù)器的功能(自動重裝)。中斷服務子程序并不復雜,估計占用機時不多。你的頻率才60hz. |
|
| 22樓: | >>參與討論 |
| 作者: evans200 于 2004/12/24 11:54:00 發(fā)布:
我想問一下用MEGA8與MAX232的程序用C語言怎么編 |
|
| 23樓: | >>參與討論 |
| 作者: evans200 于 2004/12/24 11:56:00 發(fā)布:
我想問一下用MEGA8與MAX232的程序用C語言怎么編 請教各位一下,我不知怎么編,主要是對MEGA8不熟悉,上面給我一周時間,現(xiàn)在硬件電路都做好了,就差編程啦,若有知道的高手,試煩一下,發(fā)送到我的郵箱里, EVANS200@TOM.COM |
|
| 24樓: | >>參與討論 |
| 作者: ipman 于 2004/12/24 12:30:00 發(fā)布:
幫忙!我在pb0上輸出一個連續(xù)變化方波,在示波器上看到的卻不是? //TIMER1 initialize - prescale:8 // WGM: 0) Normal, TOP=0xFFFF // desired VALUE: 16.7mSec // actual VALUE: 16.696mSec (0.0%) void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0x7D; //setup TCNT1L = 0xC4; OCR1AH = 0x82; OCR1AL = 0x3C; OCR1BH = 0x00; OCR1BL = 0x00; ICR1H = 0x82; ICR1L = 0x3C; TCCR1A = 0x00; TCCR1B = 0x09; //start Timer } #pragma interrupt_handler timer1_compa_isr:7 void timer1_compa_isr(void) { //compare occured TCNT1=OCR1A unsigned CHAR tempH,tempL; PORTB |= BIT(0); //比較a時置高 tempL=OCR1BL; tempH=OCR1BH; if(tempL==0xFF){ tempH++; tempL++; if(tempH>=0xFF){ tempH=0; } }else{ tempL++; } OCR1BH = tempH; OCR1BL = tempL; } #pragma interrupt_handler timer1_compb_isr:8 void timer1_compb_isr(void) { //compare occured TCNT1=OCR1B PORTB &= ~BIT(0);//比較b時置低 } |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |