ايران ويج

نسخه‌ی کامل: مشکل با PWM درتایمر 1
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
دوستان من PWM رو در تایمر 1 راه اندازی کردم به اینصورت

کد:
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 8

یه سری عددهای دارم که دارای مقادیر اعشاری هستند و این اعداد حاصل یه سری جمع و تفریق هستند.


مقادیر EMF هم مثلا اعداد زیر هستند:

کد:
Emf = 337.65
Emf = 338.35
Emf = 339.05
این مقادیر رو که در PWM1A میریزم و PWM1A رو نمایش میدم عددهای با اختلاف زیاد رو نمایش میده .چرا اینجوریه ؟

اینم قسمتی از برنامه که هر کدام از مقادیر 337.65 /338.35 /339.05 رو درون PWM1A میریزم یه مقادیر نشون میده

[b]مثلا مقدار 338.3499 رو PWM1A عدد 204 نشون میده
مقدار 336.94 رو PWM1A عدد 409 و
مقدار 337.6499 رو PWM1A عدد 819 نشون میده
یعنی 1 عدد رو اضافه میشه حدودا 300 تا PWM1A جابجا میشه





کد:
$regfile = "m8def.dat"
$crystal = 8000000

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 8


EMF = 337.65
'EMF  = 338.35
'EMF  = 339.05


Do
   Waitms 20

   Pwm1a = EMF                                            


   Locate 2 , 1
   Lcd Pwm1a ; " " ; EMF ; " "


Loop

یه تست کردم دیدم اعداد رند رو که میریزم درون pwma1 مشکلی نداره و دقیقا همون عدد رو نشون میده ولی اعداد رو که دارای اعشاری هست رو خیلی بی ربط نشون میده .
ضمن اینکه باید حتما اعداد اعشاری رو نشون بدم
شما باید متغیرتو مشخص کنی
احتمال قوی مشکل از متغیره
مثلا :
dim emp as dword
سلام
ممنونم
عددی که من میریزم داخل pwm1a از نوع اعشاری هست .بنابراین متغییر هم single هست .مشکلی که داره اینکه pwm1a عدد اعشاری رو قبول نمیکنه و لی اعداد رند که میریزم داخل pwm1a هیچ مشکلی نداره
درسته ولی شما اصلا تو برنامه متغیرو نزاشتین
من تابحال امتحان نکردم ببینم اعشاری درست در میاد یا نه
ولی قاعدتا نباید کار نکنه