I2C
Masz problem? Zapytaj na forum elektroda.pl
From: "Marek" <mokrent_at_nospam_poczta.onet.pl>
Subject: I2C
Date: Sun, 11 Mar 2001 11:23:06 +0100
Witam wszystkich grupowiczów. Wiem że pytania są banalne dla większości z
Was ale proszę o szczegółowe wyjaśnienie.
Fragment programu clock.bas
odczyt
I2cstart
I2cwbyte &HA0 'Podany adres do zapisu. W jakim celu (mamy odczytywać)
?
I2cwbyte 2 'Dlaczego po adresie do zapisu podany jest ten
rejestr ?
I2cstart 'Instrukcja I2cstart występuje drugi raz.
Dlaczego ? Czemu nie zakończono pierwszą instrukcję "start" "stopem" ?
I2cwbyte &HA1 'Czy godzina i data znajdują się w tym samym miejscu
RTC że są wymienione jedna po drugiej?
I2crbyte S , Ack
I2crbyte M , Ack
I2crbyte H , Ack
I2crbyte Yd , Ack
I2crbyte Wm , Nack
I2cstop
zapis
I2cstart
I2cwbyte &HA0
I2cwbyte 0 'Dlaczego po adresie do zapisu podany jest ten
rejestr ?
I2cwbyte 8 'Dlaczego nie ma tej instrukcji podczas odczytu
danych ?
I2cstop
I2cstart
I2cwbyte &HA0 'Dlaczego powtarza się drugi raz adres zapisu jeśli na
początku go oznaczono. Jakie miało znaczenie użycie adresu za pierwszym
razem a jakie w tym miejscu?
I2cwbyte 2 'Dlaczego po adresie do zapisu podany jest ten
rejestr ?
I2cwbyte S
I2cwbyte M
I2cwbyte H
I2cwbyte D
I2cwbyte Month
I2cstop
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: I2C
Date: Sun, 11 Mar 2001 12:37:44 +0100
Marek napisał(a) w wiadomości: <98fjf1$j84$1_at_nospam_news.tpi.pl>...
nie wiem ktorego to dokladnie scalaka dotyczy ale pewnie
jakiegos PCF 8573 czy cos takiego
I2cstart
I2cwbyte &HA0 'Podany adres do zapisu. W jakim celu (mamy
odczytywać)
?
no tak ale najpierw musimy zapisac numer rejestru, ktory chcemy odczytywac
I2cwbyte 2 'Dlaczego po adresie do zapisu podany jest ten
rejestr ?
tego nie wiem
podaj na jakim to jest scalaku
zeby wiedziec do czego dany rejestr sluzy
sciagnij sobie dokumentacje do scalaka
I2cstart 'Instrukcja I2cstart występuje drugi raz.
Dlaczego ? Czemu nie zakończono pierwszą instrukcję "start" "stopem" ?
bo tak zwykle jest w protokole i2c,
stop wystepuje dopiero na koncu transmisji
zwykle jest tak (dla odczytu):
START,
wpis_adresu_urzadzenia(najmlodzy bit=write)
wpis_numeru_jakiegos_rejestru,
START
wpis_adresu_urzadzenia(najmlodszy_bit=read)
odczyt_wartosci_z_tego_rejestru
tu_moze_byc_odczyt_kolejnego_rejestru (n+1)
...
STOP
I2cwbyte &HA1 'Czy godzina i data znajdują się w tym samym miejscu
RTC że są wymienione jedna po drugiej?
I2crbyte S , Ack
I2crbyte M , Ack
I2crbyte H , Ack
I2crbyte Yd , Ack
I2crbyte Wm , Nack
I2cstop
raczej nie znajduja sie w tym samym miejscu
tylko w kolejnych rejestrach,
takie sekwencyjne odczyty powoduje, ze zwieksza
sie wewnetrzny numer rejestru
i w efekcie przy kazdym odczycie dostajesz zawartosc
kolejnej komorki (rejestru)
...
Andrzej