ايران ويج

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

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

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

Config Timer1 
= Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 64
Start Timer1 
: Pwm1b = 127 : Pwm1a = 127

Ddrb 
= 0 : Portb = 3

Dim Piwm 
As Byte

Do
   
Debounce Pinb.0 , 0 , Incr_pwm , Gosub
   Debounce Pinb.1 
, 0 , 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 , E = Pinc.6
Config Lcd 
= 16 * 2 : Cursor Off : Cls

Config Timer1 
= Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 64
Start Timer1 
: Pwm1b = 127 : Pwm1a = 127

Ddrb 
= 0 : Portb = 3

Dim Piwm 
As Byte

Do
   
Debounce Pinb.0 , 0 , Incr_pwm , Gosub
   Debounce Pinb.1 
, 0 , 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
منبع