$regfile = "m8def.dat" $crystal = 16000000 $lib "mcsbyte.lbx" $lib "ds1307clock.lib" Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls Cursor Off Config Sda = Portb.1 Config Scl = Portb.2 Const Ds1307w = &HD0 Const Ds1307r = &HD1 Config Pind.1 = Input Config Pind.2 = Input Config Pind.3 = Input Dim Sekundy As Byte Dim Minuty As Byte Dim Godziny As Byte Dim A As Byte Config Debounce = 30 '--------------------------------------------------- Locate 1 , 5 Lcd "Zegar z" Locate 2 , 3 Lcd "termometrem" Waitms 2000 For A = 1 To 20 Shiftlcd Left Waitms 400 Next Cls '--------------------------------------------------- Main: Do Gosub Ds1307 Gosub Ustawienia Gosub Wyswietl Loop '--------------------------------------------------- Ds1307: I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cstart I2cwbyte Ds1307r I2crbyte Sekundy , Ack I2crbyte Minuty , Ack I2crbyte Godziny , Nack I2cstop Sekundy = Makedec(sekundy) Minuty = Makedec(minuty) Godziny = Makedec(godziny) If Sekundy > 59 Then Sekundy = 0 If Minuty > 59 Then Minuty = 0 If Godziny > 23 Then Godziny = 0 Gosub Sekundy Return '---------------------------------------------------- Ustawienia: Debounce Pind.1 , 0 , Sekundy , Sub Debounce Pind.2 , 0 , Minuty , Sub Debounce Pind.3 , 0 , Godziny , Sub Return '---------------------------------------------------- Sekundy: Incr Sekundy If Sekundy > 59 Then Sekundy = 0 Sekundy = Makebcd(sekundy) I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cwbyte Sekundy I2cstop Return '---------------------------------------------------- Minuty: Incr Minuty If Minuty > 59 Then Minuty = 0 Minuty = Makebcd(minuty) I2cstart I2cwbyte Ds1307w I2cwbyte 1 I2cwbyte Minuty I2cstop Return '----------------------------------------------------- Godziny: Incr Godziny If Godziny > 23 Then Godziny = 0 Godziny = Makebcd(godziny) I2cstart I2cwbyte Ds1307w I2cwbyte 1 I2cwbyte Godziny I2cstop Return '---------------------------------------------------- Wyswietl: Locate 1 , 2 Lcd "Czas: " ; If Godziny < 10 Then Lcd "0" ; Godziny ; ":"; Else Lcd Godziny ; ":"; End If If Minuty < 10 Then Lcd "0" ; Minuty ; ":"; Else Lcd Minuty ; ":"; End If If Sekundy < 10 Then Lcd "0" ; Sekundy Else Lcd Sekundy End If Return Witam. Znalazłem na necie kod do obsługi DS1307, trochę go zmodyfikowałem, ale niestety ani ten pierwotny(http://www.avrprojects.info/avr-projects/ds1307-based-clock/) ani ten mój nie chcą działać. W tym moim na LCD pokaże się tylko Czas: 00:00:01 i nic dalej nie rusza. Nie wiem czy to jest jakiś błąd w programie czy coś źle połączyłem. Korzystałem ze schematu dostępnego pod tym samym linkiem co pierwotny kod. Tylko dodatkowo mam do atmegi podłączony kwarc 16Mhz nie wiem czy to coś przeszkadza czy nie. Przy ds mam kwarc 32768. Ktoś wie dlaczego ten zegar nie chce ruszyć?
|
|||
Re: DS1307
A rezystory podciągające na magistrali masz podłaczone?
poza tym za szybko to czytasz.... wstaw w pętlę główną waitms 500 albo coś podobnego
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Wszystko mam podłączone
Wszystko mam podłączone zgodnie ze schematem dostępnym tutaj: http://www.avrprojects.info/avr-projects/ds1307-based-clock/
Wstawiłem te opóźnienie ale nic nie pomaga. Wydaje mi się, że albo jest jeszcze jakiś błąd w programie, albo jest coś nie tak z DS1307. Czytałem coś na innym forum, że aby ruszył trzeba do niego podłączyć baterię, bo na samym "głównym" zasilaniu nie chce działać. Jutro jak dam radę to wybiorę się do elektronicznego, kupię tą baterię, podłączę i zobaczę co się będzie działo. A może masz jakiś kod do obsługi DS1307 ale taki działający na 100%, bo jak dotąd wszystkie jakie brałem z neta nie działały, z resztą inni też pisali że mieli z nimi jakieś problemy.
Z góry dzięki za pomoc
Re: DS1307
Na razie podłącz tą baterię... potem zobaczy się co z tym zrobić. Niestety nie mam kodu do ds1307 bo używam przeważnie PCF'a
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.