اطلاعیه

Collapse
No announcement yet.

تولید PWM نرم افزاری با CODE VISION

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

    تولید PWM نرم افزاری با CODE VISION

    سلام دوستان کسی میتونه برنامه تولیدpwm نرم افزاری رو بهم بده یا راهنمایی کنه
    زندگي صحنه ي يکتاي هنرمندي ماست
    هرکسي نغمه ي خود خواند و از صحنه رود
    صحنه پيوسته بجاست
    خرم آن نغمه که مردم بسپارند به ياد

    #2
    پاسخ : تولید PWM نرم افزاری با CODE VISION

    سلام. اگر مفهوم PWM رو متوجه شده باشید تولید PWM نرم افزاری کار ساده ایست. شما یه وقفه معمولی سرریز تایمر با دوره تناوب چند میکروثانیه راه میندازی. بعد یه شمارنده راه می ندازی از 0 تا 255 که بشماره 255 بار این وقفه اتفاق افتاده. بعدش در طول این 255 بار با توجه به عرض پالس PWM پایه ای که میخواین روش PWM ایجاد کنید رو به صورت نرم افزاری صفر و یک می کنین.
    مثلا کد نمونه زیر رو نگاه کنید:

    unsigned char counter=0xff,pulse_width=200;
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    if(++counter==0){
    PORTB.0=1;
    }
    if( pulse_width == counter) PORTB.0=0;
    }

    عرض پالس به طور دلخواه می تونه یه عدد بین 0 تا 255 باشه.

    دیدگاه


      #3
      پاسخ : تولید PWM نرم افزاری با CODE VISION

      من روش بهتری رو سراغ دارم. البته تست کردم و عملکرد بسیار بهتری به نسبت سایر روش ها داشته.
      بیایم از دو وقفه برای تایمر کمک بگیریم به این صورت که یک بار وقفه هنگام برابری با OCR باشه و یکبار وقفه موقع سرریز کردن. که در روال وقفه مقایسه پین صفر و در روال وقفه سرریز یک بشه. مثالش هم به صورت زیر هستش.
      نکته ای که هست این که این روش برای ایجاد fast pwm هست.
      کد:
      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
      { 
          PORTD |= (1<<PORTD7);
      }
      
      interrupt [TIM0_COMP] void timer0_comp_isr(void)
      {
          PORTD &= ~(1<<PORTD7);
      }
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #4
        پاسخ : تولید PWM نرم افزاری با CODE VISION

        درست می فرمایید. اما اگر بخوایم روی 5 تا پایه pwm با عرض پالس های مختلف داشته باشیم با این روش چطوری میشه این کار رو انجام داد؟

        دیدگاه


          #5
          پاسخ : تولید PWM نرم افزاری با CODE VISION

          این روش به نسبت روش های قبلی دقت بالاتری داره ولی ایرادش اینکه نمی تونید PWM های متفاوت رو روی پین های مجزا داشته باشید
          چرا ناراحتی پاتریک!
          + امروز ی بچه دیدم سرچهارراه گل میفروخت
          - از دیدنش ناراحت شدی؟
          + نه
          پس چی ناراحتت کرده
          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
          ------------------------------------------------------------------------------------------------------
          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
          ------------------------------------------------------------------------------------------------------
          محصولات

          دیدگاه


            #6
            پاسخ : تولید PWM نرم افزاری با CODE VISION

            نوشته اصلی توسط سوران آراسته نمایش پست ها
            این روش به نسبت روش های قبلی دقت بالاتری داره ولی ایرادش اینکه نمی تونید PWM های متفاوت رو روی پین های مجزا داشته باشید
            در صورتی که به دلیل بزرگ بودن prescaler فرصت کافی برای اجرای دستورالعمل ها در وقفه وجود داشته باشد، با روش پیشنهادی شما می توان روی چند پین هم pwm با عرض پالس های مختلف داشت. برای باز شدن ذهن بهتر است خودتان قدری در این مورد فکر کنید و راه آن را پیدا کنید. در غیر اینصورت روشی را به شما پیشنهاد خواهم کرد.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #7
              پاسخ : تولید PWM نرم افزاری با CODE VISION

              نوشته اصلی توسط طراح نمایش پست ها
              در صورتی که به دلیل بزرگ بودن prescaler فرصت کافی برای اجرای دستورالعمل ها در وقفه وجود داشته باشد، با روش پیشنهادی شما می توان روی چند پین هم pwm با عرض پالس های مختلف داشت. برای باز شدن ذهن بهتر است خودتان قدری در این مورد فکر کنید و راه آن را پیدا کنید. در غیر اینصورت روشی را به شما پیشنهاد خواهم کرد.
              تشکر استاد کی نژاد واقعا برام جالب شد.
              متاسفانه سخت افزار لازم رو الان ندارم تا عملا تست کنم ولی فکر می کنم با استفاده از چند فلگ برای فعال سازی پین های مورد نظر و اپدیت مقدار OCR در زیرروال وقفه مقایسه میشه این کارو انجام داد. اما نمی دونم استفاده از شرط ها چقدر می تونه روی دقت موج خروجی تاثیر داشته باشه.در چند روز اینده به صورت عملی تست می کنم و نتیجه رو قرار میدم.
              چرا ناراحتی پاتریک!
              + امروز ی بچه دیدم سرچهارراه گل میفروخت
              - از دیدنش ناراحت شدی؟
              + نه
              پس چی ناراحتت کرده
              + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
              ------------------------------------------------------------------------------------------------------
              تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
              ------------------------------------------------------------------------------------------------------
              محصولات

              دیدگاه

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