اطلاعیه

Collapse
No announcement yet.

در باره pwm نرم افزاری با یک مثال در بسکام

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

    در باره pwm نرم افزاری با یک مثال در بسکام

    با سلام خدمت دوستان . خواهشن این سئوالو پاسخ بدید ؟

    من می خوام از یک میکرو atmega16 پانزده عدد موج pwm بگیرم . شنیدم با pwm نرم افزاری میشه ولی هیچ جا مطلب کاملی دربارش پیدا نکرم . دوستان اگه کسی کار کرده با بسکام که نمونه کدی با توضیحاتش کوتاه قرار بده ممنون میشم .
    دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...

    #2
    پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

    15 تا متغییر بردار تو قبل مین برنامت هر مقداری که میخوای pwm داشته باشی رو به متغییر ها بده بعد یه زیر روال بساز و توش یه کانتر بزار به اندازه طول متغییرات مثلا اگر 8 بیتیه نتغییرات یه کانتر که تا 255 بشماره و تو این کانتر اول همه خروجی های متناظر با متغییرات رو یک کن بعد هر دفعه از تمام متغییرات یکی کم کن و هر کدوم رو چک کن که اگه هر کدوم صفر شده بودن خروجی متناظرش رو صفر کنی اخر 255 کانتر هم دوباره تمام خروجی هارو یک کنو دوباره متغییر ها رو ست کن
    ما زنده به آنیم که آرام نگیریم موجیم که آسودگی ما عدم ماست

    وقتی یک ملت برای فرهنگ و نژاد و ملیت خویش ارزشی قائل نشد و حقی را که طبیعت برای نگاهداری نژاد پاکش به او ارزانی داشته بود پایمال ساخت و به بیگانگان روی آورد و تسلیم شد دیگر حق ندارد از شکست و بدبختی سیاسی که خودش باعث آن شده است شکایت کند .ادولف هیتلر

    r.babazadeh@yahoo.com

    دیدگاه


      #3
      پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

      آقای بابازاده کلک نرم افزاری جالبی گفتی ومرسی قشنگ بود
      همیشه به یاد خدا باش !

      دیدگاه


        #4
        پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

        روشی که دوست عزیزمون گفتند روش جالبیه اما باعث درگیر شدن cpu میشه گذشته از اون امکان تغییر فاز موج خروجی ونهایتا تغییر دیوتی سایکل وجود داره.

        برا اینکار بهتره از تایمر و وقفه ی همون تایمر استفاده کنی.

        یه روش ساده هست که میتونی از اون برای تولید pwm رو همه ی پایه هااستفاده کنی.

        کافی شما یکی از تایمرها رو تو مد pwm راه اندازی کنی و وقفه ی مقایسش (Compare Match Interrupt) رو نیز فعال کنی.
        در این حالت با هر بار برابر شدن مقدار رجیستر TCNT با بافر رجیستر OCR یک وقفه رخ میده که شما میتونی تو زیر روال اون وقفه هر عملیاتی که خواستی اعم از جابجایی وضعیت پایه های هر یک از پورت ها اقدام کنی.

        با اینکار علاوه بر داشتن pwm روی یایه ی OC میتونی pwm رو رو هر کدوم از پایه ها خواستی داشته باشی

        البته خودتون متوجه شدین که این روش باعث میشه یه شکل موج رو تمام پایه ها داشته باشیم.
        [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پیشرفت است.با هم کار کردن موفقیت است.[/glow]
        [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

        دیدگاه


          #5
          پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

          نوشته اصلی توسط حمیدجان
          روشی که دوست عزیزمون گفتند روش جالبیه اما باعث درگیر شدن cpu میشه گذشته از اون امکان تغییر فاز موج خروجی ونهایتا تغییر دیوتی سایکل وجود داره.

          برا اینکار بهتره از تایمر و وقفه ی همون تایمر استفاده کنی.

          یه روش ساده هست که میتونی از اون برای تولید pwm رو همه ی پایه هااستفاده کنی.

          کافی شما یکی از تایمرها رو تو مد pwm راه اندازی کنی و وقفه ی مقایسش (Compare Match Interrupt) رو نیز فعال کنی.
          در این حالت با هر بار برابر شدن مقدار رجیستر TCNT با بافر رجیستر OCR یک وقفه رخ میده که شما میتونی تو زیر روال اون وقفه هر عملیاتی که خواستی اعم از جابجایی وضعیت پایه های هر یک از پورت ها اقدام کنی.

          با اینکار علاوه بر داشتن pwm روی یایه ی OC میتونی pwm رو رو هر کدوم از پایه ها خواستی داشته باشی

          البته خودتون متوجه شدین که این روش باعث میشه یه شکل موج رو تمام پایه ها داشته باشیم.
          ب لام و تشکر . می تونین یک برنامه ساده همبن جور که گفتید بگذارید . آخه تازه کارم .... ! :job:
          دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...

          دیدگاه


            #6
            پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

            برنامه ای که میذارم مربوط به اینکه به وسیله ی اون روی تمام پین های پورت میکرو موج PWM داشته باشیم.

            در این برنامه فقط پورت A دارای موج pwm هست. برای اینکه تمام پورت ها دارای موج باشن کافیه بقیه پورت ها رو هم به برنامه اضافه کنیم.


            #include <mega32.h>


            interrupt [TIM0_OVF] void timer0_ovf_isr(void)//وقفه ی سرریز تایمر
            {
            PORTA=~PORTA;
            }


            interrupt [TIM0_COMP] void timer0_comp_isr(void)//وقفه ی مقایسه ی تایمر
            {
            PORTA=~PORTA;
            }

            void main(void)
            {
            DDRA=0xFF;
            DDRB=0x08;

            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: 0.977 kHz
            // Mode: Fast PWM top=0xFF
            // OC0 output: Non-Inverted PWM
            TCCR0=0x6D;
            TCNT0=0x00;
            OCR0=0x1F;


            TIMSK=0x03;
            ACSR=0x80;

            #asm("sei&quot
            }


            [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پیشرفت است.با هم کار کردن موفقیت است.[/glow]
            [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

            دیدگاه


              #7
              پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

              نوشته اصلی توسط حمیدجان
              برنامه ای که میذارم مربوط به اینکه به وسیله ی اون روی تمام پین های پورت میکرو موج PWM داشته باشیم.

              در این برنامه فقط پورت A دارای موج pwm هست. برای اینکه تمام پورت ها دارای موج باشن کافیه بقیه پورت ها رو هم به برنامه اضافه کنیم.


              #include <mega32.h>


              interrupt [TIM0_OVF] void timer0_ovf_isr(void)//وقفه ی سرریز تایمر
              {
              PORTA=~PORTA;
              }


              interrupt [TIM0_COMP] void timer0_comp_isr(void)//وقفه ی مقایسه ی تایمر
              {
              PORTA=~PORTA;
              }

              void main(void)
              {
              DDRA=0xFF;
              DDRB=0x08;

              // Timer/Counter 0 initialization
              // Clock source: System Clock
              // Clock value: 0.977 kHz
              // Mode: Fast PWM top=0xFF
              // OC0 output: Non-Inverted PWM
              TCCR0=0x6D;
              TCNT0=0x00;
              OCR0=0x1F;


              TIMSK=0x03;
              ACSR=0x80;

              #asm("sei&quot
              }
              با تشکر
              ولی من بسکام کار میکنم . می تونید راهنمایی داشته باشید .
              دنیا بر پایه برنامه هایی هست که خدا با زبان برنامه نویسی خودش مینویسد . کامپایل شده آن این جهان و قوانین آن است . start آن تولد است و end آن مرگ . پر از گزینه های شرطی و دستورات حلقه و تکرار ...

              دیدگاه


                #8
                پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

                Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
                ENABLE INTERRUPTS
                ON OC1A LOP
                .
                .
                .
                .
                .
                : LOP


                ابتدا PWM رابسازید سپس با فعال کردنوقفه تطابق مقایسه در زیر رنامه ان هر پورتی یا پورتهایی را که دوست دارید مساوی OC1A قراردهید
                بعدا یه جمله قشنگ مینویسم

                دیدگاه


                  #9
                  پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

                  نوشته اصلی توسط r.babazadeh
                  15 تا متغییر بردار تو قبل مین برنامت هر مقداری که میخوای pwm داشته باشی رو به متغییر ها بده بعد یه زیر روال بساز و توش یه کانتر بزار به اندازه طول متغییرات مثلا اگر 8 بیتیه نتغییرات یه کانتر که تا 255 بشماره و تو این کانتر اول همه خروجی های متناظر با متغییرات رو یک کن بعد هر دفعه از تمام متغییرات یکی کم کن و هر کدوم رو چک کن که اگه هر کدوم صفر شده بودن خروجی متناظرش رو صفر کنی اخر 255 کانتر هم دوباره تمام خروجی هارو یک کنو دوباره متغییر ها رو ست کن
                  میشه یه برنامه عملی بزارین؟ ممنون میشم. اگه ممکنه با بسکام.

                  دیدگاه


                    #10
                    پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

                    سلام آقا یه سرس بزنید اینجا اگر ممکنه یه نمونه برنامه با بسکام بذارید
                    خیلی ممنون

                    دیدگاه


                      #11
                      پاسخ : در باره pwm نرم افزاری با یک مثال در بسکام

                      سلام دوستان
                      برای کسانی که از اینگونه موضوعات جستجو میکنند ولی چیز خوبی نصیبشون نشده این لینک رو میگذارم تا استفاده کنند ...
                      امیدوارم مفید باشه ....
                      چگونه همه پایه های میکروکنترلر را PWM کنیم ؟؟
                      با سه کامپایلر :
                      کدویژن
                      بسکام
                      اتمل استودیو
                      http://www.eca.ir/forum2/index.php?topic=90246.0
                      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                      معرفی نرم افزار Codewizard PWM
                      با من بیشتر آشنا شوید

                      دیدگاه

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