سلام
دوستان من یه ساعت با ماژول ds1307 ساختم که تو پروتئوس درست کار میکنه اما تو عمل مقدار 00:03:00 رو نشون میده و دیگه شمارش نمیکنه . اما وقتی چند بار تغذیه میکرو رو قطع و وصل میکنی درست میشه و باز که میکشی میزنی دوباره همون00:03:00 رو نشون میده . مشکل کجاست؟؟؟؟؟
اینم بگم ماژول باطریش تموم شده بود وقتی خریدم و چون قابل شارژ بود شارژش کردم اما رو ماژول که گذاشتم زود خالی شد . و اینکه وقتی ساعته راه میفته و جای باطری اداپتور که میذارم دیگه هرچقدم که تغذیه رو بکشی درست کار میکنه . ایا مشکل از باطریه؟
کلافه شدم
برنامه اش هم تو فایل پیوست میذارم :)
سلام. آره باتری بک آپ اش باید وصل باشه یا بجاش یه خازن بذاری که تو دیتاشیتش تا اونجایی که یادمه گفته بود.
موفق باشی.
(۰۴-دى-۱۳۹۳, ۱۲:۱۹:۵۷)sharin نوشته است: [ -> ]سلام. آره باتری بک آپ اش باید وصل باشه یا بجاش یه خازن بذاری که تو دیتاشیتش تا اونجایی که یادمه گفته بود.
موفق باشی.
خب اگه مشکل از باتریه پ چرا وقتی جای باتری اداپتور میذارم و تغذیه میکرو رو قطع و وصل میکنم باز شمارش نمی کنه؟؟؟؟؟؟؟؟
یادمه موقع راه انداختنش مشکل مشابه شما رو داشتم که دلیلش همین مورد بود ، من پایه ی باتری رو ول می ذاشتم! و میکرو هنگ می کرد.
بعد فهمیدم که اگر باتری بک آپ رو بذاری یا اون خازنی که گفتم ، مشکلش مرتفع می شه.
مشکل شما هم احتمال زیاد از همین باشه ، اما به هر حال به سخت افزار و نرم افزار پروژه شما دسترسی ندارم که ببینیم دقیقا همین مشکل رو داره یا نه ، اما احتمال 90% مشکل از همینه!
اون باتری سکه ای رو تهیه کنید و خیال خودتون رو راحت کنید.
در برقراری ارتباط I2C که احیانا مشکلی ندارید؟!
اگر باز شک دارید از کدویزارد کدویژن استفاده کنید که از I2C نرم افزاری استفاده می کنه و برای کار با این IC توابعی رو لحاظ کردهه ... .
موفق باشید.
(۰۴-دى-۱۳۹۳, ۱۳:۳۲:۲۰)alirezaa2 نوشته است: [ -> ] (۰۴-دى-۱۳۹۳, ۱۲:۱۹:۵۷)sharin نوشته است: [ -> ]سلام. آره باتری بک آپ اش باید وصل باشه یا بجاش یه خازن بذاری که تو دیتاشیتش تا اونجایی که یادمه گفته بود.
موفق باشی.
خب اگه مشکل از باتریه پ چرا وقتی جای باتری اداپتور میذارم و تغذیه میکرو رو قطع و وصل میکنم باز شمارش نمی کنه؟؟؟؟؟؟؟؟
اداپتور کجا باتری کجا
اولا اگه تغذیه ترانست 3 ولت نباشه (3 ولت رگوله شده ) احتمال قوی تراشه به باد بره
حالا نویزش اینا کنار
سلام عزیزم
1-از باطری استفاده کن
2-کد برنامه هم بذار
3- ساعت را چطور ست میکنی؟
سلام
اینم فایل سورس برنامه
سلام دوستان.
منم مشکلی مثل دوستمون دارم.
من ندیدم تو دیتاشید به خازن برای پایه ی Vbat اشاره شده باشه.
اگه هست بی زحمت مقدارشو بگید.
(۲۸-تير-۱۳۹۵, ۲۰:۲۸:۵۶)reza7232 نوشته است: [ -> ]سلام دوستان.
منم مشکلی مثل دوستمون دارم.
من ندیدم تو دیتاشید به خازن برای پایه ی Vbat اشاره شده باشه.
اگه هست بی زحمت مقدارشو بگید.
سلام.
مقدارش 100 نانو فاراد هست.
سلام
لطفا سورس زير رو تست كنيد
$regfile = "m8def.dat"
$crystal = 1000000
'------------------------ lcd -----------------------------------------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Pinc.1 , E = Pinc.0 , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinc.4 , Db7 = Pinc.5
Cls
'--------------------------- ds 1307 -----------------------------------------
$lib "ds1307clock.lib"
'configure the scl and sda pins
Config Sda = Portd.7
Config Scl = Portd.6
'address of ds1307
Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
Const Ds1307r = &HD1
'------------------------------ key --------------------------------------------
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Config Pinb.6 = Input
Config Pinb.7 = Input
'------------------------------------------------------------------------------
Config Debounce = 30
Dim A As Byte , B As Byte , Data1 As Byte , C As Byte
Dim Seco As Byte , Mine As Byte , Hour As Byte
DIM C AS BYTE
'----------------------------------------------------------------------------
Cursor Off
If C <> 12 Then
I2cstart
I2cwbyte Ds1307w
I2cwbyte 7
I2cwbyte 00010000
I2cstop
_sec = 0
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cstop
C = 12
End If
'-------------------------------------------------------------------------------
Main:
Do
Gosub Ds1307
Gosub Disply_24
Gosub Chekkey
Loop
'-------------------------------------------------------------------------------
Ds1307:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' start address in 1307
I2cstart ' Generate start code
I2cwbyte Ds1307r ' send address
I2crbyte Seco , Ack 'sec
I2crbyte Mine , Ack ' MINUTES
I2crbyte Hour , Nack ' Hours
I2cstop
Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)
If Seco > 59 Then Seco = 0
If Mine > 59 Then Mine = 0
If Hour > 23 Then Hour = 0
Return
'-------------------------------------------------------------------------------
Disply_24:
Locate 1 , 1
Lcd "*Time = " ; Hour ; ":" ; Mine ; ":" ; Seco ; " "
Return
'-------------------------------------------------------------------------------
Chekkey:
Debounce Pinb.6 , 0 , Minute , Sub
Debounce Pinb.7 , 0 , Hours , Sub
Return
'---------------------------------------------
'-------------------------------------
Minute:
Incr Mine
If Mine > 59 Then Mine = 0
Mine = Makebcd(mine)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 1 ' starting address in 1307
I2cwbyte Mine
I2cstop
Return
'-------------------------------------
Hours:
Incr Hour
If Hour > 23 Then Hour = 0
Hour = Makebcd(hour)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 2 ' starting address in 1307
I2cwbyte Hour
I2cstop
Return
'-------------------------------------