نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

آموزش پروژه محور آرم lpc1768 مبحث rtc

به نام خدا : تو این مطلب از آموزش آرم، میخوام آموزش راه اندازی RTC رو براتون قرار بدم، البته پروژه هاش رو، قبلا آموزشش رو گزاشتم تو سایت ( آموزش آرم میکروکنترلر lpc1768 جلسه ۱۲ rtc ) >>> آموزش پروژه محور آرم lpc1768 مبحث rtc
آموزش پروژه محور آرم lpc1768 مبحث rtc

آموزش پروژه محور آرم lpc1768 مبحث rtc


 

کتابخانه rtc میکروکنترلر lpc1768

این کتابخونه ای که تو این مطلب میخوام براتون بزارم رو من از مطلب RTC Programming in LPC1768 برداشتم و مشکلاتی داشت که رفع کردم و توابعی کم داشت که اضافه کردم ( دوستان مشتاق! میتونن دو کتابخونه فوق رو بررسی کنن و فرقشون رو ببینن )؛ این کتابخونه شامل توابع زیر هستش :

که در زیر توضیح میدم تک تک توابع رو :
 
۱) تابع وقفه RTC_IRQHandler :

خب این تابع وقفه ما هستش، که داخل کتابخونه تعریف شده و اگه وقفه ای رخ بده یکی از سه متغیر AlarmInterrupt یا CounterIncrementInterrupt یا OscillatorFailInterrupt رو مقدارشون رو ۱ میکنه، و با ۱ شدن این متغییر ها ما متوجه میشیم که چه وقفه ای رخ داده.
توجه : برای خوندن مقدار این متغییر ها و اطلاع از وقفه رخ داده باید در اول پروژه هاتون به صورت زیر این متغییر ها رو تعریف کنید  :

 
۲) تابع راه اندازی RTC با نام RTCInit

از این تابع برای راه اندازی اولیه RTC استفاده میکنیم که باید در تابع MAIN و در خطوط اول این تابع فراخونی بشه.
 
۳) توابع صدور فرمان آغاز به کار و توقف RTC با نامهای RTCStart و RTCStop

بعد از فراخونی تابع RTCInit نوبت میرسه به صودر فرمان آغاز به کار واحد RTC که هر جا که نیاز داشتید میتونید شمارنده های RTC رو متوقف کنید ( RTCStop ) و هر جا نیاز داشتید بگید شمارش رو شروع کنند ( RTCStart )
 
۴) تابع ریست کردن CTC

این تابع رو هم همون طور که در مطلب آموزش RTC گفتم و در فیلم این مطلب هم فک کنم گفتم، تو دیتاشیت چیز خاصی دربارش نگفته، فقط گفته این بیت رو ۱ کنی و بعد ۰ کنی، CTC ریست میشه؛ حالا کاربردش کجا هستش دقیقا نمیدونم؛ فعلا استفاده ازز این تابع اجباری نیست.
 
۵) توابع تنظیم زمان و خوندن زمان

برا تنظیم زمان از تابع RTCSetTime و برا خوندن زمان از تابع RTCGetTime استفاده میکنیم.
توجه : برا استفاده از این توابع باید متغییر هایی از نوع ساختار RtcTime ایجاد کنیم و بعد متغیر هاشو رو مقدار دهی کنیم و بعد به تابع RTCSetTime بدیم، برا تابع RTCGetTime هم … ولش حال توضیح نیست، ادامه متنو بخونید راه حل رو گفتم ^_^ آموزش ماهی گیری!!!، اگه در مورد struct چییزی نمیدونید، مطالب زیر رو حتما بخونید :

  1. آموزش کامل typedef و struct
  2. آموزش پروژه محور struct در زبان c

 
۶) فعال کردن وقفه افزایش شمارنده

به کمک این تابع میتونیم وقفه افزایش شمارنده رو فعال کنیم، و اگه خواستیم غیر فعالش کنیم باید ۰ بهش بدیم؛ مقداری که میتونید به این تابع بدید رو در زیر براتون قرار میدم که میتونیم چند تاشون رو با اور بیتی کنید و بعد بدید به این تابع :
CIIR_IMSEC : شمارنده ثانیه
CIIR_IMMIN : شمارنده دقیقه
CIIR_IMHOUR : شمارنده ساعت
CIIR_IMDOM : شمارنده روز از ماه
CIIR_IMDOW : شمارنده روز از هفته
CIIR_IMDOY : شمارنده روز از سال
CIIR_IMMON : شمارنده ماه
CIIR_IMYEAR : شمارنده سال
حالا میتویند این مقادیر رو به این تابع بدید یا همون طور که گفتم اور کنید چند تاشون رو بعد بدی به این تابع، به کمک این تابع میتونیم تعیین کنیم که مثلا هر ثانیه یا هر دقیقه یه وقفه رخ بده که با یک شدن متغییر CounterIncrementInterrupt ما متوجه رخ دادن این وقفه میشیم ( فیلم آموزش و تست پروژه این مطلب رو ببنید حتما )
 
۷) فعال کردن و ماسک گزاری آلارم

به کمک تابع RTCSetAlarmInterrupt میتونیم وقفه آلارم رو فعال کنیم کنیم که ورودیش از نوع ساختار RtcTime هستش که قبلا دربارش حرف زدم، نمونه کد و نحوه تعریف و … هم در پروژه ته مطلب میتونید ببینید؛ تابع RTCSetAlarmMask هم برای ماسک گزاری هستش تا اون موارد که مهم نیست براتون، در عمل مقایسه، مورد مقایسه قرار نگیرند، مقادیری که به این تابع میتویند بدید به صورت زیر هستش ( دیگه از اسمشون معلومه که چی هستن، لذا توضیح نمیدم ) :
AMR_SEC
AMR_MIN
AMR_HOUR
AMR_DOM
AMR_DOW
AMR_DOY
AMR_MON
AMR_YEAR
 
۸) فعال/غیر فعال کردن وقفه عدم شناسایی ( یا هر مشکل دیگه ای ) اسیلاتور ۳۲KHz 

به کمک تابع RTCEnableOscillatorFailInterrupt میتونیم این وقفه رو فعال کنیم، و به کمک تابع RTCDisableOscillatorFailInterrupt هم میتونیم غیر فعال کنیم؛ وقتی متغییر OscillatorFailInterrupt مقدارش ۱ بشه یعنی این وقفه رخ داده.
 
۹) توابع پیشیبان گرفتن و بازگردانی اطلاعات، مربوط به رجیستر های بکاب

به کمک این توابع میتونید در رجیستر های بکاب اطلاعات ذخیره کنید یا مقدارشون رو بخونید.
 
 
خب توضیح توابع در این جا به پایان رسید، میریم سراغ پروژه این مطلب :
 

پروژه ساعت دیجیتال rtc با lpc1768

عملکرد پروژه : نمایش ساعت در کامپیوتر ( نرم افزار ارتباط سریال )، در زمان تعیین شده آلارم رخ میده، پایه های اسیلاتور ساعت رو به هم وصل کنید یا اسیلاتور رو از مدار جدا کنید، وقفه عدم تشخیص اسلاتور رخ میده.
شماتیک پروژه : باتری بکاب رو وصل کنید، به پایه های GND و VBAT؛ ماژول ارتباط سریال ( USB TO TTL ) رو به پایه های UART3 وصل کنید.
کد پروژه :

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

  1. آموزش پروژه محور آرم lpc1768 مبحث rtc قسمت۱
  2. آموزش پروژه محور آرم lpc1768 مبحث rtc قسمت۲
  3. آموزش پروژه محور آرم lpc1768 مبحث rtc قسمت۳

 

 
مطلب مرتبط : LPC1768 İle Dijital-Analog Saat Tasarımı
چیزای گفته نشده در این مطلب : من تو سایت کتابخونه stdio رو تا حالا آموزش ندادم، عمری باشه آموزشش رو میزارم تو سایت، البته اگه یاد و حس بزارن ^_^
 
امیدوارم این مطلب ناچیز مورد استفاده شما قرار بگیری و مفید باشه براتون؛ بیش از این مزاحم نمیشم، فعلا یا علی.
قرائتی

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
0

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir