اطلاعیه

Collapse
No announcement yet.

مشکل در راه‌اندازی PWM با CCP1 روی پایه RE5 در PIC18F67K40

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

    مشکل در راه‌اندازی PWM با CCP1 روی پایه RE5 در PIC18F67K40

    سلام و وقت بخیر
    من در حال کار با میکروکنترلر PIC18F67K40 و کامپایلر XC8 هستم و می‌خواهم با استفاده از CCP1 در حالت PWM، یک PWM ساده روی پایه RE5 ایجاد کنم.
    در حال حاضر هدف فقط این است که بدون ADC و بدون هیچ ورودی، یک PWM ثابت با Duty Cycle = 50% روی RE5 داشته باشم.
    طبق دیتاشیت:
    CCP1CON برای انتخاب Mode مربوط به CCP1 استفاده می‌شود.
    در CCPTMRS0، بیت‌های C1TSEL[1:0] مشخص می‌کنند CCP1 از کدام Timer استفاده کند.
    برای PWM می‌توان Timer2 را انتخاب کرد.
    طبق جدول PPS، مقدار خروجی CCP1OUT برابر 001001 است؛ بنابراین برای RE5 از RE5PPS استفاده می‌شود.
    مشکل این است که با وجود تنظیمات PWM، روی پایه RE5 خروجی قابل‌مشاهده‌ای ندارم و اندازه‌گیری با اسیلوسکوپ حدود 1 mV نشان می‌دهد.
    نکته مهم: در آزمایش‌های قبلی، یک برنامه بسیار ساده برای تست سخت‌افزار اجرا کردم و عملکرد میکرو و پایه موردنظر تأیید شد. بنابراین احتمال می‌دهم مشکل از تنظیمات CCP1 / Timer2 / PPS باشد.
    من بخش‌های مربوط به دیتاشیت را نیز بررسی کرده‌ام، از جمله:
    CCP1CON
    CCPTMRS0
    T2CLKCON
    T2PR
    T2CON
    RE5PPS
    اما هنوز نتوانسته‌ام PWM را روی RE5 مشاهده کنم.
    لطفاً اگر امکان دارد ایراد کد زیر و ترتیب صحیح تنظیم رجیسترهای PIC18F67K40 را بررسی کنید.
    کد آزمایشی موردنظر من:
    include <xc.h>
    include <stdint.h>

    define _XTAL_FREQ 64000000UL

    // Configuration Bits
    pragma config FEXTOSC = OFF
    pragma config RSTOSC = HFINTOSC_64MHZ
    pragma config WDTE = OFF
    pragma config LVP = OFF

    void main(void)
    {
    // -----------------------------
    // Digital I/O
    // -----------------------------
    ANSELE = 0x00;
    TRISE5 = 0;

    // -----------------------------
    // PPS
    // CCP1OUT -> RE5
    // -----------------------------
    RE5PPS = 0x09;

    // -----------------------------
    // CCP1 Timer Selection
    // CCP1 -> Timer2 for PWM
    // C1TSEL[1:0] = 00
    // -----------------------------
    CCPTMRS0 &= 0xFC;

    // -----------------------------
    // Timer2
    // -----------------------------
    T2CLKCON = 0x01; // Fosc/4
    T2PR = 0xFF;
    T2TMR = 0x00;

    // Prescaler 1:1
    // Postscaler 1:1
    // Timer2 ON
    T2CON = 0x80;

    // -----------------------------
    // CCP1 PWM
    // -----------------------------
    CCP1CON = 0x8C;

    // Duty cycle
    CCPR1H = 0x00;
    CCPR1L = 0x80;

    while(1)
    {
    }
    }
    سؤالات من از متخصصان محترم انجمن:
    آیا ترتیب تنظیم رجیسترها صحیح است؟
    آیا مقدار RE5PPS = 0x09 برای اتصال CCP1OUT به RE5 صحیح است؟
    آیا انتخاب Timer2 در CCPTMRS0 به شکل صحیح انجام شده است؟
    مقدار صحیح CCP1CON برای PWM در PIC18F67K40 چیست؟
    برای Duty Cycle 50% مقدار صحیح CCPR1H:CCPR1L چگونه باید محاسبه شود؟
    آیا برای RE5 تنظیم دیگری مانند ANSELE، TRISE یا رجیستر دیگری لازم است؟
    اگر اشکال از کد است، لطفاً یک کد حداقلی و کامل برای تولید PWM روی RE5 با CCP1 و Timer2 ارائه فرمایید.
    هدف فعلاً فقط این است:
    PIC18F67K40
    ↓
    CCP1 PWM
    ↓
    Timer2
    ↓
    PPS
    ↓
    RE5
    ↓
    PWM 50%
    ممنون می‌شوم اگر کد را بر اساس دیتاشیت PIC18F67K40 بررسی فرمایید.​

    #2
    نوشته اصلی توسط رضازاده @ نمایش پست ها
    سلام و وقت بخیر
    من در حال کار با میکروکنترلر PIC18F67K40 و کامپایلر XC8 هستم و می‌خواهم با استفاده از CCP1 در حالت PWM، یک PWM ساده روی پایه RE5 ایجاد کنم.
    در حال حاضر هدف فقط این است که بدون ADC و بدون هیچ ورودی، یک PWM ثابت با Duty Cycle = 50% روی RE5 داشته باشم.
    می‌شوم اگر کد را بر اساس دیتاشیت PIC18F67K40 بررسی فرمایید.​
    با سلام و احترام
    بنا بر تجربه، استفاده از هوش مصنوعی مثل ChatGPT یا Gemini برای چنین مشکلاتی، سریعتر به راه حل و پیدا کردن جواب می انجامد‌.
    موفق باشید.

    دیدگاه


      #3
      هوش مصنوعی های chatgbt و deepseek هم قادر به حل این مشکل نبودند.
      هوش مصنوعی تخصصی در این خصوص کسی سراغ داره؟

      دیدگاه


        #4
        نوشته اصلی توسط رضازاده @ نمایش پست ها
        هوش مصنوعی های chatgbt و deepseek هم قادر به حل این مشکل نبودند.
        هوش مصنوعی تخصصی در این خصوص کسی سراغ داره؟
        Claude در زمینه برنامه نویسی خیلی قویتره ولی متاسفانه حالت free آن زود تموم میشه‌.

        دیدگاه


          #5
          نوشته اصلی توسط رضازاده @ نمایش پست ها
          هوش مصنوعی های chatgbt و deepseek هم قادر به حل این مشکل نبودند.
          هوش مصنوعی تخصصی در این خصوص کسی سراغ داره؟
          سلام حالا قادر به پاسخ گویی نبودن یک مسله هست برام پیش اومده که در مورد pic18f8720 سوال کردم و اشتباه جواب داده بود خیلی ناراحت شدم دیتا شیت رو خوندیم بعد بهش اطلاع دادم تصحیح کرد
          قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

          دیدگاه

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