NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3675 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: کمک در ساخت pwmبا تایمر صفر

  1. #1
    عضو جدید
    تاریخ عضویت
    Jun 2013
    نوشته ها
    8
    تشکر
    3
    تشکر شده 1 بار در 1 پست

    Icon16 کمک در ساخت pwmبا تایمر صفر

    سلام دوستان.میخوام یه موج pwm رو دو پورت میکرو به شکل زیر داشته باشم
    a.0 مدت 30ms روشن باشه 20ms خاموش دوباره 20ms روشن و 20ms خاموش واین سیکل تکرار بشه.
    a.1 مدت 45ms روشن باشه 5ms خاموش دوباره 40ms روشن و 10ms خاموش واین سیکل تکرار بشه.
    کمترین زمان 5ms را با تایمر صفر ساختم حالا چجوری میتونم پورت ها را اینجوری تغییر بدم از دستور wait هم نمیشه استفاده کرد.ممنون میشه اساتید راهنمایی فرمایند.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    عضو جدید
    تاریخ عضویت
    Jun 2013
    نوشته ها
    8
    تشکر
    3
    تشکر شده 1 بار در 1 پست

    پیش فرض

    ببخشید .اگه یکی از دوستان کمک کنن ممنون میشم.

  4. #3
    کاربر دائمی wantedboy آواتار ها
    تاریخ عضویت
    May 2011
    نام
    علی‏ ‏محمد‏ ‏شکرالهی
    نوشته ها
    492
    تشکر
    201
    تشکر شده 629 بار در 204 پست

    پیش فرض

    نقل قول نوشته اصلی توسط foaad نمایش پست ها
    ببخشید .اگه یکی از دوستان کمک کنن ممنون میشم.
    سلام دوست عزیز فرکانس میکرو بزار روی یک مگ و بعد تقسیم فرکانسی هم بزار 1 و حالا هر شمارش 1 میلی ثانیه و داخل tcnt های مختلف پین مورد نظر تو رو تغییر وضعیت بده و با هم می تونی این کارو انجام بدی.

  5. تشکرها از این نوشته :


  6. #4
    عضو جدید
    تاریخ عضویت
    Jun 2013
    نوشته ها
    8
    تشکر
    3
    تشکر شده 1 بار در 1 پست

    پیش فرض

    دوست عزیز ببخشید اگه سوال هام پیش پا افتاده است اگه فرکانس را 1 مگ بزارم وprescle را 1 t=1/f
    t بدست میاد 1میکرو ثانیه و هر بار که تایمر سرریز بشه میشه 256 میکرو ثانیه حالا اگه کمترین زمان بالا که 5 میلی ثانیه است را بسازم هر 19 بار که سر ریز میشه میشه 5 میلی ثانیه واگر یه متغیری بزاریم مه هر 5میلی ثانیه یک واحد زیاد بشه یعنی وقتی متغییر 7 میشه یعنی 35 میلی ثانیه گذشته فقط نمیدونم چجوری باید به پورت ها دستور بدم که قطع ووصل بشن اگه میشه یه راهنمایی بفرمایید ممنون میشم بیشتر توضیح بدید

  7. #5
    کاربر دائمی wantedboy آواتار ها
    تاریخ عضویت
    May 2011
    نام
    علی‏ ‏محمد‏ ‏شکرالهی
    نوشته ها
    492
    تشکر
    201
    تشکر شده 629 بار در 204 پست

    پیش فرض

    شرمنده دوست عزیز حواسم نبود تقسیم فرکانسی طوری تعیین کن که فرکانس تایمرت 0.97 کیلو هرتز بشه داخل کد ویزارد به راحتی اانجام میشه فکر کنم باید تقسیم فرکانس 1024 بزرای.

  8. تشکرها از این نوشته :


  9. #6
    عضو جدید
    تاریخ عضویت
    Jun 2013
    نوشته ها
    8
    تشکر
    3
    تشکر شده 1 بار در 1 پست

    پیش فرض

    $regfile = "m16def.dat"
    $crystal = 1000000
    Dim Flag As Bit
    Dim S As Word , P As Byte ,
    Config Porta = Output
    Config Timer0 = Timer , Prescale = 1
    Enable Interrupts
    Enable Ovf0
    On Ovf0 Clk1
    Start Timer0

    Do

    Loop


    Clk1:
    incr
    If P = 19 Then
    Incr S
    P = 0
    End If
    Return


    سلام به دوستان.برنامه بالا هر 5میلی ثانیه یک واحد به s اضافه میکنه میشه دوستان راهنمایی کنند که چی باید داخل حلقه do loop بالا بذارم تا پورت ها با شرایطی که در پست اولی گفتم تغییر کنه .ممنون

  10. #7
    کاربر دائمی wantedboy آواتار ها
    تاریخ عضویت
    May 2011
    نام
    علی‏ ‏محمد‏ ‏شکرالهی
    نوشته ها
    492
    تشکر
    201
    تشکر شده 629 بار در 204 پست

    پیش فرض

    خوب کاری دیگه نداره همه کارشو کردی
    مقدار s را تا به اون مقدار ها رسید پین های مورد نظر را نات کن کار سختی نیست

  11. #8
    کاربر علاقه مند ERSA آواتار ها
    تاریخ عضویت
    May 2012
    نام
    بردیا
    نوشته ها
    64
    تشکر
    54
    تشکر شده 97 بار در 31 پست

    پیش فرض

    درود.
    دوستان تو تایمر/کانتر 1 رجیستر ها رو توی مد FAST PWM تنظیم کردم.از نوع 10 بیتی.و برای Compare هم روی مد Toggle گذاشتم ولی هیچ اتفاقی روی پین OC1A , OC1B نمیوفته.

    میکرو مگا 32.

    تنظیم رجیستر واسه مود FAST PWM :
    کد:
    TCCR1A|=(1<<WGM10|1<<WGM11);
            TCCR1B|=(1<<WGM12);
    تنظیم Toggle پین :

    کد:
    TCCR1A|=(1<<COM1A0|1<<COM1B0);
    بدون تقسیم فرکانسی :

    کد:
    TCCR1B|=(1<<CS10);
    وقتی رجیستر های OCR1A و OCR1B رو مقدار میدم هیچ اتفاقی نمیفته.مشکلی در اصل مطلب دارم یا کد جاییش مشکل داره؟

    ممنون

موضوعات مشابه

  1. پاسخ: 16
    آخرين نوشته: 23-05-2016, 09:39
  2. راه اندازی PWMدر dsPIC30f6014A
    توسط Raha323 در انجمن PIC
    پاسخ: 0
    آخرين نوشته: 11-03-2014, 16:47
  3. [سوال] ساخت pwmدقیق
    توسط Raha323 در انجمن PIC
    پاسخ: 1
    آخرين نوشته: 16-01-2014, 14:28

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •