DS1307 + Mega16

May 01, 2007 12 Replies

Witam. Mam taki problem. Napisa³em krótki programik podaj±cy adres uk³adu I2C. Z uk³adem PCF8583 dzia³a prawid³owo ale jak podepne DS1307 niewidzi go. Niewiem ju¿ w czym mo¿e tkwiæ problem. Mo¿e jako¶ pomo¿ecie?



'------------------------------------------------------------------------------- ' DS1307.BAS ' Moje ds1307 clock on the Mega16 futurlec board '------------------------------------------------------------------------------- $regfile = "m16def.dat" $lib "I2C.LBX" $lib "Ds1307clock.lib" $crystal = 8000000



'***LCD*** Config Lcdbus = 4 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0



Config Sda = Portb.1 Config Scl = Portb.0 Config I2cdelay = 100



Dim Adres As Byte Dim Adres2 As Byte



Lcd "Start poszukiwania" Adres2 = 0 Cls Lcd "Start" Cls For Adres = 0 To 254 Step 2 I2cstart I2cwbyte Adres I2cstop



If Err = 0 Then Lcd "uklad pod: " ; Adres Adres2 = Adres Else Cls Lcd "Brak ukladu: " ; Adres End If Waitms 500 Next Adres Cls Lcd "uklad pod " ; Adres2 Waitms 500 Lowerline Lcd "Koniec" Cursor Off End



U¿ytkownik "Jazzstar" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:f184d9$jvh$ snipped-for-privacy@nemesis.news.tpi.pl...

Masz podpiêt± bateriê lub kondensator ? Scalak by³ choæ raz aktywowany ? Je¶li nie to najpierw trzeba mu ustawiæ bit CH, bo inaczej nie zg³osi siê

U¿ytkownik "lwh" snipped-for-privacy@vp.pl napisa³ w wiadomo¶ci news:f184qj$vo0$ snipped-for-privacy@news.onet.pl...

Bateria jest podpiêta, ,uk³ad nieby³ nigdy jeszcze wyko¿ystywany. Mo¿esz podpowiedzieæ jak ten bit ustawiæ ??

U¿ytkownik "Jazzstar" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:f18d7p$e8n$ snipped-for-privacy@nemesis.news.tpi.pl...

Na 8 stronie wyt³uszczonym drukiem pisze by go wyzerowaæ przy pierwszej inicjacji (i po ka¿dym zaniku zasilania rezerwowego).

Jednak mam w±tpliwo¶æ, czy to to, bo twój program ma zapewne wykrywaæ odpowied¼ ACK na kolejno wysy³any adres, bo by cokolwiek ustawiaæ musi najpierw odpowiedzieæ zerem na adres 208.

Masz go dobrze pod³±czony ? Czêstotliwo¶æ I2C nie jest zbyt wielka ? Program nie mo¿e byæ z³y skoro inne wykrywa³.

U¿ytkownik "lwh" snipped-for-privacy@vp.pl napisa³ w wiadomo¶ci news:f18f1b$r71$ snipped-for-privacy@news.onet.pl...

Pod³±czony jest OK. 1-2 pin kwarc (32,768kHz), 3 - aku (3V6), 4 - GND, 5- PB.1, 6 - PB.0, oba z rezystorami podci±gaj±cymi 4k7, 8 - Vcc z kondensatorem 100n. Czêstotliwo¶æ chyba nie jest za du¿a (ustawione i2cdelay=100) ale nieznam na tyle bascoma.

U¿ytkownik "Jazzstar" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:f18gmt$js1$ snipped-for-privacy@nemesis.news.tpi.pl...

Oscyloskop masz ?

U¿ytkownik "lwh" snipped-for-privacy@vp.pl napisa³ w wiadomo¶ci news:f18jjo$3a2$ snipped-for-privacy@news.onet.pl...

No w³a¶nie ca³y problem polega na tym, ¿e niemam pod rêk±. Tylko mierniczek uniwersalny.

U¿ytkownik "Jazzstar" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:f19okl$7dm$ snipped-for-privacy@atlantis.news.tpi.pl...

Czyli mo¿emy jedynie zgadywaæ, co jest ¼le. Nie bawiê siê we wró¿bitê.

Spróbuj np. wpisaæ ten delay maksymalny, by to bardzo wolno dzia³a³o i mo¿e na karcie d¼wiêkowej robi±cej za oscyloskop coc tam zobaczysz, co hasa po pinach zegara i danych. Wymu¶ ci±g³e podawanie adresu 208 (identyfikator DS1307)

U¿ytkownik "lwh" snipped-for-privacy@vp.pl napisa³ w wiadomo¶ci news:f1a53b$ahu$ snipped-for-privacy@news.onet.pl...

Wyja¶ni³o siê, wylutowa³em aku i ruszy³o. Kto¶ spapra³ projekt, najwyra¼niej ten uk³ad nietoleruje 3,6V

U¿ytkownik "Jazzstar" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:f1aeis$j04$ snipped-for-privacy@nemesis.news.tpi.pl...

Hmmm...Tego nie testowa³em. U¿ywam ich z faradowym kondensatorem - kto by tam gmyra³ po latach w bateriach:-) Niby on jest przewidziany dla 3V baterii litowych Max dopuszczalne napiêcie baterii to 3,5V A¿ mi siê wierzyæ nie chce, ¿e 0,1V jest dla niego tak krytyczne, chocia¿ mo¿e ¶wiadomie Dallas wiedzia³ co pisze :-)

U¿ytkownik "lwh" snipped-for-privacy@vp.pl napisa³ w wiadomo¶ci news:f1alb1$k3j$ snipped-for-privacy@news.onet.pl...

Dok³adnie to wygl±da tak, akumlatorek jest 3,6V ale napiêcie na nim jest

4,1V. Wylutowa³em ten aku i podpi±³em potencjometr, przy napiêciu 3,8V jeszcze chodzi, 3,9 juz nie. Jako¶ wcze¶niej nieprzysz³o mi do g³owy sprawdziæ to napiêcie.

Pierwszy problem polega na tym, ¿e program piszesz ciurkiem, przez co nie widaæ co siê w nim dzieje:

[...]

Dim Adres As Byte Dim Adres2 As Byte

Lcd "Start poszukiwania" Adres2 = 0 Cls Lcd "Start" Cls For Adres = 0 To 254 Step 2 I2cstart I2cwbyte Adres I2cstop If Err = 0 Then Lcd "uklad pod: " ; Adres Adres2 = Adres Else Cls Lcd "Brak ukladu: " ; Adres End If Waitms 500 Next Adres Cls Lcd "uklad pod " ; Adres2 Waitms 500 Lowerline Lcd "Koniec" Cursor Off End

prawda, ¿e czytelniej?

U¿ytkownik "Jazzstar" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:f1amkv$sr4$ snipped-for-privacy@atlantis.news.tpi.pl...

Zgodnie z prawami Murphy'ego?: trywialny problem jest tam, gdzie siê go najmniej spodziewamy i poszukiwania zajm± mnóstwo czasu :-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required