اطلاعیه

Collapse
No announcement yet.

نحوه ایجاد دو پالس با اختلاف فاز

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

    نحوه ایجاد دو پالس با اختلاف فاز

    می خواستم دو پالس با اختلاف فاز تولید کنم مثل شکل زیر


    در کتابخونه avrlib دو فایل pulse.h و pulse.c وجود داره که وظیفه تولید پالس رو به عهده دارن که روی 2 پایه oc1a و oc1b دوپالس مجزا درست می کنن .ولی با توابعی که تو اون فایلا هست نمیشه بین دو پالس ایجاد شده اختلاف فاز ایجاد کرد. کسی نظری یا راه حل دیگه ای برای این مساله داره؟

    #2
    پاسخ : نحوه ایجاد دو پالس با اختلاف فاز

    سلام
    کاری ندارم که از چه کامپایلری استفاده میکنید
    اما روش کلیش اینه:
    فرض کن میخوای فرکانس پالست 100 هرتز باشه
    میای یک تایمری استفاده میکنی که فرکانسش 4 برابر این باشه
    یعنی 400 هرتز باشه
    (از نظر زمانی 4 بار سریعتر باشه)
    خب حالا برای تایمرت که فرکانسش 400 هرتزه
    (یعنی زمانش میشه 2.5 میلی ثانیه)
    یک وقفه تعریف میکنی
    (در کل میتونی اینکارو بکنی:
    یک تایمر با فرکانس 400 همراه با وقفه ش فعال میکنی)
    حالا در وقفه ی این تایمر یک شمارنده قرار میدی
    (متغیری برای شمارش)
    فرض کن میخوام مثلا روی پایه ی portb.1 و portb.2 این پالس ایجاد بشه
    و اسم متغیر این شمارنده هم counter باشه
    و مقدار اولیه ش هم 0 باشه
    در زیر روال وقفه تایمر 400 هرتزی برنامه زیر رو مینویسی:
    کد:
    counter++;
    if (counter<3)
     portb.1=1;
    else
     portb.1=0;
    
    if(counter>1 && counter<4)
     portb.2=1;
    else
     portb.2=0;
    
    if (counter==4)
     counter=0;
    با توجه به شرط هایی که گذاشتیم:
    portb.1 زمانی که شمارنده counter برابر با 1 و 2 باشه 1 میشه
    و وقتی که 3 و 4 میشه برابر با 0 میشه
    portb.2 زمانی که شمارنده counter برابر با 2 و 3 باشه 1 میشه
    و وقتی که 1 و 4 میشه برابر با 0 میشه
    و با اینکار پالس مورد نظر تولید میشه
    1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
    2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
    3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

    دیدگاه


      #3
      پاسخ : نحوه ایجاد دو پالس با اختلاف فاز

      خیلی ممنون از پاسخ سریعتون.
      دوتا سوال:
      1- تایمر باید تو مد CTC باشه یا نرمال؟
      2- اگه بخوایم فرکانس پالسمون متغیر باشه با توجه به روشی که شما گفتید باید با خطوط برنامه فرکانس تایمر رو تغییر داد؟ ( چون فرکانس تایمر از تقسیم بر ضرایب مشخصی ایجاد میشه این محدودیتی برای فرکانس پالس ایجاد نمی کنه؟ )

      دیدگاه


        #4
        پاسخ : نحوه ایجاد دو پالس با اختلاف فاز

        نوشته اصلی توسط امیر راشدی
        1- تایمر باید تو مد CTC باشه یا نرمال؟
        2- اگه بخوایم فرکانس پالسمون متغیر باشه با توجه به روشی که شما گفتید باید با خطوط برنامه فرکانس تایمر رو تغییر داد؟ ( چون فرکانس تایمر از تقسیم بر ضرایب مشخصی ایجاد میشه این محدودیتی برای فرکانس پالس ایجاد نمی کنه؟ )
        خواهش میکنم.
        - با توجه به اینکه هدف شما ایجاد پالس اختلاف فاز 90 درجه ست
        چیزی که برای ما مهمه اینه: تولید وقفه 4 برابر سریعتر از فرکانس پالس. همین!
        حالا این وقفه رو هر طوری دوست داری ایجاد کن!
        وقفه در زمان های معین، با فرکانس 4 برابر فرکانس پالس اصلی!

        - برای فرکانس پالس تولیدی محدودیت داریم!
        فرض کن از یک تایمر 16 بیتی استفاده میکنی
        فرکانسی که به کمک این تایمر میتونی بسازی چقدره؟
        با توجه به فرمول هایی که در دیتا شیت اومده
        با مقدار دهی رجیسترها این فرکانس مشخص میشه
        و چون 16 بیته، مقدار TCNT از 0 تا 65535 میتونه قرار داده بشه!
        همچنین فرکانس کلاک خود تایمر هم قابل تنظیمه
        (با رجیسترها، مثلا: فرکانس میکرو تقسیم بر 2 یا 4 یا 16 یا 128 یا ...)
        بنابراین محدوده ی فرکانسی با دو مورد فوق مشخص میشه

        - در مورد اینکه فرکانس باید نرم افزاری تنظیم بشه
        هم آره، هم نه!
        یعنی اینکه در کل آره!
        شما بید با تغییر رجیسترها
        فرکانس رو تغییر بدی
        اما! میتونی تغییر این رجیسترها رو
        به کمک کلیدهایی که به میکرو متصل میشن
        "کنترل" کنی!
        1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
        2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
        3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

        دیدگاه


          #5
          پاسخ : نحوه ایجاد دو پالس با اختلاف فاز

          بازم ممنون . الان میرم سروقتش ببینم چی میشه :nice:

          دیدگاه

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