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

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

345

به نام خدا : تو این مطلب از آموزش آرم، میخوام آموزش راه اندازی 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 وصل کنید.

کد پروژه :

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

50MB پروژه و آموزش گیرنده ریموت کنترل فیکس کد ask - قسمت 1
0%
00:00  /  10:00
51MB پروژه و آموزش گیرنده ریموت کنترل فیکس کد ask - قسمت 2
0%
00:00  /  10:00
31MB پروژه و آموزش گیرنده ریموت کنترل فیکس کد ask - قسمت 3
0%
00:00  /  06:13

 

مطلب مرتبط : LPC1768 İle Dijital-Analog Saat Tasarımı

 

امیدوارم این مطلب ناچیز مورد استفاده شما قرار بگیری و مفید باشه براتون؛ بیش از این مزاحم نمیشم، فعلا یا علی.

قرائتی

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