[ djokule @ 26.12.2006. 16:31 ] @
Da li mi neko moze pomoci oko DS 1307 imam kod za komunikaciju I2C ali ne mogu da shvatim iz dadasheet-1 kako se pozivaju registri DS-a i kako mogu u njh da upisem svreme koje ja zelim? Unapred mnogo mnogo HVALA!!!
[ zofr @ 26.12.2006. 22:51 ] @
Vrlo prosto,
Mors znati adresu periferije na I2C, za DS1307 ona je binarno: 1101000.
Prvo saljes bajt koji ima adresu (7 bita) a iza nje: bit 0 ako zelis upis, odnosno bit 1 ako zelis citanje iz periferije.
Dakle prvi bajt je ili 11010000 ili 11010001. Posle slanja ovih 8 bita, periferija salje potvrdu uspesnosti kao log. 0,
ili neuspesnosti kao log. 1. Za ovo se dakle generisu 9 kloka na I2C magistrali.

Iza ovoga saljes 8 bita adrese registra periferije (i tad se vraca bit potvrde uspesnosti, kao i za svako slanje podataka
u bilo kom smeru), a zatim bajt namenjen upisu u tu adresu. Ako nastavis slanje bajtova oni ce biti upisivani
na svaku sledecu adresu. Ovo je najkrace za slucaj upisa u periferiju.

Za citanje treba poslati 11010000 pa adresu koju zelis da citas. Ovim ce adresni pointer u periferiji biti postavljen
na zeljenu adresu. Potom saljes novu sekvencu: 11010001 na sta ti periferija vraca podatak sa adrese svog pointera.
Sada ti saljes potvrdu ispravnosti, i ako posaljes 0 dobices bajt sa sledece adrese, sve dok kao potvrdu ispravnosti
ne posaljes 1.

Predpostavljam da znas kako se generise start i stop za svaku poruku na I2C magistrali.

Nadam se da sam pomogao.
Pozdrav.
[ blaza @ 26.12.2006. 23:06 ] @
Nadam se da ti je ovo jasno (pisem napamet):
citanje:
>START >D0 <ACK >00 <ACK >REPEATED START >D1 <ACK <SS >ACK <MM >ACK <HH >ACK <DAY >ACK <DD >ACK <mm >ACK <YY >NACK >STOP
upis:
>START >D0 <ACK >00 <ACK >SS <ACK >MM <ACK >HH <ACK >DAY <ACK >DD <ACK >mm <ACK <YY <ACK >STOP
[ djokule @ 28.12.2006. 14:30 ] @
Hvala mislim da sam nesto shvatio iz ovih odgovora. Probacu pa cu videti. Hvala vam!!