قسمت هشتم : کلاک سیستم (CLK)

قسمت هشتم : کلاک سیستم (CLK)

قسمت هشتم : کلاک سیستم (CLK)
قسمت هشتم : کلاک سیستم (CLK)

سیسوگ در قسمت‌ هفتم  آموزش  میکروکنترلر STM8 آموزش ها را به صورت عملی به کار گرفت و نتیجه را به صورت پروژه LED چشمک‌زن مشاهده کردیم. در این قسمت از آموزش های میکروکنترلر STM8 قصد دارد، سیستم کلاک میکروکنترلر CLK را بیان کند. با سیسوگ همراه باشید.

سیستم کلاک داخلی STM8 به ما این اجازه را می‌دهد که سرعت عملکرد CPU را متناسب با نیاز خود تنظیم کنیم. تأخیر نرم‌افزار و توان مصرفی به تنظیمات کلاک سیستم وابسته است.

در میکروکنترلرهای STM8، سه منبع کلاک اصلی CLK وجود دارد. کلاک داخلی سرعت بالا (HSI)، کلاک خارجی سرعت بالا (HSE) و کلاک داخلی کم مصرف (LSI). کلاک داخلی سرعت بالا (HSI)  دارای فرکانس نوسان 16 مگاهرتز است و یک نوسانگر داخلی RC با دقت خوب است – حدود 1٪ تحمل در طیف گسترده‌ای از دما. HSE می‌تواند به عنوان یک مدار کلاک خارجی، نوسانگر کریستالی با جبران حرارت (TCXO) یا تشدید کننده کریستال معمولی باشد. می‌تواند فرکانس‌های از 1  مگاهرتز تا 24 مگاهرتز را بپذیرد. در نهایت، کلاک LSI مبتنی بر اسیلاتور RC داخلی است که عمدتاً برای حالت‌های کم مصرف و تایمر نظارت مستقل (IWDG) استفاده می‌شود. این کلاک دارای فرکانس ثابت 128 کیلوهرتز است و مانند HSE و HSI دقیق نیست. هم‌چنین تقسیم کننده‌های کلاک/ پیمایشگرها در نقاط مختلف به منظور اندازه‌گیری کلاک‌ها وجود دارد. به طور عمده به دو پیمایشگر، پیمایشگر HSI و تقسیم کننده CPU نیاز داریم. Peripherals به طور مستقیم توسط منبع کلاک اصلی تأمین می‌شود. به علاوه یک پین خروجی برای کلاک  (CCO) وجود دارد که فرکانس ساعت را به خروجی می‌دهد. از این می‌توان برای کلاک دیگر میکروها نیز استفاده کرد، برای دیگر آی سی‌های منطقی کلاک تولید می‌کند. هم‌چنین می‌تواند به عنوان یک نوسان‌ساز آزاد و یا آزمایشات عملکرد کلاک مورد استفاده قرار گیرد. یک حالت کلاک امنیتی fail-safe وجود دارد که باعث می‌شود در زمانی که HSE از کار افتاد به صورت خودکار HSI شروع به فعالیت کند. بلوک دیاگرام داخلی آن در زیر نشان داده شده است:

 

بلوک دیاگرام کلاک امنیتی

 

بلوک داخلی کلاک امنیتی

 

اتصالات سخت افزاری

اتصالات سخت افزاری

نمونه کد کلاک سیستم CLK

کد زیر نشان می‌دهد چگونه CPU را با استفاده از HSI با کلاک 2 مگاهرتز راه اندازی کنید و کلاک 500 کیلو‌هرتز را روی پین CCO به عنوان خروجی داشته باشیم. HSE به 8 تقسیم شده است، یعنی 16 مگاهرتز تقسیم بر 8 برابر 2 مگاهرتز شده است. این 2 مگاهرتز منبع کلاک اصلی است و 4 مرتبه دیگر تقسیم شده است تا فرکانس 500 کیلوهرتز را تولید کند.

توجه داشته باشید پین CCO تنها در برخی از پین در دسترس است. به عنوان مثال، در STM8S003F3 این پین تنها در PC4 است. ما باید عملکرد پیش فرض پین PC4 را به حالت خروجی CCO بدهیم.

توضیحات کد

پیکربندی CCO به صورت زیر است:

 

 

این خطوط منبع کلاک را انتخاب می کند که پین CCO به عنوان خروجی خواهد بود. ماژول CCO را فعال کرده و صبر می کند تا آن را تثبیت کند. در اینجا من CCO را برای خروجی CPU انتخاب کردم.

در این قسمت درباره کلاک سیستم CLK صحبت کردیم. در قسمت نهم آموزش میکروکنترلر STM8 سیسوگ قصد دارد روی وقفه خارجی تمرکز کند. در ادامه نیز سیسوگ را همراهی نمایید.

 

منبع

لینک‌های دانلود

مطالب مرتبط

 

 

 

حمایت از electronic girl

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

0 نفر

پــــســنــدیـده انـد

توجه

electronic girl
electronic girl

دوستدار الکترونیک

دیدگاه ها

16 دیدگاه

  • قاسم
    ۲۴ اردیبهشت ۱۴۰۰

    سلام من با STM8S003F3P6 کار میکنم روی پی سی بی من کلاک در نظر گرفته نشده با این فرض که از کلاک داخلی در حالت پیش فرض استفاده میشه و میکرو نو هست. و الان هرکاری میکنم پروگرم نمیشه، از پروگرمر های ST LINK که شبیه فلش هستن استفاده میکنم.

    • Zeus ‌
      zeus
      ۴ خرداد ۱۴۰۰

      سلام
      خوب خبر خوب اینه که برای پروگرام کردن نیاز به اوسیلاتور خارجی ندارید و همون اسیلاتور داخلی کفایت میکنه
      چه پایه هایی رو متصل کردید ؟ آیا ریست رو هم متصل کردید ؟
      ولتاژ ها درست است ؟

  • محمد
    ۲۳ تیر ۱۳۹۹

    سلام خسته نباشید
    ممنون از آموزش های خوبتون
    مفهوم دو خط زیر چیه و چه ورودی هایی میگیره؟
    CLK_ClockSwitchCmd(ENABLE);
    CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI,
    DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);

    • Zeus ‌
      زئوس Zeus
      ۲۸ تیر ۱۳۹۹

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

  • حسین
    ۲۰ تیر ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲۲ تیر ۱۳۹۹

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

  • مهدی
    ۵ اردیبهشت ۱۳۹۹

    با سلام و تشکر از بابت زحماتی که در ترجمه این مطالب میکشید. در دنیای امروز و بخصوص برنامه نویسی لازم هست که زبان انگلیسی تقویت شود و برنامه نویس واقعا بدون زبان انگلیسی به مشکل خواهد خورد. ممنون میشم اگه نام سایت http://embedded-lab.com رو که مرجع بیشتر مطالب این بخش از آموزش هست رو در ابتدای آموزش ذکر بکنید تا آرام آرام برنامه نویسها ماهیگیری را یاد بگیرند .فقط ماهی ندید هر از گاهی ماهی گیری هم ببرید.

    • Sisoog Os
      Sisoog Os
      ۵ اردیبهشت ۱۳۹۹

      سلام دوست عزیز
      منبعی که فرمودید پایین مطلب از زمان انتشار قرار گرفته , و ما در سیسوگ سعی کردیم تا بحال مطلبی بدون ارائه منبع قرار ندادیم این موضوع هم بحث فنی هست و هم اخلاقی
      و خیلی از مطالبی که شما منبعی نمیبنید توسط مولف نوشته شده
      ممنون بابت حساسیت و یاداوری شما

  • محمد
    ۵ آذر ۱۳۹۸

    سلام
    من کار با میکرو رو تازه شروع کردم
    لطفا اختصار هایی که نوشته می شه رو معنیشون (کاملشون)رو هم بزارین
    مثلا cco مخفف چیه ؟
    یا داخل کدها CLK_ClockSwitchCmd
    Cmd مخفف چیه؟!
    یا اگه راهی هست که خودمون پیدا کنیم که بهتره.
    با تشکر

    • Zeus ‌
      زئوس Zeus
      ۵ آذر ۱۳۹۸

      سلام دوست عزیز – تا جای ممکن این کار و انجام میدیم
      برای پیدا کردن عبارت کامل میتونید به یوزر منوال آیسی مراجعه کنید مثلا برای cco توضیح زیر رو نوشته
      These devices have internal and external clock source inputs and one output clock (CCO).
      Cmd مخفف کامند یا دستور است.
      خواهش میکنم

  • hossein
    ۹ آبان ۱۳۹۸

    سلام
    ببخشید من یه کتابخونه برای ds18b20 پیدا کردم که داخلشاز کتابخونه delay استفاده شده ولی من کتابخونه ی delay نتونستم پیدا کنم لطفا راهنمایی کنید
    ممنون
    http://embedded-lab.com/blog/stm8-microcontrollers-final-chapters/5/

    • Zeus ‌
      زئوس Zeus
      ۱۱ آبان ۱۳۹۸

      سلام دوست عزیز
      برای ایجاد تاخیر دو راه وجود داره راه اول که بیشتر مرسوم هست استفاد از حلقه است چیزی مثل کد زیر
      for(i=0;i<10000;i++)
      ;

      و راه دوم که برای ایجاد تاخیر دقیق بیشتر مورد استفاده قرار میگره ؛ استفاده از تایمر هست که میتونید به آموزش تایمر همین بخش مراجعه کنید.

  • Winiston ZZZ
    Winiston ZZZ
    ۲۵ خرداد ۱۳۹۸

    باسلام
    حتما نیاز هست که () CLK_PeripheralClockConfig مربوط به بخش های دیگر را مثل i2c غیر فعال نماییم ؟

    • Zeus ‌
      زئوس Zeus
      ۲۵ خرداد ۱۳۹۸

      فکر میکنم بشکل پیش فرض غیرفعال باشن قسمت های مختلف ؛ تنها لازمه اون قسمت هایی که لازم دارید رو فعال کنید.

  • Hossein
    ۴ آذر ۱۳۹۷

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

    • Nasim Hematian
      electronic girl
      ۵ آذر ۱۳۹۷

      سلام
      در این بخش به کلاک داخلی و خارجی و تفاوت آن ها پرداخته شده و در مثال بیان شده چگونه CPU را با استفاده از کلاک داخلی راه اندازی کنید و خروجی CPU را به عنوان کلاک خارجی داشته باشید. لطفا نمونه کد را خودتان به صورت عملی پیاده کنید و سپس اگر سوالی داشتید مطرح نمایید.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک