ARM, آموزش, آموزش STM8, توصیه شده, مقاله های سیسوگ

تایمر 2 در STM8 | قسمت هفدهم آموزش STM8

آموزش STM8 قسمت 17 ام تایمر کانتر

سیسوگ در قسمت شانزدهم آموزش میکروکنترلر STM8 انواع تایمر‌های STM8 را به شما معرفی کرد. در این قسمت از مجموعه مقالات آموزش میکروکنترلر STM8  قصد دارد تایمر 2 را آموزش دهد. با سیسوگ همراه باشید.

 

تایمر 2 :

تایمر 2 اساسی‌ترین ویژگی هر تایمر است و هم‌چنین نیازهای ضروری هر سیستم در آن جاسازی شده است. این حالت را می‌توان با وقفه و یا بدون وقفه استفاده کرد. ما ابتدا این را بدون وقفه و سپس با وقفه مورد بررسی قرار می‌دهیم.

در تایمر 2، می‌توانیم با استفاده از تأخیر، حلقه و روش‌های دیگر زمان دقیق را بدست آوریم. تایمر 2 با استفاده از سخت‌افزار تایمر و مستقل از بقیه قسمت‌ها کار می کند. این تایمر کاربردهای بسیاری دارد. به عنوان مثال، با استفاده از این تایمر می‌توانیم از تأخیر نرم‌افزار جلوگیری کنیم، شکاف‌های زمانی در سیستم بلادرنگ (RTOS) تولید کرد و غیره.

تایمر 2 در STM8

تمام تایمرهای STM8 مشابه هستند و تنها چند تفاوت دارند. به عنوان مثال، تایمر 1 یک شمارنده تکرار است. این مانند شمارنده‌ای به دنبال شمارنده دیگر است. تایمرهای دیگر این بخش را ندارند. تمامی تایمرها شمارنده رو به بالا هستند، در حالیکه تایمرهای پیشرفته می‌توانند شمارنده معکوس نیز باشند.

تئوری اصلی تایمر 2 به این صورت است که شما یک کلاک داخلی دارید که آن را بر حسب نیاز خود تقسیم بندی می‌کنید. بنابراین شما آن را تنظیم می‌کنید و از کلاک جدید برای شمارنده استفاده می‌کنید. شمارنده از 0 تا 100 شروع به شمارش می‌کند و بعد از اینکه به 100 رسید مجدداً از 0 شروع به شمارش می‌کند. رابطه زیر زمان تایمر را نشان می‌دهد:

فرمول تایمر 2

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

در این مثال، کلاک اصلی روی 2 مگاهرتز تنظیم شده است.  تایمر 2 پس از تقریبا 2 ثانیه دوباره بارگذاری می‌شود. ما این کلاک را به 2048 قسمت تقسیم می‌کنیم و که در این حالت شمارنده پس از شماره 1952 مجدداً بارگیری می‌شود. توجه داشته باشید که تایمر 2 شمارنده تکرار ندارد و روی 1 تنظیم می شود.

 

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

 

تایمر 2 در STM8

 

نمونه کد تایمر 2

در این مثال، LED بدون تأخیر زمانی نرم افزار چشمک می زند. تایمر 2 در اینجا برای ایجاد تأخیر زمانی استفاده می‌شود.

 

 

توضیحات

در ابتدا CPU و کلاک داخلی هر دو روی 2 مگاهرتز تنظیم می شوند.

 

همانطور که قبلاً توضیح داده شد، برای اینکه تایمر هر 2 ثانیه یکبار مجدداً بارگیری شود باید شمارنده را به 2048 قسمت تقسیم بندی کنیم و شمارنده روی 1952 بارگیری شود. این تنظیمات کد در زیر نشان داده شده است:

 

هدف ما این است که LED برای 1 ثانیه روشن و برای 1 ثانیه خاموش باشد. برای ایجاد این زمان 2 ثانیه ای شمارنده تا شماره 1952 پیش می رود بنابرین وقتی شمارنده تا 976 پیش برود مدت زمان 1 ثانیه سپری می شود. بنابراین در حلقه اصلی مقدار شمارنده تایمر 2 را چک می کنیم. وقتی شمارنده از 0 تا 976 را می شمارد LED روشن و وقتی از 977 تا 1952 را می شمارد LED خاموش می شود. توجه داشته باشید که پایه مثبت LED به VDD متصل است و وقتی PD3 مقدار کمی دارد روشن می شود.

 

 

سیسوگ در قسمت های بعدی تایمرهای دیگر STM8 را مورد بررسی قرار می دهیم. در قسمت هجدهم تایمر 4 را مورد بررسی قرار می‌دهد. با سیسوگ همراه باشید.

منبع

مطالب مرتبط

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

7 دیدگاه در “تایمر 2 در STM8 | قسمت هفدهم آموزش STM8

  1. Avatar for سپهر راد سپهر راد گفت:

    سلام، قسمت بعدی که در مورد تایمر ۴ هست باز نمیشه و هشدار یافت نشد میده.
    لطف کنید درست کنید.

    1. Avatar for Shadow Shadow گفت:

      سلام دوست عزیز این مشکل برطرف شده میتونید بررسی بفرمایید.

      1. Avatar for سپهر راد سپهر راد گفت:

        تشکر از پیگیری سریعتون.

  2. Avatar for شهاب شهاب گفت:

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

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام
      منظورتون از نمونه کد، دقیقا کدام قسمتش هست
      کانفیگش یا اینتراپتش ؟!

  3. Avatar for علیرضا علیرضا گفت:

    با سلام
    من تایمر دو رو با وقفه راه اندازی کردم
    به عنوان مثال میخواستم که هر 200 میلی ثانیه یک بار بره توی تابع وقفه و بعد بیاد بیرون
    ولی با هر کانفیگی که تنظیم کردم این کار نکرد بعد اسکوپ روی روی پایه میکرو گذاشتم دیدم فرکانس 33.9 کیلو هرتز هست
    بازم تنظیمات میکرو تغییر دادم فرغی نکرد
    void TIM2Config(void)
    {
    TIM2_DeInit();
    TIM2_TimeBaseInit(TIM2_PRESCALER_32768, 15625);
    TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
    TIM2_Cmd(ENABLE);
    }
    این تکه کد برای تنظیمات تایمر هست
    و این هم کدی هست که توی فایل اینتراپت ها نوشتم
    INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
    {
    /* In order to detect unexpected events during development,
    it is recommended to set a breakpoint on the following instruction.*/
    GPIO_WriteReverse(GPIOD,GPIO_PIN_4);

    }

    میکروی استفاده شده : stm8s003f3

    با تشکر از اموزش های خوبتون

  4. Avatar for saeed saeed گفت:

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

دیدگاهتان را بنویسید

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