اطلاعیه

Collapse
No announcement yet.

راهنمایی برای کار با تایمر یک

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

    راهنمایی برای کار با تایمر یک

    [size=medium]
    سلام، ببخشید من میخوام با تایمر 1، یه قطار موج مربعی با فرکانس 50Hz و دیوتی سایکل %10 بسازم. کد زیر رو نوشتم. اگه بهم کمک کنید که اشتباهم رو پیدا کنم، ازتون ممنون میشم.
    اینم کد:
    کد:
    #include <mega32.h>
    interrupt [TIM1_OVF] void timer1_ovf_isr(void) // فعال کردن اینتراپت برای دادن مقدار مشخص شده به رجیستر TCNT1A در هر بار
    {
     TCNT1=63035;
    }
    void main()
    {
     DDRD=0x30; // تعریف OCA1 به عنوان خروجی
     PORTD=0x00;
     TCCR1A=0x42; // انتخاب مد fast PWM و انتخاب OC1A به عنوان خروجی
     TCCR1B=0x1a; // قرار دادن مقدار ICR1 در TOP وانتخاب تقسیم فرکانسی 64
     ICR1L=0xff; // انتخاب 65535 برای رجیستر ICR1
     ICR1H=0xff;
     TCNT1=63035; // مقدار لازم برای تولید موج با فرکانس 50HZ
     OCR1A=63285; // مقدار لازم برای تولید موج با دیوتی سایکل 10%
     TIMSK=0x04; // فعال کردن وقفه سرریز تایمر 1
     #asm("sei") // صدور مجوز وقفه
     while(1);
    }
    اینم روابطی که ازشون استفاده کردم.



    و اینم تصویر خروجی پروتئوسش



    همونطور که میبینید، شکل موج خروجی با فرکانس 200Hz و دیوتی سایکل %50 تولید شده!
    لطفا تو پیدا کرد مشکلش کمکم کنید. ممنون

    #2
    پاسخ : راهنمایی برای کار با تایمر یک

    محاسباتتون درسته.
    به احتمال قوی تو تنظیم رجیسترها اشتباه کردید.
    از این مد استفاده کردید ؟
    Mode: Fast PWM top=ICR1
    اِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
    کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

    دیدگاه


      #3
      پاسخ : راهنمایی برای کار با تایمر یک

      بله، از همین مد استفاده کردم.

      دیدگاه

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