problem z komunikacją z układem DS1307

Witam, próbuję się skomunikować z tym układem, tylko nie bardzo potrafię zinterpretować pdf-a. Chodzi o to, jak te dane są przesyłane - dobrze rozumiem ze jak wysyłamy dane, to transmisja wyglada tak, ze mamy start, potem bajt adresu (0xD0) a potem idą bajty które są zapisywane w kolejnych komorkach w pamieci układu (00,01,02...) tak długo dopóki master nie skonczy transmisji? a w drugą stronę to wyglada tak ze master wysyła start i adres (0xD1) a potem zczytuje po kolei bajty z pamieci w kolejnosci 00,01 itd, tak długo dopoki slawe nie przerwie transmisji (mo własnie kiedy, po wysłaniu bajtu 07 ? czy tez działa to jakos inaczej?

Reply to
nuclear
Loading thread data ...

nuclear napisał(a):

Tu jest błąd. Pierwszy bajt po zaadresowaniu układu to adres komórki, do której zapisujesz. Pamiętaj, że aby uruchomić licznik musisz ustawić bit 7 w komórce 0x00 (maska 0x80).

tak długo dopóki master nie skonczy

Pozdrawiam Przemysław Podwapiński

Reply to
Kret

Użytkownik "Kret" snipped-for-privacy@poczta.fm napisał w wiadomości news:erq8e3$4lq$ snipped-for-privacy@atlantis.news.tpi.pl...

czyli to ma wygladać tak:

start bajt abresu ukladu (D0) bajt adresu komorki (00) bajt danych komorki 00 bajt danych komorki 01 . . . bajt danych komorki 07 stop

?

a w odczycie tez jest adres?

czyli

start bajt adresu układu (D1) bajt adresu komorki (00) odczyt bajtu z komorki 00 odczyt bajtu z komorki 01 . . . bajt odczytu z komorki 07 stop

? czy też to samo tylko bez adresu komorki?

a moze coś takiego?

start bajt adresu układu (D0) bajt adresu komorki (00) stop start bajt adresu układu (D1) odczyt bajtu z komorki 00 odczyt bajtu z komorki 01 . . . bajt odczytu z komorki 07 stop

bo zaczynam sie w tym gubić...

Reply to
nuclear

nuclear napisał(a):

Co do zapisu do DS'a to rozumujesz poprawnie. Przy odczycie nie wysylasz juz adresu komorki. Zaczynasz odczytywac w miescu, gdzie ostatnio zapisywales. Jesli chcesz okreslic inny rejestr (tj. sytuacja gdy np. skonczyles zapis na 8 komorce, a chcesz odczytac 2-ga), to musisz zrobic tzw. 'fake write' - ustawienie wskaznika komorki, czyli sekwencja polecen jak w ostatnim przykladzie, ktory podales. Pierwszy stop nie jest konieczny, wiec moze to wygladac tak:

start bajt adresu układu (D0) bajt adresu komorki (00)

start bajt adresu układu (D1) odczyt bajtu z komorki 00 odczyt bajtu z komorki 01 . . . bajt odczytu z komorki 07 stop

Reply to
Kret

dobra, wydaje mi sie ze zrozumialem, zapis to faktycznie start,adres układu(D0),adres pierwszej komorki(00),dane pierwszej komorki,dane drugiej komorki....i tak dopoki master nie powie stop. ale z odczytem mam problem, wydaje mi sie ze powinno być start,(D0),(00),start,(D1), odczyt komorki 00, odczyt komorki 01 itd a u mnie dziala jedynie kombinacja start,(D0),(nr komorki odczytywanej),start,dane komorki odczytywanej,stop i dla kazdej z komorek z osobna musze inicjować komunikacje...całośc dziala bez zarzuru, ale wydaje mi sie ze mozna by to zrobić prosciej...

Reply to
nuclear

nuclear napisał(a):

Są jakieś problemy z serwerem news.tpi, więc wysłam jeszcze raz:

Co do zapisu do DS'a to rozumujesz poprawnie. Przy odczycie nie wysylasz juz adresu komorki. Zaczynasz odczytywac w miescu, gdzie ostatnio zapisywales. Jesli chcesz okreslic inny rejestr (tj. sytuacja gdy np. skonczyles zapis na 8 komorce, a chcesz odczytac 2-ga), to musisz zrobic tzw. 'fake write' - ustawienie wskaznika komorki, czyli sekwencja polecen jak w ostatnim przykladzie, ktory podales. Pierwszy stop nie jest konieczny, wiec moze to wygladac tak:

start bajt adresu układu (D0) bajt adresu komorki (00)

start bajt adresu układu (D1) odczyt bajtu z komorki 00 odczyt bajtu z komorki 01 . . . bajt odczytu z komorki 07 stop

Podczas odczytu jest możliwość pobrania więcej jak jednego bajtu. W Twoim poście zasygnalizowałeś problem z odczytem większej ilości komórek

- sprawdź swoje procedury na generowanie ACK i NACK.

Reply to
Kret

to juz zauwazyłem - bez bateri w ogole mi nie odpowiadał...

Reply to
nuclear

dzieki, pomogło, faktycznie był bład w procedurze odczytu, i zawsze generował nack.... teraz jest dobrze, odbiera tyle bajtów ile chcę ;)

Reply to
nuclear

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.