اطلاعیه

Collapse
No announcement yet.

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

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

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

    نوشته اصلی توسط شاهین شرق
    سلام.برای سه خروجی کردن تغییرات لازم رو دادم ولی این یه تیکه مشکل ایجاد می کرد:

    Portd = Portd and 252
    که مقدار و دستکاری کردم که توی شبیه ساز ظاهرا درست شد این دستور چیه ؟
    م در عمل مشکلی با این برنامه دارم.این برنامه در خروجی های میکرو ولتاژی بین ۰ تا ۴ ولت ایجاد می کنه ولی من نیاز به صفر تا ۵ ولت دارم.مگه pwm دامنه اش صفر تا ۵ ولت نیست؟
    انا لله و انا اليه الراجعون

    دیدگاه


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

      نوشته اصلی توسط شاهین شرق
      م در عمل مشکلی با این برنامه دارم.این برنامه در خروجی های میکرو ولتاژی بین ۰ تا ۴ ولت ایجاد می کنه ولی من نیاز به صفر تا ۵ ولت دارم.مگه pwm دامنه اش صفر تا ۵ ولت نیست؟
      بله درسته ...
      باید صفر تا VCC باشه ...
      VCC اگر 4 ولت باشه خروجی میکرو 4 ولت میشه ...
      یا اینکه شما دارید از میکرو جریان میکشید و در همان لحظه ولتاژ خروجی میکرو را میخوانید ... اگر این کار رو میکنید این غلطه ... چون جریان کشیدن باعث افت ولتاژ میشود ...
      در ضمن
      دوتا پایه AVCC و VCC را به هم وصل کنید و بعدش به 5V+ وصل کنید ...
      این چند مورد را بررسی کنید ...
      موفق باشید ...
      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
      معرفی نرم افزار Codewizard PWM
      با من بیشتر آشنا شوید

      دیدگاه


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

        سلام اقای اسدی عزیز ممنون از زحمات بیدریغ شما
        یک سوال برنامه کم نور شدن و پرنور شدن با مگا 8 و برنامه نویسی بیسکام موقع اجرا وسط کم نور و پور نور شدن یک خاموشی سریع یا قطعی در ال ای دی رخ میده نمونه برنامه رو میذارم مشاهدخ بفرمایید .
        [code=vb]$regfile = "m8def.dat"
        $crystal = 8000000

        Led1 Alias Portd.0
        Led2 Alias Portd.1
        Led3 Alias Portd.2
        Led4 Alias Portd.3
        Led5 Alias Portd.4
        Led6 Alias Portb.6
        Led7 Alias Portb.7
        Led8 Alias Portd.5
        Led9 Alias Portd.6
        Led10 Alias Portd.7
        Led11 Alias Portb.0
        Led12 Alias Portb.1
        Led13 Alias Portb.2
        Led14 Alias Portb.3
        Led15 Alias Portb.4
        Led16 Alias Portb.5


        Max_var_pwm Alias 99
        Max_led Alias 16

        Delay1 Alias 20
        'ms
        Delay2 Alias 200
        'ms
        Dim Pwm(35) As Byte , A As Byte , _
        Y2 As Byte , _
        X1 As Byte , X2 As Byte , X3 As Byte , D As Byte , X As Byte ,
        Y2 = Max_led + Max_led
        A = Max_var_pwm



        'Config All =============================================
        'Config Timers
        'Config Ports
        Config Timer0 = Timer , Prescale = 8
        Enable Interrupts
        Enable Timer0
        On Ovf0 T0
        Tcnt0 = 105
        Start Timer0
        Ddrb = 255
        Ddrd = 255
        'End Config ============================================
        Do
        '******************************

        For X1 = 0 To 99 Step 3
        Pwm(1) = X1
        Waitms Delay1
        Next X1
        For X1 = 99 To 0 Step -3
        Pwm(1) = X1
        Waitms Delay1
        Next X1
        Loop
        End 'end program
        '/////////////////////////////////////////////////////////////////////////

        T0:
        Tcnt0 = 105
        If A > 0 Then
        If A = Pwm(1) Then Led1 = 1
        If A = Pwm(2) Then Led2 = 1
        If A = Pwm(3) Then Led3 = 1
        If A = Pwm(4) Then Led4 = 1
        If A = Pwm(5) Then Led5 = 1
        If A = Pwm(6) Then Led6 = 1
        If A = Pwm(7) Then Led7 = 1
        If A = Pwm(8) Then Led8 = 1
        If A = Pwm(9) Then Led9 = 1
        If A = Pwm(10) Then Led10 = 1
        If A = Pwm(11) Then Led11 = 1
        If A = Pwm(12) Then Led12 = 1
        If A = Pwm(13) Then Led13 = 1
        If A = Pwm(14) Then Led14 = 1
        If A = Pwm(15) Then Led15 = 1
        If A = Pwm(16) Then Led16 = 1


        End If
        Decr A
        If A = 255 Then
        A = Max_var_pwm
        Portb = 0
        Portd = 0
        End If
        Return
        [/code]

        دیدگاه


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

          نوشته اصلی توسط stk
          سلام اقای اسدی عزیز ممنون از زحمات بیدریغ شما
          یک سوال برنامه کم نور شدن و پرنور شدن با مگا 8 و برنامه نویسی بیسکام موقع اجرا وسط کم نور و پور نور شدن یک خاموشی سریع یا قطعی در ال ای دی رخ میده نمونه برنامه رو میذارم مشاهدخ بفرمایید .
          [code=vb]$regfile = "m8def.dat"
          $crystal = 8000000

          Led1 Alias Portd.0
          Led2 Alias Portd.1
          Led3 Alias Portd.2
          Led4 Alias Portd.3
          Led5 Alias Portd.4
          Led6 Alias Portb.6
          Led7 Alias Portb.7
          Led8 Alias Portd.5
          Led9 Alias Portd.6
          Led10 Alias Portd.7
          Led11 Alias Portb.0
          Led12 Alias Portb.1
          Led13 Alias Portb.2
          Led14 Alias Portb.3
          Led15 Alias Portb.4
          Led16 Alias Portb.5


          Max_var_pwm Alias 99
          Max_led Alias 16

          Delay1 Alias 20
          'ms
          Delay2 Alias 200
          'ms
          Dim Pwm(35) As Byte , A As Byte , _
          Y2 As Byte , _
          X1 As Byte , X2 As Byte , X3 As Byte , D As Byte , X As Byte ,
          Y2 = Max_led + Max_led
          A = Max_var_pwm



          'Config All =============================================
          'Config Timers
          'Config Ports
          Config Timer0 = Timer , Prescale = 8
          Enable Interrupts
          Enable Timer0
          On Ovf0 T0
          Tcnt0 = 105
          Start Timer0
          Ddrb = 255
          Ddrd = 255
          'End Config ============================================
          Do
          '******************************

          For X1 = 0 To 99 Step 3
          Pwm(1) = X1
          Waitms Delay1
          Next X1
          For X1 = 99 To 0 Step -3
          Pwm(1) = X1
          Waitms Delay1
          Next X1
          Loop
          End 'end program
          '/////////////////////////////////////////////////////////////////////////

          T0:
          Tcnt0 = 105
          If A > 0 Then
          If A = Pwm(1) Then Led1 = 1
          If A = Pwm(2) Then Led2 = 1
          If A = Pwm(3) Then Led3 = 1
          If A = Pwm(4) Then Led4 = 1
          If A = Pwm(5) Then Led5 = 1
          If A = Pwm(6) Then Led6 = 1
          If A = Pwm(7) Then Led7 = 1
          If A = Pwm(8) Then Led8 = 1
          If A = Pwm(9) Then Led9 = 1
          If A = Pwm(10) Then Led10 = 1
          If A = Pwm(11) Then Led11 = 1
          If A = Pwm(12) Then Led12 = 1
          If A = Pwm(13) Then Led13 = 1
          If A = Pwm(14) Then Led14 = 1
          If A = Pwm(15) Then Led15 = 1
          If A = Pwm(16) Then Led16 = 1


          End If
          Decr A
          If A = 255 Then
          A = Max_var_pwm
          Portb = 0
          Portd = 0
          End If
          Return
          [/code]
          درود بر شما ...
          ممنونم از لطفتون ...
          فرکانسش 8 مگا هست ....
          آیا شما فیوزبیتها رو تغییر دادید؟
          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
          معرفی نرم افزار Codewizard PWM
          با من بیشتر آشنا شوید

          دیدگاه


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

            سلام اقای اسدی خسته نباشید
            من فیوزبیت رو روی 8 مگاهرتز داخلی تنظیم کردم.

            دیدگاه


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

              نوشته اصلی توسط stk
              سلام اقای اسدی خسته نباشید
              من فیوزبیت رو روی 8 مگاهرتز داخلی تنظیم کردم.
              درود بر شما ...
              بله درسته
              بررسی کردم ...
              ولی این دیگه مقصر من نیستم ...
              مقصر کامپایلر بد بسکام هست ...
              دقیقا همین کد را روی کدویژن امتحان کردم و عالی عالی جواب میده ....
              بدون یک ذره مکث و قطعی ...
              [code=c]
              /************************************************** ***
              This program was produced by the
              CodeWizardAVR V2.05.3 Standard
              Automatic Program Generator
              © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
              http://www.hpinfotech.com
              Project : 1 PWM
              Resolution : 100 States (0 To 99)
              Date : 18/Jan/2016
              Time : 2142
              Author : Saman.Asadi www.ECA.ir
              Author's Email : Saman.asadi.ir@gmail.com
              http://www.eca.ir/forum2/index.php?topic=90246.0
              Chip type : ATmega8
              Program type : Application
              AVR Core Clock frequency : 8 MHz
              Memory model : Small
              Data Stack size : 256
              ************************************************** ***/
              #include <mega8.h> //for ATmega8 or ATmega8L or ATmega8A
              #include <delay.h>

              #define Max_Variable_PWM 99
              #define Set_PWM Max_Variable_PWM
              #define Reset_PWM 0

              unsigned char Counter_PWM , pwm[3];

              interrupt [TIM2_COMP] void timer2_comp_isr(void);

              //pwm[1] ===> PORTD.0

              void main(void)
              {
              signed char x;
              //Config all
              //Config timers
              //Config PORTS
              {
              DDRD |= 0x01;
              // Timer/Counter 2 initialization
              // Clock source: System Clock
              // Clock value: 1000.000 KHz
              // Mode: CTC top=OCR2
              // OC2 output: Disconnected
              ASSR=0x00;
              TCCR2 = 0x0A;
              OCR2 = 0x99;
              TCNT2= 0x00;
              //Timer(s)/Counter(s) Interrupt(s) initialization
              TIMSK |= 0x80;
              // Global enable interrupts
              #asm("sei&quot
              }//End Config ...


              while(1)
              {
              for(x=0;x<100;x++)
              {
              pwm[1]=x;
              delay_ms(50);
              }
              for(x=99;x>0;x--)
              {
              pwm[1]=x;
              delay_ms(50);
              }
              }
              }


              // 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 == 255)
              {
              Counter_PWM = Max_Variable_PWM;
              PORTD &= 0xFE;
              }
              }
              [/code]
              این کد در کدویژن هست ...
              این هم کد در بسکام
              [code=qbasic]
              '******************************************** *********
              'Project : 1 PWM
              'Resolution : 100 States (0 To 99)
              'Date : 18/Jan/2016
              'Time : 2125
              'Author : Saman.Asadi www.ECA.ir
              'Author's Email : Saman.asadi.ir@gmail.com
              'http://www.eca.ir/forum2/index.php?topic=90246.0
              'Chip type : ATmega8
              'Program type : Application
              'AVR Core Clock frequency : 8 MHz
              '******************************************** *********
              $regfile = "m8def.dat" 'for ATmega8 or ATmega8A
              $crystal = 8000000
              Max_Variable_PWM Alias 99
              Set_PWM Alias Max_Variable_PWM
              Reset_PWM Alias 0

              Dim Counter_pwm As Byte , Pwm(3) As Byte

              'Config All =============================================
              Config Timer2 = TIMER , Prescale = 8
              Enable Compare2
              ON Compare2 T2
              ' Timer/Counter 2 initialization
              ' Clock source: System Clock
              ' Clock value: 1000.000 KHz
              ' Mode: CTC top=OCR2
              ' OC2 output: Disconnected
              Assr = &H00
              TCCR2 = &H0A
              OCR2 = &H99
              Tcnt2 = &H00
              'Timer(s)/Counter(s) Interrupt(s) initialization
              TIMSK = &H80
              'Global enable interrupts
              Enable Interrupts
              'Config Outputs
              DDRD = &H01 OR DDRD
              'End Config ============================================

              Dim X1 As Byte

              Do
              '******************************

              For X1 = 0 To 99 Step 1
              Pwm(1) = X1
              Waitms 50
              Next X1
              For X1 = 99 To 0 Step -1
              Pwm(1) = X1
              Waitms 50
              Next X1
              Loop
              End


              T2:
              If Counter_pwm > 0 Then
              If Counter_pwm = Pwm(1) Then PORTD = &H01 OR PORTD
              End If
              Decr Counter_pwm
              If Counter_pwm = 255 Then
              Counter_pwm = Max_variable_pwm
              PORTD = &HFE AND PORTD
              End If
              Return
              [/code]

              توی دوره کاردانی که بودم اینقدر اشکال از بسکام گرفتم که حد و حساب نداشت ...
              خیلی خیلی عذر میخوام ولی نظر شخصی منه ...
              بسکام اصلا جالب نیست ...
              از نظر خودم کدویژن بهترین نرم افزار برای این کاره ...
              دومین نرم افزاری که من پیشنهاد میکنم اتمل استودیو است ... (به همین دلیل ترتیب نرم افزارها را به این شکل در نرم افزارم قرار دادم)

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

              دیدگاه


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

                سلام آقای مهندس اسدی

                من فکر میکرم از تنظیمات من باشه یا میکرو . که گقتم شما هم یک چک کنید بر حال از شما متشکرم

                دیدگاه


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

                  سلام من هر دو برنامه سی و بیسکام را در عمل تست کردم بعد مدت کوتاهی قطعی دارن . جالبه

                  دیدگاه


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

                    نوشته اصلی توسط stk
                    سلام من هر دو برنامه سی و بیسکام را در عمل تست کردم بعد مدت کوتاهی قطعی دارن . جالبه
                    سلام
                    شما واچ تاگ رو فعال نکردید؟
                    این باید غیر فعال باشه هاااا ....
                    یه چیزه دیگه ....
                    اگر از منبع سوئیچینگ استفاده میکنید و جریان زیاد میکشید ممکنه خود منبع سوئیچینگ قطع و وصل کنه (عمل ریست)
                    یا اینکه ممکنه منبع تغذیه شما نویز داشته باشه .... و یا اینکه نویز داره روی اون تاثیر میگذاره ....
                    خازن 100 نانو موازی با تغذیه میکرو که هرچی نزدیکتر میکرو باشه بهتره ... و یک مقاومت یک کیلو هم به پایه ریست میکرو وصل کن و یه پایه دیگه رو به VCC وصل کن ...
                    این کارها رو کنید ...
                    ببینید بهتر نمیشه ...
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


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

                      سلام اقای مهندس خسته نباشید
                      من همه اینا رو چک کردم خازن100n گذاشتم قبل رگولاتور خازن 2200uf گذاشتم واچ داگ خاموش بود رست مقاومت بود و منبع تغذیه عوض کردم ولی همونه جالب اینجاست کار شو میکنه ولی بین کار خودش یک تک پرش بعضی اوقات دو پرش داره !!!!!!!! مندم شما هم تست کردید ؟ با تشکر

                      دیدگاه


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

                        نوشته اصلی توسط stk
                        سلام اقای مهندس خسته نباشید
                        من همه اینا رو چک کردم خازن100n گذاشتم قبل رگولاتور خازن 2200uf گذاشتم واچ داگ خاموش بود رست مقاومت بود و منبع تغذیه عوض کردم ولی همونه جالب اینجاست کار شو میکنه ولی بین کار خودش یک تک پرش بعضی اوقات دو پرش داره !!!!!!!! مندم شما هم تست کردید ؟ با تشکر
                        درود بر شما
                        حقیقتش نه ....
                        امروز میخواستم وسایل از شرکت بیارم و خونه امتحانش کنم ... ولی متاسفانه فراموش کردم ...
                        من با پروتئوس تست زدم و هیچ پرشی مشاهده نشد ....
                        ولی حتما حتما فردا یعنی پنج شنبه وسایل رو از شرکت میارم خونه و امتحان میکنم ....
                        موفق باشید ...
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


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

                          نوشته اصلی توسط stk
                          سلام اقای مهندس خسته نباشید
                          من همه اینا رو چک کردم خازن100n گذاشتم قبل رگولاتور خازن 2200uf گذاشتم واچ داگ خاموش بود رست مقاومت بود و منبع تغذیه عوض کردم ولی همونه جالب اینجاست کار شو میکنه ولی بین کار خودش یک تک پرش بعضی اوقات دو پرش داره !!!!!!!! مندم شما هم تست کردید ؟ با تشکر
                          منم تست کردم ی پرشی داره oo:
                          http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                          دیدگاه


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

                            درود بر تمامی دوستان ... به خصوص stk عزیز ...
                            مشکل را یافتم ...
                            مشکل عجیبی که تا الان به طور کاملا اتفاقی ندیده بودم و جالب اینجاست که پس از این همه مدت و این همه بازدید از دوستان حتی یک نفر هم پیدا نشد که این مشکل رو بیان کنه ...
                            ببینید اگر ما زمان تغییر دادن []pwm را خیلی کم بگیریم باعث میشود در کار pwm اختلال پیش آید ...
                            ما باید در نرم افزار تعریف کنیم که پیش از آنکه خواستیم آرایه pwm با اندیس مورد نظر را تغییر دهیم باید ابتدا صبر کنیم که زمان یک سیکل کاری PWM به پایان برسد سپس آن را تغییر دهیم ... دقیقا همان کاری که میکروکنترلر در PWM سخت افزاری انجام میدهد ...
                            پس باید پیش از تغییر دیوتی سایکل ابتدا این شرط گذاشته شود ...
                            کد در زبان سی(کدویژن و اتمل استودیو)
                            کد:
                            while(Counter_PWM != Max_Variable_PWM);
                            کد در زبان بیسیک(بسکام)
                            کد:
                            While Counter_pwm <> Max_variable_pwm : Wend
                            لازم به ذکر است که این مشکل زمانی پیش می آید که مقدار PWM را بخواهید افزایش دهید ...

                            یک کد دیگری هم هست که پردازش کمتر میگیره ...
                            کد در زبان سی(کدویژن و اتمل استودیو)
                            کد:
                            if(pwm[1] && Counter_PWM > pwm[1])while(Counter_PWM >= pwm[1]);
                            کد در زبان بیسیک(بسکام)
                            کد:
                            If Pwm(1) > 0 And Counter_pwm > Pwm(1) Then While Counter_pwm >= Pwm(1) : Wend
                            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                            معرفی نرم افزار Codewizard PWM
                            با من بیشتر آشنا شوید

                            دیدگاه


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

                              سلام اقای مهندس با تشکر فراوان
                              اقای مهندس این دو خط به زبان c هست به زبان بیسیک هم میفرمایید و یک نمونه برنامه کامل به زبان c و به زبان بیسیک
                              میفرمایید تا محل قرار گیری این دو خط را ببینیم .با تشکر

                              دیدگاه


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

                                نوشته اصلی توسط stk
                                سلام اقای مهندس با تشکر فراوان
                                اقای مهندس این دو خط به زبان c هست به زبان بیسیک هم میفرمایید و یک نمونه برنامه کامل به زبان c و به زبان بیسیک
                                میفرمایید تا محل قرار گیری این دو خط را ببینیم .با تشکر
                                درود بر شما ...
                                ببخشید که دیر شد ...
                                این هم کد کامل برای بیسیک
                                کد:
                                '*****************************************************
                                'Project          : 1 PWM
                                'Resolution        : 100 States (0 To 99)
                                'Date           : 23/Jan/2016
                                'Time           : 23:37:44
                                'Author          : Saman.Asadi  www.ECA.ir
                                'Author's Email      : Saman.asadi.ir@gmail.com
                                'http://www.eca.ir/forum2/index.php?topic=90246.0
                                'Chip type         : ATmega8
                                'Program type       : Application
                                'AVR Core Clock frequency : 8  MHz
                                '*****************************************************
                                $regfile = "m8def.dat"                   'for ATmega8 or ATmega8A
                                $crystal = 8000000
                                Max_variable_pwm Alias 99
                                Set_pwm Alias Max_variable_pwm
                                Reset_pwm Alias 0
                                
                                Dim Counter_pwm As Byte , Pwm(3) As Byte
                                
                                'Config All =============================================
                                   Config Timer2 = Timer , Prescale = 8
                                   Enable Compare2
                                   On Compare2 T2
                                   ' Timer/Counter 2 initialization
                                   ' Clock source: System Clock
                                   ' Clock value: 1000.000 KHz
                                   ' Mode: CTC top=OCR2
                                   ' OC2 output: Disconnected
                                   Assr = &H00
                                   Tccr2 = &H0A
                                   Ocr2 = &H99
                                   Tcnt2 = &H00
                                   'Timer(s)/Counter(s) Interrupt(s) initialization
                                   Timsk = &H80
                                  'Global enable interrupts
                                  Enable Interrupts
                                  'Config Outputs
                                   Ddrd = &H01 Or Ddrd
                                'End Config ============================================
                                
                                  Dim X1 As Byte
                                
                                  Do
                                 '******************************
                                
                                  For X1 = 0 To 99 Step 1
                                   While Counter_pwm <> Max_variable_pwm : Wend
                                   Pwm(1) = X1
                                   Waitms 50
                                  Next X1
                                  For X1 = 99 To 0 Step -1
                                   While Counter_pwm <> Max_variable_pwm : Wend
                                   Pwm(1) = X1
                                   Waitms 50
                                  Next X1
                                 Loop
                                End
                                
                                
                                T2:
                                  If Counter_pwm > 0 Then
                                    If Counter_pwm = Pwm(1) Then Portd = &H01 Or Portd
                                  End If
                                  Decr Counter_pwm
                                  If Counter_pwm = 255 Then
                                    Counter_pwm = Max_variable_pwm
                                    Portd = &HFE And Portd
                                  End If
                                Return
                                موفق باشید
                                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                                معرفی نرم افزار Codewizard PWM
                                با من بیشتر آشنا شوید

                                دیدگاه

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