PDA

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



mahdi_6739
15-10-2012, 11:53
سلام

من میخوام با ds1307 یک ساعت درست کنم برنامه اش رو با atmega 32 نوشتم اما وقتی میکرو را ریست میکنم ساعت هم ریست میشود که این به خاطر تنظیم اولیه ds1307 است که تو برنامه میکرو نوشته میشود و وقتی میخوام این تنظیم اولیه رو از حافظه ds1307 استفاده کنم ساعت کار نمیکند و مقدار اولیه رو نشون میدهد:(
کمکم کنید

RPM
15-10-2012, 20:12
من از این کد استفاده می کنم و تا حالا برای من که مشکلی پیش نیومده



rtc_get_time(&h,&m,&s);

if((s>59||(h>24)||(m>59)))
{
rtc_set_time(0,0,0);
rtc_set_date(2,9,8,12);
}


این کد رو قبل از حلقه و در داخل تابع اصلی استفاده می کنم

electro_fuzzy
09-03-2013, 23:21
سلام
واسه منم همین مشکل پیش اومد بهتره یا تنظیمات رو تو یه تابع بزاری و هنگام وصل مدار تو ابتدا بره به تنظیمات یا اینکه بهتره نمایش رو تو تابع نشون بدی و هنگام بازگشت از یه تابع دیگه به نمایشت بری و دیگه اتفاقی که گفتی رخ نمیده چون دیگه تنظیماتت با نمایشت جدا هست. و اگه میخوایی تو ریست شدن دیگه تنظیمات هم نره بهتره یه وضعیت خاص واسه تنضیماتت بذاری مثلا یه متغیر بزار و بگو اگر کلید x و کلید y باهم اتفاق بیافتند به تنظیمات برو میکرو هم ریست بشه دیگه به تنظیمات نمیره

mustafaa
16-09-2013, 23:58
سلام
من از این روش استفاده کردم
اول یه متغییر تو حافظه eeprom تعریف کن بعد مساوی صفر قرار بده
دوم اینکه قبل از مقدار دهی اولیه یه شرط بنویس که مقدار متغییر رو چک کنه، بعد مقدار دهی اولیه مقدار متغییر رو تغییر بده اینطوری شرط فقط یک بار اجرا میشه حتی اگه چندین بار ریست کنی

Eeprom int m;
M=0
Delay_ms(1);
If(m==0)
{
Rtc_set_time(0,0,0);
M=1;
Delay_ms(1);
}



فقط چه چیزی چون حافظه eeprom از flash کندتره حتما باید از تاخیرها کمک بگیری

aaxa
14-04-2014, 15:10
سلام
secund byte .7=0 را چه جوری ودر کجای بیسکام بنویسیم

2--چرا برنامه زير كه قبل از do ميزارم با وصل كردن برق بجاي اينكه

يك ثانيه جلو بيفته ده الي پانزده ثانيه جلو مي افتد
علت چيست

I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Nack
I2cstop
Gosub Seco
Seco:
Incr _sec
If _sec > 59 Then _sec = 0
_sec = Makebcd(_sec)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cstop
Return
ممنون تشكر





You can see links before reply


aaxa


You can see links before replyارسال شده در: دوشنبه، 25 فروردين ماه ، 1393 12:59:11 موضوع مطلب: aaxa





سلام
برای را اندازی ds1307
secund byte .7=0 را چه جوری ودر کجای بیسکام بنویسیم

2--چرا برنامه زير كه قبل از do ميزارم با وصل كردن برق بجاي اينكه

يك ثانيه جلو بيفته ده الي پانزده ثانيه جلو مي افتد
علت چيست

I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Nack
I2cstop
Gosub Seco
Seco:
Incr _sec
If _sec > 59 Then _sec = 0
_sec = Makebcd(_sec)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cstop
Return
ممنون تشكر

Dr.ROOSTA
14-04-2014, 16:52
سلام . این یه فایل جامع درمورد DS1307 هستش . امیدوارم بدرد بخوره
You can see links before reply

aaxa
16-04-2014, 10:42
سلام
کارم را نیوفتاد
برای را اندازی ds1307
secund byte .7=0 را چه جوری ودر کجای بیسکام بنویسیم

2--چرا برنامه زير كه قبل از do ميزارم با وصل كردن برق بجاي اينكه

يك ثانيه جلو بيفته ده الي پانزده ثانيه جلو مي افتد
علت چيست

I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Nack
I2cstop
Gosub Seco
Seco:
Incr _sec
If _sec > 59 Then _sec = 0
_sec = Makebcd(_sec)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cstop
Return
ممنون تشكر

omidctrl
09-07-2014, 16:12
سلام به همگی. من از آی سی ds1307 برای ساعت و تاریخ استفاده کردم ولی نمیدونم مقدار اولیه که واسش تعریف کردم درست هست یا نه.چون وقتی شبیه سازیش می کنم جای مقادیر ساعت و تاریخ عددهای چرت و پرت نشون میده.لطفا اگه کسی مشکل رو میدونه کمک کنه.مرسی
در ضمن برنامه رو هم بصورت text و هم با بسکام گذاشتمش.

omidctrl
09-07-2014, 22:14
منتظرم
:018::018:

omidctrl
11-07-2014, 00:51
مشکلم حل شدlov: