اطلاعیه

Collapse
No announcement yet.

چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

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

    پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

    سلام وقت بخیر
    آقا تو این برنامه RGB برای ATMEGA16 من کدها رو تو برنامه کدویژن کامپایل می کنم اما به قسمتهایی که
    PWM[1] = RGB_0_to_511
    &
    7; دارند خطا میگیره اینم کد خطا
    Error: undefined symbol 'amp'

    لطفا کمکم کنید

    دیدگاه


      پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

      سلام برادر بزرگوار
      با اجازه اساتید
      ببینید بر اساس خود خطا شما یک عبارت تعریف نشده را استفاده کردید!
      چک کنید که کدام خط و کدام عبارت بدون مرجع مانده است.
      نگران نباشید حل میشه

      دیدگاه


        پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

        هرکاری می کنم به این عبارت هایی که توش amp داره خطا میده اصلا اونا رو نمیشناسه
        خودمم نمیدونم این amp چیه تا حداقل معادلشو جاش بزارم
        void RGB1(unsigned int RGB_0_to_511)
        {
        PWM[1] = RGB_0_to_511 & 7;
        RGB_0_to_511 /= 8;
        PWM[2] = RGB_0_to_511 & 7;
        RGB_0_to_511 /= 8;
        PWM[3] = RGB_0_to_511 & 7;
        }
        اگه کسی میدونه این amp ها چین یا اگه یه کتابخونه ای داره که باید اضافه بشه بگید الان چند روزه درگیرشم حل نمیشه

        لینک کل برنامه
        جدیدترین ویرایش توسط mojtabair; ۲۰:۵۴ ۱۳۹۷/۱۲/۰۸.

        دیدگاه


          پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

          سلام
          یه زحمت بکش پوشه برنامه ایجاد شده با کد ویژن را آپلود کن تا اگر متوجه شدم اصلاحش کنم.
          اون عبارت AMP به خاطر این وجود داره که کد در محیط وب گذاشته شده!
          ولی منم اون ابتدای ران گرفتن باهاش مشکل داشتم تا کلا اصلاحش کردم
          خاطرم نیست و لی اگر کد را ببینم متوجه میشم
          آپلودش کن

          دیدگاه


            پاسخ : (برنامه اصلاح شد) چگونه تمام پایه های ATmega16-32-64-128 را PWM کنیم ؟؟!!

            بسیار عالی...مهندس سامان....سپاسگزارم از مطالب اموزندتون....عالیه...بدرد کار من زیاد اومد

            دیدگاه


              پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

              سلام مهندس "سامان اسدی" خدا قوت
              بسیار اموزنده بود ..از اینکه وقت میذارید و با حوصله به تمام پرسش ها پاسخ میدین ممنونم
              من تمام 31 صفحه این مطلب رو خوندم بسیار مطالب جالبی اموختم
              خدا قوت

              دیدگاه


                پاسخ : چگونه تمام پایه های ATmega16-32-64-128 را PWM کنیم ؟؟!!! [آموزشی]

                سلام دوستان یه سوال داشتم .
                من چجوری می تونم با استفاده از timer0 و timer2 یک موج pwm 10bit تولید کنم ؟

                دیدگاه


                  پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

                  نوشته اصلی توسط محمد رضا نسرین پور نمایش پست ها
                  سلام مهندس "سامان اسدی" خدا قوت
                  بسیار اموزنده بود ..از اینکه وقت میذارید و با حوصله به تمام پرسش ها پاسخ میدین ممنونم
                  من تمام 31 صفحه این مطلب رو خوندم بسیار مطالب جالبی اموختم
                  خدا قوت
                  درود بر شما
                  خواهش میکنم برادر
                  واقعاااااا از ته دلم اینو میگم که .... خدا قوت واقعا .... که حوصله به خرج دادین این 31 صفحه رو خوندید

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  نوشته اصلی توسط Fatemehra10 نمایش پست ها
                  سلام دوستان یه سوال داشتم .
                  من چجوری می تونم با استفاده از timer0 و timer2 یک موج pwm 10bit تولید کنم ؟
                  درود بر شما
                  نمیشه با تایمر هشت بیتی یک موج با دقت ده بیتی درست کنید
                  شاد و پیروز باشید
                  [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                  معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                  معرفی نرم افزار Codewizard PWM
                  با من بیشتر آشنا شوید

                  دیدگاه


                    پاسخ : چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

                    نوشته اصلی توسط mojtabair نمایش پست ها
                    هرکاری می کنم به این عبارت هایی که توش amp داره خطا میده اصلا اونا رو نمیشناسه
                    خودمم نمیدونم این amp چیه تا حداقل معادلشو جاش بزارم
                    void RGB1(unsigned int RGB_0_to_511)
                    {
                    PWM[1] = RGB_0_to_511 & 7;
                    RGB_0_to_511 /= 8;
                    PWM[2] = RGB_0_to_511 & 7;
                    RGB_0_to_511 /= 8;
                    PWM[3] = RGB_0_to_511 & 7;
                    }
                    اگه کسی میدونه این amp ها چین یا اگه یه کتابخونه ای داره که باید اضافه بشه بگید الان چند روزه درگیرشم حل نمیشه

                    لینک کل برنامه
                    https://www.eca.ir/forums/thread48596-12.html
                    درود بر شما
                    ببخشید دیر شد
                    برنامه با کلی اصلاح تقدیم شما

                    /*****************************************************
                    Project : 22 PWM or ( 7 RGB and 1 PWM)
                    Resolution : 8 States (0 To 7)
                    Date : 23/Mar/2021
                    Time : 01:14:39
                    Author : Saman.Asadi www.ECA.ir
                    Author's Email : Saman.asadi.ir@gmail.com
                    Chip type : ATmega8
                    AVR Core Clock frequency : 8 MHz
                    *****************************************************/
                    #include <mega8.h> //for ATmega8 or ATmega8L or ATmega8A
                    #include <delay.h>


                    #define Max_Variable_PWM 7
                    #define Set_PWM Max_Variable_PWM
                    #define Reset_PWM 0


                    unsigned char Counter__pwm , _pwm[24] ,pwm[24];


                    interrupt [TIM2_COMP] void timer2_comp_isr(void);
                    void RGB1(unsigned int input_0_to_511);
                    void RGB2(unsigned int input_0_to_511);
                    void RGB3(unsigned int input_0_to_511);
                    void RGB4(unsigned int input_0_to_511);
                    void RGB5(unsigned int input_0_to_511);
                    void RGB6(unsigned int input_0_to_511);
                    void RGB7(unsigned int input_0_to_511);


                    //pwm[1] ===> PORTD.0 ¯¯¯¯¯\
                    //pwm[2] ===> PORTD.1 ———RGB1()
                    //pwm[3] ===> PORTD.2 _____/
                    //pwm[4] ===> PORTD.3 ¯¯¯¯¯\
                    //pwm[5] ===> PORTD.4 ———RGB2()
                    //pwm[6] ===> PORTB.6 _____/
                    //pwm[7] ===> PORTB.7 ¯¯¯¯¯\
                    //pwm[8] ===> PORTD.5 ———RGB3()
                    //pwm[9] ===> PORTD.6 _____/
                    //pwm[10] ===> PORTD.7 ¯¯¯¯¯\
                    //pwm[11] ===> PORTB.0 ———RGB4()
                    //pwm[12] ===> PORTB.1 _____/
                    //pwm[13] ===> PORTB.2 ¯¯¯¯¯\
                    //pwm[14] ===> PORTB.3 ———RGB5()
                    //pwm[15] ===> PORTB.4 _____/
                    //pwm[16] ===> PORTB.5 ¯¯¯¯¯\
                    //pwm[17] ===> PORTC.0 ———RGB6()
                    //pwm[18] ===> PORTC.1 _____/
                    //pwm[19] ===> PORTC.2 ¯¯¯¯¯\
                    //pwm[20] ===> PORTC.3 ———RGB7()
                    //pwm[21] ===> PORTC.4 _____/
                    //pwm[22] ===> PORTC.5


                    void main(void)
                    {
                    //Config all
                    //Config timers
                    //Config PORTS
                    {
                    DDRB |= 0xFF;
                    DDRC |= 0x3F;
                    DDRD |= 0xFF;
                    // Timer/Counter 2 initialization
                    // Clock source: System Clock
                    // Clock value: 125.000 KHz
                    // Mode: CTC top=OCR2
                    // OC2 output: Disconnected
                    ASSR=0x00;
                    TCCR2 = 0x0C;
                    OCR2 = 0x9C;
                    TCNT2= 0x00;
                    //Timer(s)/Counter(s) Interrupt(s) initialization
                    TIMSK |= 0x80;
                    // Global enable interrupts
                    #asm("sei")
                    }//End Config ...


                    RGB1(222);
                    RGB2(222);
                    RGB3(222);
                    RGB4(222);
                    RGB5(222);
                    RGB6(222);
                    RGB7(222);
                    while(1)
                    {
                    // Place your code here
                    }




                    }




                    // Timer 2 output compare interrupt service routine
                    interrupt [TIM2_COMP] void timer2_comp_isr(void)
                    {
                    if(Counter__pwm)
                    {
                    if(Counter__pwm == _pwm[1]) PORTD |= 0x01;
                    if(Counter__pwm == _pwm[2]) PORTD |= 0x02;
                    if(Counter__pwm == _pwm[3]) PORTD |= 0x04;
                    if(Counter__pwm == _pwm[4]) PORTD |= 0x08;
                    if(Counter__pwm == _pwm[5]) PORTD |= 0x10;
                    if(Counter__pwm == _pwm[6]) PORTB |= 0x40;
                    if(Counter__pwm == _pwm[7]) PORTB |= 0x80;
                    if(Counter__pwm == _pwm[8]) PORTD |= 0x20;
                    if(Counter__pwm == _pwm[9]) PORTD |= 0x40;
                    if(Counter__pwm == _pwm[10]) PORTD |= 0x80;
                    if(Counter__pwm == _pwm[11]) PORTB |= 0x01;
                    if(Counter__pwm == _pwm[12]) PORTB |= 0x02;
                    if(Counter__pwm == _pwm[13]) PORTB |= 0x04;
                    if(Counter__pwm == _pwm[14]) PORTB |= 0x08;
                    if(Counter__pwm == _pwm[15]) PORTB |= 0x10;
                    if(Counter__pwm == _pwm[16]) PORTB |= 0x20;
                    if(Counter__pwm == _pwm[17]) PORTC |= 0x01;
                    if(Counter__pwm == _pwm[18]) PORTC |= 0x02;
                    if(Counter__pwm == _pwm[19]) PORTC |= 0x04;
                    if(Counter__pwm == _pwm[20]) PORTC |= 0x08;
                    if(Counter__pwm == _pwm[21]) PORTC |= 0x10;
                    if(Counter__pwm == _pwm[22]) PORTC |= 0x20;
                    }
                    if(--Counter__pwm == 255)
                    {
                    Counter__pwm = Max_Variable_PWM;
                    _pwm[1]=pwm[1];
                    _pwm[2]=pwm[2];
                    _pwm[3]=pwm[3];
                    _pwm[4]=pwm[4];
                    _pwm[5]=pwm[5];
                    _pwm[6]=pwm[6];
                    _pwm[7]=pwm[7];
                    _pwm[8]=pwm[8];
                    _pwm[9]=pwm[9];
                    _pwm[10]=pwm[10];
                    _pwm[11]=pwm[11];
                    _pwm[12]=pwm[12];
                    _pwm[13]=pwm[13];
                    _pwm[14]=pwm[14];
                    _pwm[15]=pwm[15];
                    _pwm[16]=pwm[16];
                    _pwm[17]=pwm[17];
                    _pwm[18]=pwm[18];
                    _pwm[19]=pwm[19];
                    _pwm[20]=pwm[20];
                    _pwm[21]=pwm[21];
                    _pwm[22]=pwm[22];
                    PORTB &= 0x0;
                    PORTC &= 0xC0;
                    PORTD &= 0x0;
                    }
                    }


                    void RGB1(unsigned int input_0_to_511)
                    {
                    if( input_0_to_511>511)return;
                    pwm[1] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[2] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[3] = input_0_to_511 & 0x07;
                    }
                    void RGB2(unsigned int input_0_to_511)
                    {
                    if(input_0_to_511>511)return;
                    pwm[4] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[5] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[6] = input_0_to_511 & 0x07;
                    }
                    void RGB3(unsigned int input_0_to_511)
                    {
                    if(input_0_to_511>511)return;
                    pwm[7] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[8] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[9] = input_0_to_511 & 0x07;
                    }
                    void RGB4(unsigned int input_0_to_511)
                    {
                    if(input_0_to_511>511)return;
                    pwm[10] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[11] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[12] = input_0_to_511 & 0x07;
                    }
                    void RGB5(unsigned int input_0_to_511)
                    {
                    if(input_0_to_511>511)return;
                    pwm[13] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[14] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[15] = input_0_to_511 & 0x07;
                    }
                    void RGB6(unsigned int input_0_to_511)
                    {
                    if(input_0_to_511>511)return;
                    pwm[16] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[17] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[18] = input_0_to_511 & 0x07;
                    }
                    void RGB7(unsigned int input_0_to_511)
                    {
                    if(input_0_to_511>511)return;
                    pwm[19] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[20] = input_0_to_511 & 0x07;
                    input_0_to_511 /= 8;
                    pwm[21] = input_0_to_511 & 0x07;
                    }


                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه

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