اطلاعیه

Collapse
No announcement yet.

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

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

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

    میگم سامان جان این قسمت که مربوط به ریست کردن پایه هاس باید پایه هایی که تعریف کردیم صفر بشن درسته؟این دستورات :

    کد:
    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
    
      End If
      Decr A
      If A = 255 Then
       A = Max_var_pwm
       Portb = 0
       Portc = 0
       Portd = 0
      End If

    به این تبدیل بشه:

    کد:
    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
    
      End If
      Decr A
      If A = 255 Then
       A = Max_var_pwm
          Portd =&b00000111
      End If

    پایه های D0 تا D4 رو pwm در نظر گرفتم بقیه رو حذف کردم :rolleyes:

    اضافه شده در تاریخ :
    البته فک کنم از سمت راست باید صفر میکردم :-/
    در روزگاری که لبخند ادم ها بخاطر شکست توست برخیز تا بگیرند.........

    دیدگاه


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

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

      کد:
      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
      
        End If
        Decr A
        If A = 255 Then
         A = Max_var_pwm
         Portb = 0
         Portc = 0
         Portd = 0
        End If

      به این تبدیل بشه:

      کد:
      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
      
        End If
        Decr A
        If A = 255 Then
         A = Max_var_pwm
            Portd =&b00000111
        End If

      پایه های D0 تا D4 رو pwm در نظر گرفتم بقیه رو حذف کردم :rolleyes:
      کد:
      Portd = Portd AND &b11100000
      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
      معرفی نرم افزار Codewizard PWM
      با من بیشتر آشنا شوید

      دیدگاه


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

        نوشته اصلی توسط sina nz
        سلام خوب هستید
        میشه منو راهنمایی کنید من میخوام با کدویژن یک فلاشر 8کانال با میکرو mega 8 ya mega16 بسازم اما میخوام از طریق pwm باشه یعنی اینکه نورش کم و زیاد بشه و بتونم سرعتش رو با ولوم و افکتهای مختلف رو با میکروسوییچ تغییر بدم
        واقعا ممنون میشم کمکم کنید
        یک برنامه دارم که این کارو میکنه اما نور ال ای دی ها قطع و وصل میشه یعنی کم نور و پر نور نمیشه
        سلام
        ممنون
        تمام رنگی میخوای باشه یا تک رنگ ؟؟
        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
        معرفی نرم افزار Codewizard PWM
        با من بیشتر آشنا شوید

        دیدگاه


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

          سلام آقا سامان
          خیلی جالب بود
          من میخواستم ببینم میشه با همین روشی که گفتید برنامه ای نوشت که فرکانس و PWM رو هر دوش رو تغیر داد؟؟؟
          من میخوام 2 تا ولوم داشته باشم که یکیش فرکانسو از 1 تا 100 هرتز تغیر بده و یکیش PWM رو از 1% تا 100% تغیر بده و اینکارو کردم و لی خوب جواب نمیده
          قسمت مربوطه این شکلیه ...
          [code=qbasic]

          Loop
          Debounce Start_key , 0 , Manual

          For Temp_for = T1 To 1 Step -1
          Set Pulse1
          Set Pulse2
          Set Pulse3
          Set Pulse4
          Set Bz
          Waitus 80
          Next
          For Temp_for = T2 To 1 Step -1
          Reset Pulse1
          Reset Pulse2
          Reset Pulse3
          Reset Pulse4
          Reset Bz
          Waitus 80
          Next

          Loop
          [/code]

          [code=qbasic]
          Sub Frequence_m:
          Temp_adc1 = Getadc(1)
          Temp_adc2 = Getadc(2)
          Frequence = Temp_adc2 / 10.24
          Pwm = Temp_adc1 / 10.24

          If Frequence <= 1 Then Frequence = 1
          If Pwm <= 1 Then Pwm = 1
          If Frequence >= 100 Then Frequence = 100
          If Pwm >= 100 Then Pwm = 100

          Time_all = 1000000 / Frequence
          T1 = Pwm * Time_all
          T1 = T1 / 100
          T2 = Time_all - T1
          T1 = T1 / 100
          T2 = T2 / 100
          Return
          End Sub
          [/code]


          میشه کمکم کنید تا اصولی این کارو کنم ؟
          خیلی وقته دارم روش کار میکنم ولی نتیجه نگرفتم
          دعا پشتِ دعا برای آمدنت
          گناه پشــــــتِ گناه برای نیامــدنت
          دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
          کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

          دیدگاه


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

            نوشته اصلی توسط مرتضی بیگدلی
            سلام آقا سامان
            خیلی جالب بود
            من میخواستم ببینم میشه با همین روشی که گفتید برنامه ای نوشت که فرکانس و PWM رو هر دوش رو تغیر داد؟؟؟
            من میخوام 2 تا ولوم داشته باشم که یکیش فرکانسو از 1 تا 100 هرتز تغیر بده و یکیش PWM رو از 1% تا 100% تغیر بده و اینکارو کردم و لی خوب جواب نمیده
            قسمت مربوطه این شکلیه ...
            [code=qbasic]

            Loop
            Debounce Start_key , 0 , Manual

            For Temp_for = T1 To 1 Step -1
            Set Pulse1
            Set Pulse2
            Set Pulse3
            Set Pulse4
            Set Bz
            Waitus 80
            Next
            For Temp_for = T2 To 1 Step -1
            Reset Pulse1
            Reset Pulse2
            Reset Pulse3
            Reset Pulse4
            Reset Bz
            Waitus 80
            Next

            Loop
            [/code]

            [code=qbasic]
            Sub Frequence_m:
            Temp_adc1 = Getadc(1)
            Temp_adc2 = Getadc(2)
            Frequence = Temp_adc2 / 10.24
            Pwm = Temp_adc1 / 10.24

            If Frequence <= 1 Then Frequence = 1
            If Pwm <= 1 Then Pwm = 1
            If Frequence >= 100 Then Frequence = 100
            If Pwm >= 100 Then Pwm = 100

            Time_all = 1000000 / Frequence
            T1 = Pwm * Time_all
            T1 = T1 / 100
            T2 = Time_all - T1
            T1 = T1 / 100
            T2 = T2 / 100
            Return
            End Sub
            [/code]


            میشه کمکم کنید تا اصولی این کارو کنم ؟
            خیلی وقته دارم روش کار میکنم ولی نتیجه نگرفتم
            درود بر شما
            آقا این سوالتون مارو خندوند بعد گریوند ..
            خنده از اینکه به ظاهر سوالتون خیلی ابتدایی بود و گریه به دلیل اینکه در باطن سخت بود
            شوخی بود خواستم بخندی :agree:
            ببین من این برنامه رو نوشتم ولی نمیدونم چرا تا فرکانس رو میخوای زیاد کنی چند ثانیه میکرو کار نمیکنه و بعد شروع به کار میکنه ...
            هر چی گشتم مشکلش رو نفهمیدم کجا هست ...
            این هم برنامه :
            [code=vb]

            $regfile = "m8def.dat"
            $crystal = 8000000
            $hwstack = 100
            $swstack = 100
            $framesize = 100
            Dim Dc As Word , Dc2 As Word , F As Word , F2 As Word
            Dim Cycle As Single , A As Long
            Config Adc = Single , Prescaler = Auto , Reference = Avcc
            Start Adc

            Config Portb.1 = Output
            Config Portb.2 = Output

            'config timer1 ==============
            Tccr1a = &HB2
            Tccr1b = &H1D
            '============================

            Do
            Dc = Getadc(4) / 10
            F = Getadc(5) / 10
            If Dc = 0 Then
            Dc = 1
            Elseif Dc > 100 Then
            Dc = 100
            End If
            If F = 0 Then
            F = 1
            Elseif F > 100 Then
            F = 100
            End If
            Cycle = 1 / F
            F = Cycle / 0.000128
            A = F * Dc
            A = A / 100
            Dc = A
            If F <> F2 Or Dc <> Dc2 Then
            Icr1 = F
            Ocr1a = Dc
            Ocr1b = Dc
            F2 = F
            Dc2 = Dc
            End If
            Loop
            End
            [/code]
            برنامه دوتا خروجی معکوس هم داره که میتونید از هر کدام که خواستید استفاده کنید ...
            در ضمن من بسکام زیاد بلد نیستم ...
            این رو توی عمل تست کن ببین خوبه ؟؟
            این هم فایل پروتئوس همراه با سورس
            http://s4.picofile.com/file/8163800434/PWM_duty_cycle.zip.html
            موفق باشید
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


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

              کاش همه تاپیکها اینجوری بود .
              کسی که موضوع رو مطرح میکرد به سوالات هم این قدر با حوصله جواب میداد.
              ممنون که اطلاعاتتون رو رایگان در اختیار بقیه میزارین .
              این پستو زدم . چون فکر میکنم یه لایک کمه !
              اِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
              کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

              دیدگاه


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

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

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

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

                دیدگاه


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

                  اقا سامان واقا ممنون :rolleyes:
                  خیلی خوب هست فقط یک مشکلی :sad:
                  اگه اشتباه نکنم تو برنامه ای که نوشتید از تایمر استفاده شده و و از پایه های
                  Config Portb.1 = Output
                  Config Portb.2 = Output
                  که خروجی مد PWM هستش
                  مشکل اینجاست که من مدارمو ساختم و 4 خروجیمو به d0 تا d3 میکرو مگا128 دادم .
                  تواین برنامه ای که نوشتید حتما باید از پایه های Oc1a وOc1 استفاده کرد ؟؟
                  نمیشه به صورت نرم افزاری پایه Oc1a رو به پایه هایی که میخوام وصلش کنم ؟؟ تا مشکلم حل شه ؟؟
                  از تایمر 2 به عنوان کانتر برای کار دیگه ای تو بردم استفاده کردم و از یکی از تایمر ها هم برای زمان سنجی کانتر باید استفاده کنم بقیه تایمر هام خالیه برای اینکار
                  نمیشه برنامه رو جوری نوشت که فقط تایمر استفاده بشه و پایه های خروجی رو خودمون مشخص کنیم ؟؟؟ مشکل من اینه که مدارو ساختم :sad:
                  دعا پشتِ دعا برای آمدنت
                  گناه پشــــــتِ گناه برای نیامــدنت
                  دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
                  کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

                  دیدگاه


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

                    نوشته اصلی توسط مرتضی بیگدلی
                    اقا سامان واقا ممنون :rolleyes:
                    خیلی خوب هست فقط یک مشکلی :sad:
                    اگه اشتباه نکنم تو برنامه ای که نوشتید از تایمر استفاده شده و و از پایه های
                    Config Portb.1 = Output
                    Config Portb.2 = Output
                    که خروجی مد PWM هستش
                    مشکل اینجاست که من مدارمو ساختم و 4 خروجیمو به d0 تا d3 میکرو مگا128 دادم .
                    تواین برنامه ای که نوشتید حتما باید از پایه های Oc1a وOc1 استفاده کرد ؟؟
                    نمیشه به صورت نرم افزاری پایه Oc1a رو به پایه هایی که میخوام وصلش کنم ؟؟ تا مشکلم حل شه ؟؟
                    از تایمر 2 به عنوان کانتر برای کار دیگه ای تو بردم استفاده کردم و از یکی از تایمر ها هم برای زمان سنجی کانتر باید استفاده کنم بقیه تایمر هام خالیه برای اینکار
                    نمیشه برنامه رو جوری نوشت که فقط تایمر استفاده بشه و پایه های خروجی رو خودمون مشخص کنیم ؟؟؟ مشکل من اینه که مدارو ساختم :sad:
                    خواهش میکنم ...
                    بله از تایمر یک استفاده شده ...
                    ببین 1تا 100 هرتز زمان زیادی میخواد تا به اون چیزی که میخواین فرکانس بسازه ...
                    این جا رو ببین
                    کد:
                    Frequency = 1Hz		Period = 1000ms
                    Frequency = 2Hz		Period = 500ms
                    Frequency = 3Hz		Period = 333.333ms
                    Frequency = 4Hz		Period = 250ms
                    Frequency = 5Hz		Period = 200ms
                    Frequency = 6Hz		Period = 166.667ms
                    Frequency = 7Hz		Period = 142.857ms
                    Frequency = 8Hz		Period = 125ms
                    Frequency = 9Hz		Period = 111.111ms
                    Frequency = 10Hz	Period = 100ms
                    Frequency = 11Hz	Period = 90.9091ms
                    Frequency = 12Hz	Period = 83.3333ms
                    Frequency = 13Hz	Period = 76.9231ms
                    Frequency = 14Hz	Period = 71.4286ms
                    Frequency = 15Hz	Period = 66.6667ms
                    Frequency = 16Hz	Period = 62.5ms
                    Frequency = 17Hz	Period = 58.8235ms
                    Frequency = 18Hz	Period = 55.5556ms
                    Frequency = 19Hz	Period = 52.6316ms
                    Frequency = 20Hz	Period = 50ms
                    Frequency = 21Hz	Period = 47.619ms
                    Frequency = 22Hz	Period = 45.4545ms
                    Frequency = 23Hz	Period = 43.4783ms
                    Frequency = 24Hz	Period = 41.6667ms
                    Frequency = 25Hz	Period = 40ms
                    Frequency = 26Hz	Period = 38.4615ms
                    Frequency = 27Hz	Period = 37.037ms
                    Frequency = 28Hz	Period = 35.7143ms
                    Frequency = 29Hz	Period = 34.4828ms
                    Frequency = 30Hz	Period = 33.3333ms
                    Frequency = 31Hz	Period = 32.2581ms
                    Frequency = 32Hz	Period = 31.25ms
                    Frequency = 33Hz	Period = 30.303ms
                    Frequency = 34Hz	Period = 29.4118ms
                    Frequency = 35Hz	Period = 28.5714ms
                    Frequency = 36Hz	Period = 27.7778ms
                    Frequency = 37Hz	Period = 27.027ms
                    Frequency = 38Hz	Period = 26.3158ms
                    Frequency = 39Hz	Period = 25.641ms
                    Frequency = 40Hz	Period = 25ms
                    Frequency = 41Hz	Period = 24.3902ms
                    Frequency = 42Hz	Period = 23.8095ms
                    Frequency = 43Hz	Period = 23.2558ms
                    Frequency = 44Hz	Period = 22.7273ms
                    Frequency = 45Hz	Period = 22.2222ms
                    Frequency = 46Hz	Period = 21.7391ms
                    Frequency = 47Hz	Period = 21.2766ms
                    Frequency = 48Hz	Period = 20.8333ms
                    Frequency = 49Hz	Period = 20.4082ms
                    Frequency = 50Hz	Period = 20ms
                    Frequency = 51Hz	Period = 19.6078ms
                    Frequency = 52Hz	Period = 19.2308ms
                    Frequency = 53Hz	Period = 18.8679ms
                    Frequency = 54Hz	Period = 18.5185ms
                    Frequency = 55Hz	Period = 18.1818ms
                    Frequency = 56Hz	Period = 17.8571ms
                    Frequency = 57Hz	Period = 17.5439ms
                    Frequency = 58Hz	Period = 17.2414ms
                    Frequency = 59Hz	Period = 16.9492ms
                    Frequency = 60Hz	Period = 16.6667ms
                    Frequency = 61Hz	Period = 16.3934ms
                    Frequency = 62Hz	Period = 16.129ms
                    Frequency = 63Hz	Period = 15.873ms
                    Frequency = 64Hz	Period = 15.625ms
                    Frequency = 65Hz	Period = 15.3846ms
                    Frequency = 66Hz	Period = 15.1515ms
                    Frequency = 67Hz	Period = 14.9254ms
                    Frequency = 68Hz	Period = 14.7059ms
                    Frequency = 69Hz	Period = 14.4928ms
                    Frequency = 70Hz	Period = 14.2857ms
                    Frequency = 71Hz	Period = 14.0845ms
                    Frequency = 72Hz	Period = 13.8889ms
                    Frequency = 73Hz	Period = 13.6986ms
                    Frequency = 74Hz	Period = 13.5135ms
                    Frequency = 75Hz	Period = 13.3333ms
                    Frequency = 76Hz	Period = 13.1579ms
                    Frequency = 77Hz	Period = 12.987ms
                    Frequency = 78Hz	Period = 12.8205ms
                    Frequency = 79Hz	Period = 12.6582ms
                    Frequency = 80Hz	Period = 12.5ms
                    Frequency = 81Hz	Period = 12.3457ms
                    Frequency = 82Hz	Period = 12.1951ms
                    Frequency = 83Hz	Period = 12.0482ms
                    Frequency = 84Hz	Period = 11.9048ms
                    Frequency = 85Hz	Period = 11.7647ms
                    Frequency = 86Hz	Period = 11.6279ms
                    Frequency = 87Hz	Period = 11.4943ms
                    Frequency = 88Hz	Period = 11.3636ms
                    Frequency = 89Hz	Period = 11.236ms
                    Frequency = 90Hz	Period = 11.1111ms
                    Frequency = 91Hz	Period = 10.989ms
                    Frequency = 92Hz	Period = 10.8696ms
                    Frequency = 93Hz	Period = 10.7527ms
                    Frequency = 94Hz	Period = 10.6383ms
                    Frequency = 95Hz	Period = 10.5263ms
                    Frequency = 96Hz	Period = 10.4167ms
                    Frequency = 97Hz	Period = 10.3093ms
                    Frequency = 98Hz	Period = 10.2041ms
                    Frequency = 99Hz	Period = 10.101ms
                    Frequency = 100Hz	Period = 10ms
                    شما با یک تایمر 8 بیتی میخواین این کار رو بکنید ؟؟؟
                    به نظر شما شدنی هست ؟؟ شدنی که هست ولی خیلی سخته ...
                    راستی میکروی شما چیه ؟؟
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


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

                      میکروی من ATmega128 هست
                      4 تا پایه d0 تا d3 خروجی های من هستن که میخوام اونها رو pwm کنم البته با تغیر فرکانس
                      برنامه ای که تو بالا نوشته بودید تو پروتیوس خوب جواب داد و همون چیزی بود که میخواستم و اون مشکلی رو که میگفتید برای من در حد 0.5 ثانیه بود که مشکلیی نیست برای کار من. ولی مشکل اینجاست که سخت افزارو ساختم .
                      همونطور که گفتم از تایمر 2 به عنوان کانتر برای کار دیگه ای تو بردم استفاده کردم و از یکی از تایمر ها هم برای زمان سنجی کانتر باید استفاده کنم بقیه تایمر هام خالیه برای اینکار
                      اگه فرکانس رو تا 40 هرتز کم کنیم کار راحت تر میشه ؟؟

                      دعا پشتِ دعا برای آمدنت
                      گناه پشــــــتِ گناه برای نیامــدنت
                      دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
                      کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

                      دیدگاه


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

                        نوشته اصلی توسط مرتضی بیگدلی
                        میکروی من ATmega128 هست
                        4 تا پایه d0 تا d3 خروجی های من هستن که میخوام اونها رو pwm کنم البته با تغیر فرکانس
                        برنامه ای که تو بالا نوشته بودید تو پروتیوس خوب جواب داد و همون چیزی بود که میخواستم و اون مشکلی رو که میگفتید برای من در حد 0.5 ثانیه بود که مشکلیی نیست برای کار من. ولی مشکل اینجاست که سخت افزارو ساختم .
                        همونطور که گفتم از تایمر 2 به عنوان کانتر برای کار دیگه ای تو بردم استفاده کردم و از یکی از تایمر ها هم برای زمان سنجی کانتر باید استفاده کنم بقیه تایمر هام خالیه برای اینکار
                        اگه فرکانس رو تا 40 هرتز کم کنیم کار راحت تر میشه ؟؟
                        خوب
                        اگر با مگای 128 کار میکنی خوبه
                        چون دوتا تایمر 16 بیتی داره ...
                        با تایمر 3 کار کنم خوبه ؟؟
                        مشکلی نداری ؟؟
                        راستی
                        PWM نرم افزاری توی برنامه خیلی میره به وقفه سر میزنه ...
                        مواظب باش وقفه ها با هم تداخل نداشته باشند ... چون بعدا به مشکل بر میخوری ...

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

                        دیدگاه


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

                          نوشته اصلی توسط سامان اسدی
                          خوب
                          اگر با مگای 128 کار میکنی خوبه
                          چون دوتا تایمر 16 بیتی داره ...
                          با تایمر 3 کار کنم خوبه ؟؟
                          مشکلی نداری ؟؟
                          راستی
                          PWM نرم افزاری توی برنامه خیلی میره به وقفه سر میزنه ...
                          مواظب باش وقفه ها با هم تداخل نداشته باشند ... چون بعدا به مشکل بر میخوری ...

                          اول سخت افزار طراحی میشه بعدا مشورت میشه ؟؟ :surprised: :-/
                          نه مشکلی نیست، ممنون ، زمانی ازش استفاده میکنم که فقط نیازش دارم (اینجوری با موارد دیگه هم تداخل پیدا نمیکنه )
                          اره حق با شماست اینم از کم تجربگی ماست دیگه
                          خدا خیرت بده آقا سامان
                          دعا پشتِ دعا برای آمدنت
                          گناه پشــــــتِ گناه برای نیامــدنت
                          دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
                          کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

                          دیدگاه


                            پاسخ : PWM +frequence

                            سامان جان میگم تونستی کاری بکنی ؟؟؟
                            دعا پشتِ دعا برای آمدنت
                            گناه پشــــــتِ گناه برای نیامــدنت
                            دل درگــیر ، مــیان این دو انتخــــــــــــــــــــاب
                            کــــــــــــــدام آخر ؟ آمـــدنـت یا نیامدنـــــــــــــــــــــــت

                            دیدگاه


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

                              سلام دوست عزیز در PWM فابریک خود میکرو هیچ تداخلی در برنامه اصلی بوجود نمیاد ولی اگر بخوایم مثل برنامه شما
                              بصورت نرم افزاری و با ایجاد وقفه این کار رو انجام بدیم در برنامه ایجاد اختلال میکنه حالا دوست عزیز ایا راهی هست
                              تا مثل امکان اصلی میکرو یک پایه رو تبدیل کرد به PWM ؟ در میکروی من که مگا1284P هست 6 تا PWM وجود داره
                              که از 2 تاش به دلیل استفاده از پورت دیتا السیدی گرافیکی نمی تونم استفاده کنم و میمونه 4 تا ولی من 5 تا PWM
                              لازم دارم حالا موندم چیکار کنم این 1 دونه PWM رو میشه راهنمایی کنید من رو .ایا میشه برای دیتا السیدی از پورت
                              کمتری استفاده کرد؟ ببخشید که طولانی شد ممنون

                              دیدگاه


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

                                اقا سامان جواب ما رو نمیدید؟؟

                                دیدگاه

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