اطلاعیه

Collapse
No announcement yet.

مشکل با PWM

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

    مشکل با PWM

    سلام
    زبان برنامه نویسی: بیسیک
    میکرو atmega16

    دوستان من یک برنامه دارم که در آن از pwm استفاده میکنم.
    خطوط مهم:
    $regfile = "m16def.dat"
    $crystal = 1000000
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1024
    ....
    ....
    خوب تا اینجا برنامه درست کار میکنه یعنی یک موج pwm روی oc1a بهم میده که میتونم با زدن دکمه عرض رو کم و زیاد کنم.
    اما مشکل از اینجا شروع میشه:
    در همین برنامه وقتی که میخواهم از تایمر 0 استفاده کنم و این تایمر هر 200ms یکبار سرریز شود و پرش کند به مثلا برنامه prog1

    Config Timer0 = Timer , Prescale = 1024
    Enable Timer0
    Enable Interrupts
    Enable Ovf0
    Start Timer0
    Timer0 = 98
    On Ovf0 Prog1

    به محض اینکه اینها رو اضافه میکنم دیگه نمیتونم با زدن کلید عرض پالس رو تغییر بدم ولی اینها رو که پاک میکنم درست میشه.
    حتی اگر در همون برنامه ای که مربوط به تغییر عرض پالس هست یک call prog1 یا gosub prog1 بزارم باز هم همین مشکل را دارم.

    چی کار کنم؟

    #2
    پاسخ : مشکل با PWM

    نوشته اصلی توسط masoodhashemy


    Config Timer0 = Timer , Prescale = 1024
    Enable Timer0
    Enable Interrupts
    Enable Ovf0
    Start Timer0
    Timer0 = 98
    On Ovf0 Prog1

    من قبلا با بسکام کار کردم . این Enable Timer0 و Enable Ovf0 یکیش اضافی نیست؟ احتمالا شما داری 2 تا منبع اینترانپت رو تریگ میکنی در حالی که بردارش وجود نداره فکر کنم خط Enable Timer0 رو حذف کنی درست بشه

    دیدگاه


      #3
      پاسخ : مشکل با PWM

      مشکلم حل شد.
      اضافی هستند:
      Enable Timer0
      Enable Interrupts
      لذا حذفشون کردم.

      دیدگاه

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