سلام دوست عزیز :biggrin:
اگر توی هلپ کدویژن Maxim/Dallas Semiconductor DS1307 Real Time Clock Functions اینو سرچ کنی، توابع مورد نیاز رو میاره:
یه قسمتش اینه:
this function returns the current time measured by the RTC.
The *hour, *min and *sec pointers must point to the variables that must receive the values of hours, minutes and seconds.
Example:
/* the I2C bus is connected to ATmega8515 PORTB */
/* the SDA signal is bit 3 */
/* the SCL signal is bit 4 */
#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <ds1307.h>
void main(void) {
unsigned char h,m,s;
/* initialize the I2C bus */
i2c_init();
/* initialize the DS1307 RTC */
rtc_init(0,0,0);
/* read time from the DS1307 RTC */
rtc_get_time(&h,&m,&s);
this function returns the current date measured by the RTC.
The *date, *month and *year pointers must point to the variables that must receive the values of date, month and year.
سلام دوست عزیز :mrgreen:
اینم لینک یه نمونه برنامه:
که تاریخ و ساعت رو روی lcd نشون می ده،تمام توابع همونایی که برات گذاشتم هیچی نداره: http://www.persiangig.com/pages/down...m/ds1307_1.rar
فقط یه نکته ای رو توجه داشته باش:
میکرویی که من استفاده کردم atmega32 است که اگه دیتا شیت شو ببینی پایه scl پایه صفر از پورت c است و پایه sda پایه یک از پورت c است:
ولی طبق برنامه بالامی بینی که این پایه جابجا تعریف شدند(از طریق کدویزارد) oo:
این موضوع رو اگه توجه نداشته باشی جواب نمی ده
پس حواستو جمع کن ببین توی کدویزارد این پایه ها رو چطور تنظیم می کنی و طبق همون تنظیمات میکرو رو به ds1307 وصل کن!
موفق و سربلند باشی :biggrin:
همیشه بزرگوار تر از آن باشید که برنجید
و نجیب تر از آن باشید که برنجانید!
ببین دوست گلم من فکر می کنم که پایه های sda و scl رو جابجا وصل کردی!!! :mrgreen:
همون نکته ای که گفتم توجه کن!
این مشکل رو قبلا خودم هم داشتم!
اینکار رو کن: همون مدار و همون برنامه رو داشته باش بدون تغییر، فقط سیم هایی رو که به پایه های دیتا و کلاک وصل کردی جابجا کن! :biggrin:
باور کن این موضوع ساده تر از این هاست،با صبر و حوصله کاری رو که گفتم انجام بده! باریک الله پسر خوب! :biggrin:
همیشه بزرگوار تر از آن باشید که برنجید
و نجیب تر از آن باشید که برنجانید!
oo:
من فکر کردم داری مدارشو می بندی! اگه ببندی عملی می بینی که خیلی زود جواب میده!
ورژن پروتئوس من 7.6 است.
آره ممکنه که مشکل از پروتئوس باشه، بعضی وقت ها بد جواب می ده :agree:
همیشه بزرگوار تر از آن باشید که برنجید
و نجیب تر از آن باشید که برنجانید!
با سلام و خسته نباشید
من از این آی سی استفاده کردم اما وقتی دستورات رو می نویسم و برنامه رو پروتیوس اجرا می کنم به جای آنکه ساعت لپ تاپم رو نمایش بده به جای ساعت ، دقیقه و ثانیه رو 165 نشون می ده ممکنه مشکل از کجا باشه؟؟
سلام
وقتی تو کار عملی برام 165 نشون می داد دو حالت داشت سیم های متصل به میکرو رو برعکس می زدنم یه حالت دیگه بعد بستن مدار یا اشتباه در برنامه بود(انگار سه حالت شد )
شماتیک و برنامه هت رو اپلود کن شاید باهم درست کردیم
میکرویی که من استفاده کردم atmega32 است که اگه دیتا شیت شو ببینی پایه scl پایه صفر از پورت c است و پایه sda پایه یک از پورت c است
دوست عزیز در i2c نرم افزاری لازم نیس که حتما sda و scl رو به همون پایه های sda , scl که در دیتاشیت مشخص شده وصل کنید. این دوپایه برای two wire هستش. در i2c شما خودتون میتونید هرکدوم از پایه ها رو که بخواین بعنوان sda و scl در نظر بگیرید.
برای راه اندازی ds1307 به این نکات توجه کنید:
1- حتما باید برای بار اول از دستورات rtc_set_time و rtc_set_date استفاده کنید و در صورتی که باتری بک پ متصل باشه برای دفعه های بعدی نیازی به این 2 دستور نخواهد بود.
2- حتما scl و sda رو با مقاومت های 4.7 کیلو پول پ کنید.
3- اگه از برد بورد استفاده میکنید به اتصال scl و sda توجه کنید.
4- از کریستال های مرغوب 32.768 کیلو هرتز استفاده کنید و با خازن های 22 پیکو فارادی پایه های کریستال رو زمین کنید. همچنین هنگام لحیم کاری از داغ شدن زیاد کریستال جلوگیری کنید.
5- برای برنامه نویسی برای بار اول بهتره از help کدویژن کمک بگیرید. بدین صورت که در قسمت help عبارت ds1307 رو سرچ کنید و از مثال های اون استفاده کنید.
سلام .من با ds1307برنامه ساعت نوشتم توی پرتئوس جواب میده اما واقعیت نه.از کریستال32.768هم استفاده کردم اما در عمل یا165:165:165 نشون میده یا0:0:0 واصلا نمی شماره .توروخدا کمکم کنید .باید از خازن استفاده کنم ؟ چه خازنی و کجای مدار
دیدگاه