اطلاعیه

Collapse
No announcement yet.

سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

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

    سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

    سلام
    سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

    مثلا واسه Atmega8 پایه OC1B هر تغییری که کرد همونو روی یک پایه دیگه مثلا Portc.1 داشته باشیم

    کاری که من کردمو جواب نداد :

    Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 8
    Portc.1 = Pwm1b
    do
    pwm1b=250
    loop

    #2
    پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

    نوشته اصلی توسط VAHID_HP
    سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟
    سلام
    اسیلاتورها . . . ؟؟؟؟؟؟
    مگه میکرو چند تا اسیلاتور داره ؟؟؟
    نوشته اصلی توسط VAHID_HP
    مثلا واسه Atmega8 پایه OC1B هر تغییری که کرد همونو روی یک پایه دیگه مثلا Portc.1 داشته باشیم
    نه عزیزم
    اصول رو نمیشه زیر پا گذاشت ... شاید من بلد نیستم .... :redface:
    به صورت وقفه ای میشه چنین کاری رو کرد ولی اینکه خودش به صورت سخت افزاری چنین کاری کنه تا اونجایی که میدونم نمیشه .
    البته به وسیله وقفه یکم از پردازش میکرو رو اشغال میکنه .(البته نه زیاد)
    نوشته اصلی توسط VAHID_HP
    کاری که من کردمو جواب نداد :

    Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 8
    Portc.1 = Pwm1b
    do
    pwm1b=250
    loop
    این کد رو بگذارید تو موزه :mrgreen:
    آخه کی میاد عدد 250 رو بریزه تو PORTC.1 ؟؟؟؟؟؟
    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
    معرفی نرم افزار Codewizard PWM
    با من بیشتر آشنا شوید

    دیدگاه


      #3
      پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

      این کل برنامه......میخوام پالسی رو که تولید میکنه رو پایه های دیگه هم داشته باشم....یعنی چندتا پایه دیگه که از نعمت pwm برخوردار نیستن مقداری رو که پایه pwm داره اونا هم داشته باشن :redface:

      $regfile = "m8def.dat"
      $crystal = 1000000
      Config Portb = Output
      Config Portc = Output
      Dim X As Byte , T2 As Byte , T1 As Byte , P As Byte , Z As Byte
      A Alias Portb.1
      B Alias Portc.0
      C Alias Portc.5
      Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 8
      Dim Pulses As Word , Periods As Word
      Pulses = 100 : Periods = 1000
      Z = 0
      Do

      For X = 1 To 10
      Z = 0

      For X = 0 To 255
      Z = Z + 1
      Pwm1b = Z
      Waitms 1
      Next X

      For X = 0 To 255
      Z = Z - 1
      Pwm1b = Z
      Waitms 1
      Next X
      Next X

      Loop

      دیدگاه


        #4
        پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

        سلام
        در یکی از تاپیک ها هم یک نفر تقریبا مشکلش شبیه شما بودش.
        البته شما راه راحتری نیز دارید اینکه در تایمر پایه ها را صفر و یک کنی مثلا مقدار ماکیزمم تایمری که داری را با توجه به دقت pwm که می خواهی بسازی تأیین کنی.
        مثلا شما می خواهی pwm با سرعت 1 کیلو هرتز درست کنی با دقت 255 بیت خب 1*255 می شود 255 کیلو هرتز حالا یک تایمر اینتراپت درست کن که سرعتش 255 کیلو هرتز باشد آنوقت شما می توانید چند خط برنامه مثل همون راهی که به تاپیک زیر دادم را انجام بدی
        http://www.eca.ir/forum2/index.php?topic=90067.0
        دکتر چمران در 1311 در تهران متولد شد
        وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
        او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.

        دیدگاه


          #5
          پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

          تایمر ها به عنوان بخش سخت افزاری میکرو ها بشمار میان واسه همین نمیشه به این صورتی(حداقل تا اونجا که من میدونم) که شما نوشتید از یه پورت دیگه خروجی رو بگیریم ولی میشه که از طریق ADC خروجی pwm رو به ADC و و از ADCبه یه پورت دیگه وصل کرد. اون موقه بتونید از پورت دلخواهتون خروجی اصلی رو دریافت کنید.
          صبرت که تمام شد نرو!
          "معرفت"
          تازه از آن لحظه آغاز می شود...

          دیدگاه


            #6
            پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

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

            دیدگاه


              #7
              پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

              نوشته اصلی توسط VAHID_HP
              سلام
              سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

              مثلا واسه Atmega8 پایه OC1B هر تغییری که کرد همونو روی یک پایه دیگه مثلا Portc.1 داشته باشیم

              کاری که من کردمو جواب نداد :

              Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 8
              Portc.1 = Pwm1b
              do
              pwm1b=250
              loop
              می تونید پایه OC1B رو به یکی از پایه های مثلا پورت D وصل کنید و این پایه رو ورودی تعریف کنید و بعد با دستور bitwait بخونیدش که هر گاه OC1B یک شد بیاد مثلا Portc.1 رو یک منطقی کنه !!!!!

              دیدگاه


                #8
                پاسخ : سوال : چطور میشه پایه های غیر از PWM رو معادل یکی از اوسیلاتورها قرار داد؟

                به نظر من بیاید هر دو وقفه یک تایمر یعنی وقفه های compare و overflow را فعال کنید. بعد داخل وقفه compare مقدار پین را یک و در وقفه overflow آن پین را صفر کنید. این جوری دقیقا همون کاربرد PWM را ایجاد کردید.

                دیدگاه

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