PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : RTC on LPC2378



shayanmelody
25-08-2011, 21:29
سلام خدمت همه دوستان عزیز.
من واحد rtc رو تو این میکرو راه انداختم و میخوام اینجا روش راه اندازی و رجیستر های مربوطه رو توضیح بدم.نمیدونم تا الآن کسی در این مورد مطلب گذاشته یا نه ، اما در هر صورت من میخوام از پست بعد شروع کنم.
با تشکر.

shayanmelody
25-08-2011, 22:19
برای راه اندازی واحد RTC ابتدا باید تغذیه آنرا فعال کنیم که اینکار هم از طریق مقدار دهی رجیستر مربوطه امکان پذیر هست و هم میتوانید از طریق فایل استارت آپ قسمت configuration wizard و سپس از قسمت clock setup و سپس power control for تیک قسمت RTC رو قرار دهید و یا در از طریق کدنویسی در فایل اصلی برنامه دستور زیر را بنویسید :


PCONP |= 0x200;
در مرحله بعد باید RTC را ریست کرده و کلاک آنرا تعیین کنید . اینکار از طریق رجیستر RTC_CCR امکان پذیر است که یک رجیستر 8 بیتی میباشد و عملکرد آن طبق برگه اطلاعاتی میکرو به شرح زیر میباشد :
بیت صفر (CLKEN) : زمانیکه این بیت یک باشد ، واحد RTC فعال و در صورت صفر کردن آن واحد RTC غیر فعال میشود.
بیت یک (CTCRST) : زمانیکه این بیت یک باشد واحد RTC (منظور شمارش های ثانیه ، دقیقه و ... است) ریست میشوند و مقدار صفر میگیرند.
این واحد تازمانیکه مقدار این بیت به صفر تبدیل نشود غیر فعال باقی میماند.
بیت 2 و 3 : این دوبیت رزرو شده هستند و کاربر نباید بر روی آنها چیزی بنویسد.همچنین خواندن از روی این بیت های رزرو شده تعریف نشده است.
بیت 4 (CLKSRC) : اگر این بیت صفر باشد ، واحد RTC کلاک مورد نیاز خود را از تقسیم کننده میگیرد و اگر این بیت یک باشد ، واحد RTC کلاک مورد نیاز خود را از کریستال ساعت متصل شده به پایه های RTCX1 و RTCX2 میگیرد.
بیتهای 5 تا 7 : این بیت ها نیز رزرو شده هستند.

برای فعال سازی وقفه های مورد نیار در واحد RTC رجیستر RTC_ILR که رجیستری 8 بیتی برای این منظور میباشد ، باید مقدار دهی شود.
بیت صفر (RTCCIF) : برای اینکه .احد وقفه افزایش شمارش (COUNTER INCREMENT INTRRUPT) فعال شود این بیت باید یک شود.
بیت یک (RTCALF) : وقتی که بخواهیم در هنگام رویدادن آلارم وقفه ایجاد شود باید این بیت یک شود.
بیت دو (RTCSSF) با دادن مقدار یک به این رجیستر وقفه تابع شمارش ثانیه فعال میشود.
بیت ها ی سه تا هفت رزرو شده هستند.

واحد RTC قابلیت آلارم نیز دارا میباشد . جهت شلوغ نشد مطالب در آینده ای نزدیک روی این قابلیت جالب بحث میکنیم.لازم به ذکر است که تنظیمات اولیه آلارم از طریق رجیستر هشت بیتی RTC_AMR امکان پذیر ست و ما در ابتدا به تمام بیت های آن مقدار یک که به معنی غیر فعالسازی این قسمت هست ، میدهیم.

رجیستر RTC_CIIR این قابلیت را دارد که هر دفعه که شمارنده افزایش یافت ( چه شمارنده ثانیه ، چه دقیقه ، چه ساعت ، چه روز و ...) یک وقفه ایجاد کند.این تولید تا زمانیکه بیت صفرم رجیستر RTC_ILR (همان RTCCIF) از یک به صفر تغییر پیدا نکند در دسترس قرار خواهد داشت.



خوب ، تا اینجا تقریبا میشه گفت رجیستر های کنترلی رو در موردش صحبت کردیم (بغیر از آلارم) در پست بعد نحوه مقدار دهی اولیه RTC را توضیح خواهم داد و در پست بعد از اون خواندن از حافظه RTC را خواهم گفت.

با تشکر.

shayanmelody
26-08-2011, 17:46
سلام به همه دوستان.
قرار شد که تو این پست نحوه مقدار دهی اولیه rtc و رجیستر های مربوطه رو توضیح بدم.


1) رجیستر rtc_sec : این رجیستر برای تنظیم اولیه ثانیه هست و باید مقداری بین 0 تا 59 بهش بدید.

2)رجیستر rtc_min : این رجیستر برای تنظیم اولیه دقیقه هست و باید مقداری بین 0 تا 59 بهش بدید.

3)رجیستر rtc_hour : این رجیستر برای تنظیم اولیه ساعت هست و باید مقداری بین 0 تا 23 بهش بدید.

4)رجیستر rtc_dow : این رجیستر برای تنظیم اولیه روز هفته (day of week) هست و باید مقداری بین 0 تا 6 بهش بدید.

5)رجیستر rtc_dom : این رجیستر برای تنظیم اولیه روز ماه (day of month) هست که باید مقداری بین 0 تا 31 بهش بدید.

6)رجیستر rtc_month : این رجیستر برای تنظیم اولیه ماه هست و باید مقداری بین 1 تا 12 بهش بدید.

7) رجیستر rtc_year : این رجیستر برای تنظیم اولبیه سال هست و یه مقداری بهش بدید!

8)رجیستر rtc_doy : این رجیستر برای تنظیم اولیه روز سال (day of year) میباشد که باید مقداری بین 1 تا 365 بهش بدید.


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

mihman
12-01-2012, 11:36
سلام.من طبق آموزش آقای نیکزاد واحدrtc را در lpc2378 راه اندازی کردم.فقط یه سوال دارم.اگه ممکنه راهنمایی کنین :
اگه بخواهیم در حالتی که برق بورد قطع هست،واحد rtc همچنان کار کنه باید چکار کنیم؟؟؟
من الان باطری را داخل قابش گذاشتم و ساعت را هم بر روی 9 تنظیم کردم.در حالت عادی که برق بورد وصل هست خیلی خوب کار میکنه ولی پس از قطع برق بورد در حالی که انتظار دارم واحد rtc همچنان به فعالیتش ادامه بده،ولی واحد rtc از کار میفته و با وصل مجدد برق بورد دوباره از ساعت 9 شروع به کار میکنه.
آیا باید تنظیمات خاصی انجام بدیم؟؟؟

shayanmelody
12-01-2012, 13:49
سلام.
سوكت باطري از قبل رو برد شما نصب بوده ؟
(براي من نصب نبود و خودم بعدا گذاشتم ،‌منظورم اين هست كه خدايي نكرده بر عكس وصلش نكرده باشيد !)
من با باطري بك آپ تست نكردم و متاسفانه ميكرو رو بردم خراب شده و نميتونم تست بگيرم.
ديتا شيت رو يه نگاه بنداز ببين براي راه اندازي پايه بك آپ بايد رجيستري دست بخوره يا نه.

mihman
12-01-2012, 14:07
سلام.
سوكت باطري از قبل رو برد شما نصب بوده ؟
(براي من نصب نبود و خودم بعدا گذاشتم ،‌منظورم اين هست كه خدايي نكرده بر عكس وصلش نكرده باشيد !)
من با باطري بك آپ تست نكردم و متاسفانه ميكرو رو بردم خراب شده و نميتونم تست بگيرم.
ديتا شيت رو يه نگاه بنداز ببين براي راه اندازي پايه بك آپ بايد رجيستري دست بخوره يا نه.
سلام.روی بورد من سوکت باطری بود.اگه بخوام از دیتاشیت چیزی متوجه بشم اول باید دو سه ماه برم کلاس زبان.آخه زبانم ضعیفه.

agape
12-01-2012, 14:15
خوب یه چیزی دایی جان ؛ این نکته رو مد نظر داشته باش که وقتی میکرو ریست میشه ، نباید دوباره rtc رو مقدار دهی کنی و ریست کنی چون که با این کار همه چیز از اول مقدار دهی میشه دیگه ساعتم به حالتاول بر میگرده!

mihman
12-01-2012, 15:15
خوب یه چیزی دایی جان ؛ این نکته رو مد نظر داشته باش که وقتی میکرو ریست میشه ، نباید دوباره rtc رو مقدار دهی کنی و ریست کنی چون که با این کار همه چیز از اول مقدار دهی میشه دیگه ساعتم به حالتاول بر میگرده!
تشکر دایجون!!!:018:
من طبق فرمایش آقای مزارعی اینطور نتیجه گرفتم که ریست شدن rtc پس از روشن شدن مجدد میکرو امری طبیعی هست.
خوب یه سوال :چطوری میتونیم یه میکرو را طوری روشن کنیم که rtc ریست نشه.
اصلا یه سوال دیگه :آیا میکرو به هنگام روشن شدن ریست میشه؟

shayanmelody
12-01-2012, 18:48
حرف دايي درسته.
مقدار دهي كردن اوليه rtc رو تويه يك تابع بنويس.
بعدش يه كليد بزار كه با زدن اون تابع فراخوني بشه.
الآن عجله دارم ، وگرنه فكر ميكردم ببينم كار قشنگ تري ميشه كرد يا نه.
راستي ،‌گفتي از توضيحات من rtc رو راه انداختي . من خوندن از حافظه rtc رو گفته بودم ؟!!!!!!!!

mihman
12-01-2012, 19:36
حرف دايي درسته.
مقدار دهي كردن اوليه rtc رو تويه يك تابع بنويس.
بعدش يه كليد بزار كه با زدن اون تابع فراخوني بشه.
الآن عجله دارم ، وگرنه فكر ميكردم ببينم كار قشنگ تري ميشه كرد يا نه.
راستي ،‌گفتي از توضيحات من rtc رو راه انداختي . من خوندن از حافظه rtc رو گفته بودم ؟!!!!!!!!
توضیحات شما و یه برنامه دیگه که از اینترنت گرفتم.راهی که شما و دایجون فرمودین را امتحان میکنم و خبرش را میدم

M.ABDOLLAHI
13-01-2012, 09:08
سلام با اجازه آقا شایان من این برنامه را که ساعت را روی LCD رنگی نمایش میده را قرار میدم از روتین وقفه RTC برای نمایش ساعت استفاده شده...
You can see links before reply

mihman
15-01-2012, 01:29
توضیحات شما و یه برنامه دیگه که از اینترنت گرفتم.راهی که شما و دایجون فرمودین را امتحان میکنم و خبرش را میدم
سلام.من طبق توضیحات آقای نیکزاد مبنی بر تعریف 1 کلید در برنامه و تنظیم ساعت در صورت فشرده شدن کلید،پیش رفتم و کاملا جواب داد.الن وقتی برق بورد را قطع میکنم و بعد از مدتی دوباره وصل میکنم ،rtc ساعت فعلی را نشان میده.ممنون از همه

agape
15-01-2012, 16:18
خوب همین انتظار هم میرفت !
حالا کسی میتونه ساعت آنالوگ با ال سی دی گرافیکی درست کنه !

M.ABDOLLAHI
15-01-2012, 19:22
من درست نکردم ولی میدونم باید از توابع مثلثاتی استفاده کرد البته تا اونجائی که من میدونم

alireza9900
15-01-2012, 22:21
من انشاالله اگه وقت شد می نویسمش و می زارم اینجا
الان امتحانات تموم شد وقتم آزاد تره.

rhmjafari
19-01-2012, 03:17
سلام
من یه سوالی در رابطه با با ARM داشتم،اگر که من بورد آموزشی lpc1768 رو یاد بگیرم .دلیل بر اینه که با هر نوع آرمی میتونم با همون نوع برنامه نویسی کار کنم یا نه؟بعدشم میخاسم ببینم آرم برای پردازش سیگنال جواب میده یا نه؟

rhmjafari
19-01-2012, 03:21
راسش من واسه تزم کلاک بالا در حد 0.8گیگ میخام که واس با یه آرم جدیدتر کارکنم

M.ABDOLLAHI
19-01-2012, 07:56
سلام
من یه سوالی در رابطه با با arm داشتم،اگر که من بورد آموزشی lpc1768 رو یاد بگیرم .دلیل بر اینه که با هر نوع آرمی میتونم با همون نوع برنامه نویسی کار کنم یا نه؟بعدشم میخاسم ببینم آرم برای پردازش سیگنال جواب میده یا نه؟
سلام دقیقا نه ولی زمینه برات فراهم میشه جدا از اون برنامه نویسی و سخت افزار جانبی کلا یک قلقهائی داره که به تجربه چند ساله احتیاج داره ولیکن برای پردازش تصویر باید از cortexm4 استفده کنی که dsp هم داره مثل نمونه تولیدی شرکت st یا هم از همون dsp های شرکت تگزاس که اونجا یک مقدار کارت سخت میشه

راسش من واسه تزم کلاک بالا در حد 0.8گیگ میخام که واس با یه آرم جدیدتر کارکنم
اینجور مواقع باید برد آماده بخری چون تقریبا همشون bga هستند و کلی تجهیزات جانبی مثل sdram و nand flash و غیره و ذلک میخواد که کلی دردسر داره بهترین گزینه هم فکر میکنم محصولات سامسونگ که مثلا s3c2440 یا s3c6410 و جدیدا cortexa8 هم توی ایران اومده ولی کار کردن با اینها به اون راحتی هم نیست بنظرم پروژت را از همین الان عوض کن مگر اینکه برای فوق یا دکترا باشه...

mihman
22-01-2012, 23:14
سلام با اجازه آقا شایان من این برنامه را که ساعت را روی LCD رنگی نمایش میده را قرار میدم از روتین وقفه RTC برای نمایش ساعت استفاده شده...
You can see links before reply
سلام.من برنامه ای که آقای عبداللهی گذاشتن تست کردم.البته من با lcd کاراکتری تست کردم.من درون وقفه rtc یه متغیر گذاشتم که هر بار وقفه اتفاق افتاد این متغیر یدونه زیاد میشه و مقدار این متغیر را هم همزمان روی lcd نمایش میدم.ولی مشکل اینجاست که انتظار دارم وقفه هر 1 ثانیه اتفاق بیفته ولی این طورکه از شمارش متغیر روی lcd پیداست،وقفه خیلی زودتر از 1 ثانیه اتفاق میفته..یعنی به محض وصل شدن تغذیه بورد متغیر خیلی تند تند شروع به شمارش میکنه.مشکل از کجاست؟؟؟؟

M.ABDOLLAHI
23-01-2012, 09:31
شما مطمئنی برای کریستال قسمت rtc از کریستال ساعت(32 کیلو) استفاده کردی یا نکنه فرکانس rtc را از خود فرکانس اسیلاتور با محاسبه اشتباه تامین کردی؟ در ضمناینرو بگم دوستان من دو تا lpc2378 داشتم یکیشون درست کار میکرد یکی دیگه همین مشکلی که شما میگید داشت یعنی خیلی سریع میپرید توی روتین وقفه پس احتمالا در زمینه وقفه روتین وقفه rtc دارای مشکل فنی است احتمالا این نمونه هائی که دست ماست نمونه استوک اینهاست... بعد برای اینکه در تولید به مشکل نخورم وقفه یک ثانیه را با یکی از تایمرها درست کردم

mihman
23-01-2012, 11:12
شما مطمئنی برای کریستال قسمت rtc از کریستال ساعت(32 کیلو) استفاده کردی یا نکنه فرکانس rtc را از خود فرکانس اسیلاتور با محاسبه اشتباه تامین کردی؟ در ضمناینرو بگم دوستان من دو تا lpc2378 داشتم یکیشون درست کار میکرد یکی دیگه همین مشکلی که شما میگید داشت یعنی خیلی سریع میپرید توی روتین وقفه پس احتمالا در زمینه وقفه روتین وقفه rtc دارای مشکل فنی است احتمالا این نمونه هائی که دست ماست نمونه استوک اینهاست... بعد برای اینکه در تولید به مشکل نخورم وقفه یک ثانیه را با یکی از تایمرها درست کردم
سلام.بله مهندس تنظیمات rtc را عینا مثل مثال شما انجام دادم.پس با این حساب مشکل فنی هست

M.ABDOLLAHI
23-01-2012, 23:37
سلام مجدد یک مشکل فنی دیگر هم که من متوجه شدم این بوده که اون قسمت از روتین دریافت وقفه دریافت رابط uart که تنظیم میکنیم بعد از دریافت چند باین به روتین وقفه دریافت برود هم درست کار نمیکند اینرا آقای زرکوب هم امتحان کردند جواب نمیده البته در lpc2378 حالا باید باز هم بررسی بشه ببینیم یگه چه مشکلاتی هست...

mostafa27
21-02-2014, 13:28
سلام آقای نیکزاد میشه برنامه RTC on lpc2378 را به پستت اضافه کنی

mostafa27
02-04-2014, 18:49
با سلام اگه ممکنه برنامشو add کنید
ممنونم