میکروکنترلر

شناخت ، برنامه نویسی و بهره برداری از میکروکنترلرها

میکروکنترلر

شناخت ، برنامه نویسی و بهره برداری از میکروکنترلرها

نحوه تولید موج PWM توسط ماژول CCP در میکروکنترلر های 8 بیتی PIC

در این بخش مطالبی راجع به نحوه تشکیل موج PWM در یک میکروکنترلر 8 بیتی PIC ارئه میکنیم.

میکروکنترلر انتخاب شده در این بحث تراشه معروف PIC16F877A میباشد.

میکروکنترلر PIC16F877A شامل دو ماژول CCP میباشد که نحوه کار آنها تا حدود زیادی مشابه هم است .به همین دلیل در Datasheet ارائه شده از طرف Microchip توضیحات هردو یکسان است و در نامگذاری رجیسترها به جای اشاره به شماره ماژول از حرف x کوچک استفاده شده است.

در اینجا فرض بر این است که از ماژول CCP1 استفاده میکنیم.

هر دو ماژول CCP برای تولید موج PWM فقط از تایمر 8 بیتی 2 استفاده میکنند. بنابر این چنانچه از هردو ماژول CCP برای تولید PWM استفاده گردد دوره تناوب هردو موج باهم برابر خواهد بود. قابل توجه است که تقریباً تمامی میکروکنترلر های 8 بیتی PIC قادر به تولید PWM با حداکثر وضوح 10 بیت هستند. در حالت 10 بیتی رجیستر CCPR1H شامل 8 بیت بالایی از موج PWM میباشد.

برای تولید موج PWM ابتدا باید رجیستر کنترلی CCP1CON مقدار دهی شود.

دو بیت CCPxX و CCPxY مربوط به دوبیت کم ارزش حالت PWM  ده بیتی هستند. در صورتی که PWM ده بیتی نیاز باشد باید دو بیت کم ارزش در این دو بیت نوشته شوند. بیت CCPxY کم ارزش ترین بیت میباشد.

چهار بیت CCPxM0 الی CCPxM3 طبق جدول زیر تعیین کننده مد انتخابی برای ماژول است:


برای انتخاب حالت تولید PWM باید به هر دو بیت CCPxM3 و CCPxM2  مقدار 1 دهید.

در مد PWM مقدار Duty Cycle در رجیستر CCPR1L نوشته میشود. همانطور که قبلًا گفته شد برای حالت 10 بیتی دو بیت کم ارزش دردو بیت CCPxX و CCPxY نوشته میشوند. در این حالت رجیستر CCPR1H  به عنوان بافر رجیستر CCPR1L عمل میکند. به طوری که وقتی مقدار Duty Cycle جدید در CCPR1L نوشته شود بلافاصله این مقدار در CCPR1H نیز بار میشود. در واقع Duty Cycle پالس از مقایسه میان رجیستر CCPR1H و رجیستر محتوای تایمر 2 یعنی TMR2 به وجود می آید. زمانی که مقدار تایمر ( TMR2 ) با رجیستر CCPR1H برابر شود سطح ولتاژ پین RC2/CCP1 که خروجی موج PWM میباشد به پائین برده میشود.

همچنین دوره تناوب یا فرکانس موج خروجی وابسته یه مقدار رجیستر PR2  و میزان Prescale تایمر 2 میباشد نکته قابل توجه این است که تایمر 2 یک سیکل بعد از تشخیص برابری با PR2 ریست میشود. بنابر این رابطه موجود برای محاسبه دوره تناوب به صورت زیر خواهد بود:


همچنین برای مشاهده سیگنال PWM بر روی پین مربوطه باید رجیستر TRIS مربوط به پورتی که خروجی ماژول CCP روی آن مالتی پلکس شده  Set شود تا پین به صورت خروجی پیکره بندی شود.برای مثال خروجی CCP1 روی پین RC2 قرار دارد و برای تولید PWM روی این پین باید TRISC.2 برابر یک قرار گیرد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد