اطلاعیه

Collapse
No announcement yet.

PWM با PIC18F1320

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

    PWM با PIC18F1320

    با سلام من میخواستم با PIC18F1320 یک موج PWM تولید کنم به طوری که پایه های آن بدین صورت باشد
    P1A, P1C active low; P1B, P1D active high
    و من در datasheet آن دیدم که برای این منظور چنین چیزی نوشته بود

    bit 3-0 CCP1M3:CCP1M0: ECCP1 Mode Select bits
    0000 = Capture/Compare/PWM off (resets ECCP module)
    0001 = Unused (reserved)
    0010 = Compare mode, toggle output on match (ECCP1IF bit is set)
    0011 = Unused (reserved)
    0100 = Capture mode, every falling edge
    0101 = Capture mode, every rising edge
    0110 = Capture mode, every 4th rising edge
    0111 = Capture mode, every 16th rising edge
    1000 = Compare mode, set output on match (ECCP1IF bit is set)
    1001 = Compare mode, clear output on match (ECCP1IF bit is set)
    1010 = Compare mode, generate software interrupt on match (ECCP1IF bit is set, ECCP1 pin
    is unaffected)
    1011 = Compare mode, trigger special event (ECCP1IF bit is set; ECCP resets TMR1 or
    TMR2 and starts an A/D conversion, if the A/D module is enabled)
    1100 = PWM mode; P1A, P1C active high; P1B, P1D active high
    1101 = PWM mode; P1A, P1C active high; P1B, P1D active low
    1110 = PWM mode; P1A, P1C active low; P1B, P1D active high
    1111 = PWM mode; P1A, P1C active low; P1B, P1D active low

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

    #2
    پاسخ : PWM با PIC18F1320

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



    چهار بیت کم ارزش رو به همان صورتی که انتخاب کردید مقدار دهی کنید. البته شما مشخص نکردید که از کدام یک از حالت های Half-Bridge یا Full-Bridge میخواهید استفاده کنید.
    به هر حال برای پریود پالس باید به رجیستر PR2 مقدار مورد نظر رو بدید. و Duty Cycle هم توسط مقدار رجیستر CCPR1L به همراه دو بیت DC1B0 و DC1B1 از رجیستر CCP1CON تعیین میشه که با هم تشکیل 10 بیت را میدهند.
    توجه نمائید که مقدار 8 بیت پر ارزش Duty Cycle یعنی همان رجیستر CCPR1L نباید از مقدار رجیستر PR2 بیشتر باشد.

    دیدگاه


      #3
      پاسخ : PWM با PIC18F1320

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

      دیدگاه


        #4
        پاسخ : PWM با PIC18F1320

        نوشته اصلی توسط bamohabat
        واقعا از شما کمال تشکر و قدردانی را دارم . یک سوال دیگر اگر لطف کنید و پاسخ دهید واقعا ممنون میشوم :
        من اطلاعات زیادی در مورد کامپایلرها ندارم میخواستم بدانم برای این کار از چه کامپایلری استفاده کنم ؟ و این اعداد را کجای کامپایلر وارد کنم و چگونه عمل کنم ؟
        با تشکر فراوان
        اولاً اینکه کدام کامپایلر مناسب است به عوامل زیادی بستگی دارد. مثلاً اینکه با کدام زبان برنامه نویسی آشناهستید و این آشنایی تا چه حد است. به عنوان مثال اگر با زبان C آشنا هستید ولی تسلط کافی ندارید و یا اینکه تازه کار هستید یک گزینه مناسب برای شما کامپایلر MikroC For PIC از شرکت Mikroelectronica میباشد.
        ولی چنانچه میخواهید یک کار کاملاً حرفه ای انجام دهید بهترین انتخاب کامپایلر HI-TECH است. ولی توجه داشته باشید که این کامپایلر توابع بسیار کمی را در اختیار شما قرار میدهد و شما خود باید برای هر سخت افزار تابع بنویسید.
        ثانیاً برای مقدار دهی رجیستر در یک کامپایلر ، مثلاً MikroC میتوانید مستقیما آن را مساوی مقدار مورد نظر قرار دهید. به عنوان مثال برای مقدار دهی همین رجیستر CCP1CON به صورت زیر عمل میکنید:
        فرض میکنیم میخواهید این رجیستر را برای مدی که خودتان انتخاب کردید مقدار دهید بنابر این مقدار چهار بیت کم ارزش برابر 1110 است. همچنین فرض میکنیم Duty Cycle را طوری انتخاب کرده اید که نیاز دارید دو بیت DC1B0 و DC1B1 ست شوند. و مد انتخابی خروجی هم که توسط بیت های P1M0 و P1M1 تعیین میشود مدSingle output میباشد. بنابر این مقداری که باید در رجیستر CCP1CON ریخته شود برابر 00111110 است که معادل هگز آن 0x3e است. پس به طور مستقیم میتوانید بنویسید:
        CCP1CON=0x3e;

        دیدگاه


          #5
          پاسخ : PWM با PIC18F1320

          واقعا از شما ممنونم . پس به همان شکلی که گفتید برنامه را بزارم مثلا بنویسم CCP1CON=0x3e ; و سپس همین مقدار را در میکروکنترلر بریزم ؟

          دیدگاه


            #6
            پاسخ : PWM با PIC18F1320

            من میخواهم این مقدار را در میکرو بزارم : 11111110 .
            آیا باید فقط این عبارت (CCP1CON=33e; ) را در کامپایلر بنویسم و در میکرو بریزم ؟

            دیدگاه


              #7
              پاسخ : PWM با PIC18F1320

              نوشته اصلی توسط bamohabat
              من میخواهم این مقدار را در میکرو بزارم : 11111110 .
              آیا باید فقط این عبارت (CCP1CON=33e; ) را در کامپایلر بنویسم و در میکرو بریزم ؟
              سلام. شما برای اینکار باید بنویسید ;CCP1CON=0xFE نه 0X33E . ظاهراً شما با مبانی دیجیتال و همچنین برنامه نویسی به زبان C آشنایی ندارید. بنابراین بهتر است ابتدا اصول و مبانی دیجیتال و همچنین یک زبان برنامه نویسی را فرا بگیرید. چون به این صورت نخواهید توانست یک پروژه هر چند ساده را با میکروکنترلر پیاده کنید.

              دیدگاه

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