نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

آموزش پروژه محور lpc1768 مبحث system tick timer

350

به نام خدا : تو این مطلب از سری مطالب آموزش آرم ، میخوام آموزش پروژه محور system tick timer میکروکنترلر LPC1768 رو براتون قرار بدم، آموزش این واحد رو قبلا تو سایت گزاشتم که در زیر لینکش رو میزارم براتون ( آموزش پروژه محور lpc1768 مبحث system tick timer )

آموزش پروژه محور lpc1768 مبحث system tick timer

آموزش پروژه محور lpc1768 مبحث system tick timer


 

کتابخانه system tick timer میکروکنترلر LPC1768

کتابخانه system tick timer میکروکنترلر LPC1768

این کتابخونه ای که نوشتم براتون، دارای توابع و define های مورد نیاز زیر هستش، که بعدش میریم سراغ شرح تک تک توابع :

این بود لیست توابع و ماکرو ها - بریم توضیح تک تک توابع، به ترتیب نحوه استفاده :

به کمک این ۳ تا تابع، میتونید از واحد system tick timer به عنوان یه تابع تاخیر زمانی ( delay ) دقیق استفاده کنید؛ اگه از این توابع استفاده کنید، دیگه نمیتونید از توابع دیگه ای که برا این واحد نوشتم استفاده کنید؛ پروژه ای برای این قسمت براتون در ته مطلب قرار میدم. ( کلا تو این مطلب ۳-۴ تا پروژه بیشتر برا این واحد قرار نمیدم، همین هم زیادشه ^_^ ) دیگه تابع ها هم تابلو هستن کاربردشون ولی باز یه کوچولو توضیح میدم :
SysTick_Delay_s : تولید تاخیر زمانی ( واحد ثانیه )
SysTick_Delay_ms : تولید تاخیر زمانی ( واحد میلی ثانیه )
SysTick_Delay_us : تولید تاخیر زمانی ( واحد میکرو ثانیه )

به کمک این دو تابع، زمان بین هر بار رخ دادن این واحد رو تعیین میکنیم.
SysTick_SetTimeInterrupt_ms : اگه زمانتون بین ۱ - ۱۶۷ میلی ثانیه هستش، از این تابع استفاده کنید.
SysTick_SetTimeInterrupt_us : اگه زمانتون بین ۱ - ۱۶۷,۷۷۲ میکرو ثانیه هستش، از این تابع استفاده کنید.
توجه : از مقداری بیش از محدوده تعیین شده برای هر تابع، استفاده نکنید.

SysTick_Init : به کمک این تابع میتونیم تنظیمات دلخواه واحد system tick timer رو اعمال کنیم؛ این تابع دو تا پارامتر داره که به ترتیب توضبیح میدم در زیر :
توجه مهم : اگه از خود تابع وقفه نمیخوام استفاده کنیم و فقط از پرچمش میخوایم استفاده کنیم، بهتره وقفه این واحد رو غیر فعال کنیم.
ClockSource : در این پارامتر، منبع کلاک این واحد رو تعیین میکنیم که داخلی باشه یا خارجی، اگه خارجی باشه باید به پایه p3.26 کلاک اعمال کنید؛ برا راحتی کار دو تا ماکرو تعریف کردم با نام های SysTick_INTERNAL_CLOCK و SysTick_INTERRUPT_DISABLE تا برنامتون خوانا تر بشه.
EnableInterrupt : فعال/غیر فعال کردن وقفه این واحد؛ برا اینم دو تا ماکرو با نام های SysTick_INTERRUPT_ENABLE و SysTick_INTERRUPT_DISABLE تعریف کردم کیه میتونید ازشون استفاده کنید و به عنوان مقدار اولیه به این پارامتر ( EnableInterrupt ) بدید.

خب بعد از تنظیم زمان، و اون دو تا تنظیمات دیگه ( منبع کلاک و وقفه ) نوبت فعال کردن این واحد میرسه.
SysTick_Enable : فعال کردن شمارنده این واحد.
SysTick_Disable : متوقف کردن شمارنده این واحد.

SysTick_CurrentCounterValue : برا خوندن مقدار فعلی شمارنده تایمر این واحد به کار میاد.

SysTick_ReadInterruptFlag : برا خودن پرچم وقفه ( اگه وقفه رخ بده/شمارنده ۰ بشه؛ این بیت ۱ میشه ) این واحد به کار میاد.

خب دیگه توضیح توابع تموم شد، بریم سراغ پروژه هامون ^_^

پروژه system tick timer میکروکنترلر LPC1768

پروژه system tick timer میکروکنترلر LPC1768

توضیح کلی برای ۳ پروژه زیر :  تو پروژه های ۱ و ۲ و ۳ اومدم پایه P2_10 رو هر ۱۰۰ میلی ثانیه وضعیتش رو عوض کردم، تو هر ۳ پروژه همین کارو کردم ولی به ۳ روش ممکن اونم تنها با واحد system tick timer PROJECT؛ پروژه ۲و۳ همگام پیکربندی یه کدی رو میبینید که به صورت توضیحات درش ابردم، منظورم اینه که میتونید هم از منبع کلاک داخلی و هم خارجی استفاده کنید، به صورت کد در ابردم تا سریع منبع کلاک رو بتونید تغییر بدید.

پروژه LPC1768 شماره ۱ : استفاده از تابع دیلای

پروژه LPC1768 شماره ۲ : استفاده از وقفه

پروژه LPC1768 شماره ۳ : استفاده از پرچم وقفه

اینم از جواب عملکرد ۳ پروژه بالا در اسیلوسکوپ؛ پایه p2_0 که مقدارش هر ۱۰۰ میلی ثانیه تغییر میکرد رو به اسکپ وصل کردم و این نمودار تغییرات این پایه هستش، میبینید که همه چیز درسته؛ البته این عکس برا وقتی هستش که از منبع کلاک داخلی ۱۰۰ میگ من استفاده میکنم، برا کلاک داخلی غیر از ۱۰۰ میگ و کلاک خارجی جواب توی اسکپ فرق میکنه.

آموزش پروژه محور آرم

پروژه LPC1768 شماره ۴ : در این پروژه وضعیت پایه هر ۱ ثانیه یکبار تغییر میکنه.

اینم از عملکرد این پروژه در اسیلوسکوپ :

اسیلوسکوپ

 

فیلم پروژه و آموزش :

58MB آموزش پروژه محور lpc1768 مبحث system tick timer
0%
00:00  /  19:00

 

 

عید کجا بریم؟ - برادران روشنفکر آریایی نبینن!

عید کجا بریم

عید کجا بریم

 

امیدوارم این مطلب و پروژه ها براتون مفید باشه، فعلا یا علی.

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات :
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه
5
نظرات این مطلب بسته شده است.
  1. امیر

    مهمان

    امیر

    ممنون آقای دمیرچیلو بابت اشتراک گذاریتون.فقط اینو در نظر داشته باشین که مطالبتون خونده میشه و بسیار مفید واقع میشه.

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      امیدوارم!

  2. علیرضا آهنی

    مهمان

    علیرضا آهنی

    سلام.
    فرق این با تابع وقفه زمانی و وقفه و تایمر/کانتر چه؟

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      یه وقفه داخلی داریم و یه خارجی – داخلی که معلومه – از داخل تحریک میشه – خارجی هم از اسمش معلومه از خارج تحریک میشه ( توسط پایه هایی )
      حالا مثلا بحث وقفه داخلی – مثلا تایمر یه شمارنده ای داره – وقتی به مقدار حداکثر خودش برسه دوباره ۰ میشه – که به این حالت میگن سر ریز شدن – که در این زمان میتونه یه وقفه رخ بده ( اگه فعالش کرده باشیم )
      راستی تو چقدر بین این موضوع و اون موضوع میپری – یه چیزو کامل یاد بگیر – یا شاید هم سرعت یادگیریت بالاس laugh good

    • علیرضا آهنی

      مهمان

      علیرضا آهنی

      سلام.
      laugh
      اره.
      اخه این انقدر واحد داره برای ساخت تاخیر قاطی کردم.
      الان ای وی ار و تو ۵روز یاد گرفتم.