اطلاعیه

Collapse
No announcement yet.

مشکل با PWM درتایمر 1

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با 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 = EMF


    این مقادیر رو که در PWM1A میریزم و PWM1A رو نمایش میدم عددهای با اختلاف زیاد رو نمایش میده .چرا اینجوریه ؟

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

    مثلا مقدار 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 مشکلی نداره و دقیقا همون عدد رو نشون میده ولی اعداد رو که دارای اعشاری هست رو خیلی بی ربط نشون میده .
    ضمن اینکه باید حتما اعداد اعشاری رو نشون بدم
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    #2
    پاسخ : مشکل با PWM درتایمر 1

    سلام
    خوب شما عدد بدون اعشار رو بریز تو pwm1a و عدد با اعشار رو نمایش بده!!

    دیدگاه


      #3
      پاسخ : مشکل با PWM درتایمر 1

      نوشته اصلی توسط retina
      سلام
      خوب شما عدد بدون اعشار رو بریز تو pwm1a و عدد با اعشار رو نمایش بده!!
      سلام
      ملاک نمایش pwm1a نیست .مهم مدنظر گرفتن مقدار اعشاری در pwm1a

      حدالاامکان سعی میکنم مقدار اعشاری رو هم در pwm1a مدنظر بگیرم /
      دست اخر که نشد بیخیالش میشم و عدد رو رند میکنم و میذارم داخل pwma1
      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

      دیدگاه


        #4
        پاسخ : مشکل با PWM درتایمر 1

        سلام

        اعداد اعشاری مثل تمام اعداد صحیح و وغیره دارای مقدار باینری هستند

        شما در واقع دارین مقدار باینری که را در داخل pwm1a میریزن که این مقدار اصلا نزدیک به مقدار اعشاری اون نیس.

        بهتریت راه گردن کردنه
        .The best question deserves a better answer
        =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
        «پناه»می برم «به خدا»
        از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
        محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

        دیدگاه


          #5
          پاسخ : مشکل با PWM درتایمر 1

          سلام
          من اول متغییر emf رو که قطعا از نوع single هست رو داخل متغییر A که از جنس word ریختم تا اعشار EMF از بین بره بعد A رو درون Pwm1a ربختم

          اینم برنامه + پروتئوس
          6d54fsd5f6sdfv46d8tv7326.rar


          کد:
          $regfile = "m8def.dat"
          $crystal = 8000000
          
          Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
          Config Lcd = 16 * 2
          Config Lcdbus = 4
          Cursor Off
          Cls
          
          
          Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 8
          
          Dim A As Word , Emf As Single
          EMF = 337.65
          'EMF = 338.35
          'EMF = 339.05
          
          
          Do
            Waitms 20
            A = Emf
          
            Pwm1a = a
          
          
            Locate 2 , 1
            Lcd Pwm1a ; " " ; EMF ; " "
          
          
          Loop

          دیدگاه

          لطفا صبر کنید...
          X