کلاک در STM8 (تنظیم فرکانس) – رجیستر های کلاک در STM8

کلاک در STM8

کلاک در STM8 - رجیستر های کلاک در STM8

سیستم کلاک در STM8:

منابع اصلی سیگنال کلاک در این میکروکنترولر عبارتند از:

نوسان ساز کریستالی پرسرعت تا 24MHz  (HSE)

اتصال سیگنال کلاک خارجی تا سرعت 24MHz ( HSE user-ext )

نوسانساز پرسرعت داخلی با سرعت ماکزیمم 16MHz ( HSI )

نوسان ساز کم سرعت داخلی با سرعت 128KHz ( LSI )

و هر نوسان ساز را بنابر تنظیمات رجیسترهای مربوطه می توان به منظور مدیریت بر مصرف توان ، فعال یا غیر فعال نمود.

نوسان ساز خارجی در STM8 :

HSE

سیگنال کلاک در نوسان ساز پرسرعت خارجی میتواند از طریق دو منبع تامین گردد:

  • نوسان سازهای سرامیک و یا کریستال خارجی.
  • تامین سیگنال کلاک از طریق یک منبع خارجی و طراحی شده توسط کاربر.

روش اتصال کریستال خارجی به شکل های زیر است:

نحوه اتصال کریستال به stm8

برخی اصول در طراحی و انتخاب قطعات باید لحاظ گردند که در بخش طراحی سخت افزار بدان خواهیم پرداخت و تنها به ذکر دو نکته مهم می پردازم که : تا حد امکان خازن های متصل به نوسان سازها باید نزدیک به کریستال قرار گیرند  و در انتخاب خازن در تناسب با میزان سرعت کریستال یا نوسان ساز دقت گردد.

سیستم کلاک دارای تنظیمات و پیکربندی های متعددی است امابه منظور سادگی در  برنامه سازی و کدنویسی صرفاٌ موارد پرکاربرد را بررسی خواهیم نمود.

تقسیم کننده سیگنال کلاک پردازنده یا CPU CLOCK DIVIDER :

رجیستر CLK_CKDIVR

کلاک CPU که با عنوان fCPU شناخته میشود با انجام تقسیمات لازم از کلاک اصلی سیستم fMASTER منشعب می گردد که این تقسیم بر اساس ضرایب موجود از طریق رجیستر  CLK_CKDIVR  انجام میگردد.

7 فاکتور برای تقسیم و تامین کلاک پردازنده بین 1 الی 128 وجود دارد که کلاک بدست آمده برای تامین سیگنال کلاک پردازنده اصلی و سیستم محافظ Watch dog Timer مورد استفاده قرار می گیرد.

تخصیص سیگنال کلاک به واحدهای عملیاتی یا PERIPHERAL CLOCK GATING(PCG) :

کنترل سیگنال کلاک و اختصاص دادن به واحد های غیر فعال می تواند باعث تقلیل میزان توان مصرفی و کاهش سطح نویز گردد.

 

در زمان شروع به کار و یا راه اندازی مجدد بصورت دستی ( manual Reset) کلاک کلیه واحدها بصورت پیش فرض فعال است و با استفاده از بیت PCKEN در رجیستر اصلی (CLK_PCKENR2) میتوان تقسیمات کلاک را در تناسب با نیاز کنترل نمود.

به منظور فعال نمودن کلاک یک واحد عملیاتی در ابتدا باید بیت مربوط به این واحد را از طریق بیت PCKEN فعال نموده و سپس بیت فعال نمودن خود واحد پردازنده انتخاب نمود.

تشریح تنظیمات رجیسترهای کلاک INTERNAL CLOCK REGISTER(CLK_ICKR)

این رجیستر دارای 8 بیت می باشد که دو بیت از آن رزرو بوده و عملاً قابل استفاده نمی باشد و با توجه به اینکه هر بیت قابل فعال یا غیر فعال نمودن است ، برای هر یک دو حالت 0 , 1 مجاز می باشد.

INTERNAL CLOCK REGISTER stm8

REGAH : این بیت را می توان توسط نرم افزار کنترل نمود و به منظور کنترل عملکرد ثبیت کننده ولتاژ داخلی در وضعیت غیرفعال و خواب بودن میکروکنترولر به کار برده می شود.

LSIRDY : این بیت بصورت سخت افزاری خروجی خود را ارائه می دهد که نشان دهنده آمادگی نوسان ساز کم سرعت داخلی می باشد.

LSIEN : کنترل فعالیت نوسان ساز کم سرعت داخلی

FHWU : بیدار شدن سریع از حالت غیر فعال بودن میکروکنترولر .این بیت بصورت نرم افزاری کنترل می شود.

HSIRDY : بررسی آمادگی نوسان ساز که اطلاعات خود را بصورت سخت افزاری ارسال می نماید.

HSIEN: کنترل فعالیت نوسان ساز پرسرعت داخلی ( 16MHz)

رجیستر کنترلی نوسان ساز خارجی EXTERNAL CLOCK REGISTER(CLK_ECKR)

این رجیستر هشت بیتی تنها دو بیت فعال دارد و بقیه بصورت رزرو و غیر عملیاتی می باشند که این دوبیت به منظور کنترل فعالیت نوسان ساز خارجی و بررسی آمادگی این نوسان ساز به کار برده می شوند ، این نوسان ساز بصورت پیش فرض غیر فعال است.

stm8-clocks-Divider-external

رجیستر تقسیم کننده سیگنال کلاک CLOCK DIVIDER REGISTER(CLK_CLKDIVR)

یکی از مهم ترین رجیسترهای تنظیم کلاک در برنامه های کاربردی می باشد :

CLOCK DIVIDER REGISTER کلاک در Stm8

HSIDIV : تقسیم سیگنال کلاک نوسان ساز داخلی بر اساس ضرایب تعیین شده می باشد ، این بیت از طریق نرم افزار قابل کنترل است و تنظیمات زیر را می توان برای این نوسان ساز انجام داد.

 

CPUDIVR :این بیت به منظور کنترل تنظیمات تقسیم کلاک هسته پردازنده به کار برده می شود و دارای حالات زیر می باشد:

 

رجیستر توزیع کلاک به واحدهای عملیاتی PERIPHERAL CLOCK GATING REGISTER 1 (CLK_PCKENR 1)

این رجیستر هشت بیتی کاملاً در دسترس و قابل پیکربندی از طریق نرم افزار می باشد و میتوان تخصیص سیگنال کلاک ( fMASTER) به واحدهای عملیاتی را کنترل نمود ( فعال یا غیر فعال )

PERIPHERAL CLOCK GATING REGISTER 1

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

تنظیم فرکانس در STM8

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

در جلسه ی گذشته ( رجیستر ها در STM8 ) ، مثال یک را به خاطر بیاورید.

که در 2 خط اول اطلاعات به شرح یر بود:

تصور میکنم الان این متن ها برایتان قابل درک باشد در سطر اول نوسان ساز داخلی را فعال نموده ایم و در سطر دوم سیگنال کلاک 16MHz را تقسیم بر 8 نموده ایم که سیگنال 2MHz برای تقسیمات زمانی به دست آید ( این مقادیر بصورت پیش فرض نیز در میکروکنترولر انجام گردیده و صرفاً به عنوان آشنایی بیشتر در اینجا ذکر گردیده)

و در سطری دیگر:

عبارتی که به عنوان توضیح در مقابل دستور نوشه شده را بررسی نمایید ، این وضعیت تشریح حالت اولیه و پیش فرض برای نوسان ساز داخلی است و کاربر هیچ تغییری تا این مرحله در سیستم کلاک انجام نداده

تا اینجا روش تنظیم کلاک در STM8 ، تنظیم فرکانس میکرو ، پایه های کاربردی و اتصال LED و روش های تنظیم و توزیع کلاک به منظور تنظیم زمان های مورد نیاز را یاد گرفتیم در بخش بعدی به منظور راه اندازی ابزارهای کاربردی اتصال دکمه فشاری به میکروکنترولر و نمایشگر متنی 2×16 را بررسی خواهیم کرد که امکان طراحی پروژه های ساده کاربردی مقدور گردد.

شما ممکن است این را هم بپسندید

8 پاسخ‌ها

  1. امید گفت:

    ممنون از زحماتتون

  2. علی فلاح گفت:

    سلام دوباره
    این میکرو دقیقا تا چه فرکانسی رو پشتیبانی میکنه؟ (stm8s003F3P6)
    (با اسیلاتور خارجی)

    • حمید گفت:

      سلام
      در حالت اکسترنال و اینترنال 16MHz
      دیتاشیت stm8s003F3P6 :
      goo.gl/1SzojK

    • STM8S گفت:

      با سلام
      در حالت داخلی تا 16MHz،
      و در حالت کلاک خارجی مثلا با کریستال، بنا بر دیتاشیت تا 24MHz رو پشتیبانی میکنه

      در هنگام برنامه ریزی چیپ در STVP، زبانه ای بنام Option bytes موجوده که اونجا میتونید انتخاب کنید منبع کلاک خارجی از کلاک خالی باشه یا از کریستال.
      البته در داخل برنامه نیز برای تغییر اسیلاتور از HSI به HSE باید کد زیر رو بنویسید:

      ;CLK_SWCR_SWEN=1
      ;CLK_SWR=0xB4
      ;(while (CLK_SWCR_SWIF==0

      • حمید گفت:

        سلام
        همونطور که قبلا گفتم این آموزش هارو مهندس علیزاده میزارن روی سایت ومن حرفه ای stm8 نیستم و اگر مطلبی هم گذاشتم تجربه ای جدید بوده و دارم با این میکرو آشنا میشم(شما هم اگر مطلب کاملی دارین استقبال میکنیم داخل سایت منتشر کنیم)
        در حالت اسیلاتور خارجی، Stm8 تا 24مگ میکرو های مختلف داره ولی توی دیتاشیت STM8S003F3 حداکثر ۱۶ مگاهرتر نوشته شده.
        زبانه ی option byte رو در بخش پروگرام کردن توضیح مختصر دادم.
        و ممنون از توضیح شما

  3. علی فلاح گفت:

    سلام
    خیلی عالی بود.
    نتونستم نظر ندم 🙂
    لطفا ادامه بدید!
    منتظریم….
    تشکر

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *