ايران ويج

نسخه‌ی کامل: کنترل duty cycle موج pwm
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من زیاد با avr کار نکرده ام می خوام با atmega16 بتونم duty cycle موج pwm رو با استفاده از دو کلید high و low کنترل کنم اگه ممنکه منو در شکل مدار و برنامه لازم راهنماییم کنین مرسی.
اگه با بیسکام کار میکنین که میتونین با دستور pwmA=127 مثلا دیوتی سیکل 50 درصد رو مشخص کنین

البته اگه یه سرچی کنین آقا trip2008 واسم تو یه تایپیکی کامل توضیح دادن
اين يه برنامه ساده كه خواشته شما رو انجام مي ده :

کد php:
$regfile "m16def.dat" $crystal 4000000

Config Timer1 
Pwm Pwm Compare A Pwm Clear Down Compare B Pwm Clear Up Prescale 64
Start Timer1 
Pwm1b 127 Pwm1a 127

Ddrb 
Portb 3

Dim Piwm 
As Byte

Do
   
Debounce Pinb.0 Incr_pwm Gosub
   Debounce Pinb.1 
Decr_pwm Gosub
Loop

Incr_pwm
:
   If 
Piwm <> 255 Then Incr Piwm
   Pwm1b 
Piwm Pwm1a Piwm
Return

Decr_pwm:
   If 
Piwm <> 0 Then Decr Piwm
   Pwm1b 
Piwm Pwm1a Piwm
Return 

فقط كافيه دو تا سوئيچ بين زمين و پايه هاي يك و دو ميكرو قرار بدين !!!

خروجي هم پايه هاي 18 و 19 هستش كه NOT هم هستند .
مرسی از راهنماییتون اما می خوام این تغییر رو رو lcd هم ببینم برنامه رو چطور باید تغییر بدم؟
كافيه متغير PIWM رو نمايش بديم .

کد php:
$regfile "m16def.dat" $crystal 4000000

Config Lcdpin 
Pin Db4 Pinc.3 Db5 Pinc.2 Db6 Pinc.1 Db7 Pinc.0 Rs Pinc.7 Pinc.6
Config Lcd 
16 Cursor Off Cls

Config Timer1 
Pwm Pwm Compare A Pwm Clear Down Compare B Pwm Clear Up Prescale 64
Start Timer1 
Pwm1b 127 Pwm1a 127

Ddrb 
Portb 3

Dim Piwm 
As Byte

Do
   
Debounce Pinb.0 Incr_pwm Gosub
   Debounce Pinb.1 
Decr_pwm Gosub
Loop

Incr_pwm
:
   If 
Piwm <> 255 Then Incr Piwm
   Pwm1b 
Piwm Pwm1a Piwm
   Home 
Lcd Piwm "  "
Return

Decr_pwm:
   If 
Piwm <> 0 Then Decr Piwm
   Pwm1b 
Piwm Pwm1a Piwm
   Home 
Lcd Piwm "  "
Return 

عدد مورد نظر براي PWM بين 0 تا 255 قابل تنظيم هستش كه روي LCD نشون داده مي شه .

تا جايي كه ممكنه برنامه رو ساده كردم و جا براي امكانات بيشتر هستش !!!


اينم يه نگاه كنيد :
http://forum.iranled.com/attachment.php?aid=1695
منبع