PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : pwm در winavr



M3R
17-10-2010, 00:16
سلام.
من میخوام تو winavr به وسیله timer1 دو موج pwm روی پایه های oc1a و oc1b تولید کنم.
من تونستم دو تا موج مثل هم روی پایه های oc1a و oc1b تولید کنم ولی هر کاری کردم نتونستم نسبت 1 بودن به 0 بودن رو کنترل کنم.یعنی هر مقداری که به oc1aو oc1b میدم فقط فرکانس تغییر میکنه نه نسبت 1 به 0.
اگه میشه یه مثالی بزارید.تو کدویژن هم باشه مشکلی نیست.
ممنون.

محمد رضا ملکی
17-10-2010, 13:21
سلام
اگه کتاب آموزش سریع میکرو کنترلر های avr که توسط آقای رضا سپاس یار نوشته شده رو بخونید میتونید در صفحه ی 85 کتاب آموزش کامل کار با تایمر رو مشاهده کنید .
این کتاب رایگانه و قبلا من از همین سایت دانلودش کرده بودم

Aghaeifar
17-10-2010, 19:51
لابد تایمر رو در مد کاری مناسب به کار ننداختی

فکر کنم مد fast PWM بود که برای تنظیم duty cycle به کار می رفت.

M3R
18-10-2010, 00:00
سلام.
من تو همین مد fast pwm راه اندازی کردم.
اگه میشه یه مثال کوچیک بزارید که بشه duty cycle رو کنترل کرد تو هر دو تا پایه oc1a و oc1b.
ممنون.

M3R
18-10-2010, 23:46
سلام.
بالا خره تونستم چیزی که میخوام راه اندازی کنم.
mode : fast pwm 8bit
prescale : ferequency/8
toggle
تنظیماتش رو اینجوری گذاشتم :
TCCR1A=0xa1
TCCR1B=0X0a

update
06-03-2011, 10:08
سلام این هم مثال
$regfile = "m16def.dat"
$crystal = 16000000
Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1
Dim B As Byte
Config Portb = Output
B = 0
Do
Pwm1b = B
Incr B
Waitms 20
Loop
End