Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięAdresowanie urządzeń I2C
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam
Mam pytanko: Jak sie adresuje urządzenia I2C?? w sensie skad wiadomo jaki jest adres po podłączeniu pinów A0,A1 i A2 do plusa?? Mam do wykonania projekt posiadający dwie jednakowe pamięci EEPROM AT24C16 i nie wiem jak ustawić adresy żeby procesor zapisywał albo do jednej albo drugiej...
Mam pytanko: Jak sie adresuje urządzenia I2C?? w sensie skad wiadomo jaki jest adres po podłączeniu pinów A0,A1 i A2 do plusa?? Mam do wykonania projekt posiadający dwie jednakowe pamięci EEPROM AT24C16 i nie wiem jak ustawić adresy żeby procesor zapisywał albo do jednej albo drugiej...
Re: Adresowanie urządzeń I2C
Dokładnie, podając kombinacje zer i jedynek na te piny ustalasz adres.Witam
Mam pytanko: Jak sie adresuje urządzenia I2C?? w sensie skad wiadomo jaki jest adres po podłączeniu pinów A0,A1 i A2 do plusa??
Pozdrawiam Krzych
Z datasheeta (dokumentacji)
Adres bazowy oraz mozliwe do osiagniecia przez ustawienia pinow adresowych, zawsze sa opisane w dokumentacji.
A i jesli chcesz aby obie mialy rozne adresy (bo nie do konca moze rozumiesz adresowanie i2c) to oczywiscie musisz w obu kosciach piny adresowe (A0-A2) jak piszesz... podlaczyc inaczej (plus albo masa) tak by ustalic pamieciom rozne (unikalne) adresy.
Co sie zas tyczy AT24C16, to gdyby zajrzec do dokumentacji Atmela, to widzimy ze w tej kosci (16K) nie podlacza sie pinow A2-A0 (pozostawia niepodlaczone), zas odpowiednie bity adresu sluza do adresowania stron pamieci... stad wniosek ze nie mozna podlaczyc 2 niezaleznych pamieci tego typu... chyba ze dodatkowo sprzetowo sterowac ich wyborem - czy to przez switche cyfowe czy wlaczajac/wylaczajac odpowiednia kosc, czy tez uzywajac niezaleznych magistral i2c.
Wszystko jest ladnie opisane na str 10-11 (w mojej wersji) dokumentacji. Rozdzial "Device Adressing"
Adres bazowy oraz mozliwe do osiagniecia przez ustawienia pinow adresowych, zawsze sa opisane w dokumentacji.
A i jesli chcesz aby obie mialy rozne adresy (bo nie do konca moze rozumiesz adresowanie i2c) to oczywiscie musisz w obu kosciach piny adresowe (A0-A2) jak piszesz... podlaczyc inaczej (plus albo masa) tak by ustalic pamieciom rozne (unikalne) adresy.
Co sie zas tyczy AT24C16, to gdyby zajrzec do dokumentacji Atmela, to widzimy ze w tej kosci (16K) nie podlacza sie pinow A2-A0 (pozostawia niepodlaczone), zas odpowiednie bity adresu sluza do adresowania stron pamieci... stad wniosek ze nie mozna podlaczyc 2 niezaleznych pamieci tego typu... chyba ze dodatkowo sprzetowo sterowac ich wyborem - czy to przez switche cyfowe czy wlaczajac/wylaczajac odpowiednia kosc, czy tez uzywajac niezaleznych magistral i2c.
Wszystko jest ladnie opisane na str 10-11 (w mojej wersji) dokumentacji. Rozdzial "Device Adressing"
Aha czyli za każdym razem gdy będę chciał wysłać dane do którejś pamięci lub z niej odczytać to musze konfigurować SDA i SCL np:
przykład podprogramu
Czy to o to chodzi??
przykład podprogramu
Kod: Zaznacz cały
Zapis_eeprom1:
Config Sda = P1.1
Config Scl = P1.2
I2cstart
I2cwbyte 164
I2cwbyte 1
I2cwbyte Dane
I2cstop
Return
Odczyt_eeprom2:
Config Sda = P3.1
Config Scl = P3.2
I2cstart
I2cwbyte 163
I2cwbyte 1
I2cstart
I2crbyte Dane1 , Nack
I2cstop
Return
Niby pozwala, ale w pomocy pisze wyraźnie, że polecenia CONFIG SDA/SCL można użyć tylko raz. Zatem tylko ostatni CONFIG SCL/SDA będzie tym właściwym.jeżeli bascom na to pozwala to tak
tylko pamiętaj żeby na początku programu ustawić odpowiednie poziomy na każdym pinie
Polecenia te zastępują wartości, które określa się w opcjach kompilatora dla danego programu.
Zatem jeśli sam sobie nie napiszesz obsługi I2C z dynamicznym przypisywaniem to nici z kilku magistral. Chyba, że spróbujesz dodać sterowane multipleksery CMOS na SDA i SCL, przełączając "ręcznie" dwie czy cztery gałęzie z układami.
No BASCOM pozwala uzyć kilka razy w programie polecenia Config SDA i SCL lecz niestety takowy program nie działa w praktyceNiby pozwala, ale w pomocy pisze wyraźnie, że polecenia CONFIG SDA/SCL można użyć tylko raz. Zatem tylko ostatni CONFIG SCL/SDA będzie tym właściwym
próbowalem tez utworzyc jedna magistrale i wybierać tą pamięć do której chcę zapisać/odczytać za pomoca tranzystorów typu NPN podłaczonych emiterem do masy a kolektorem do masy układu, oczywiście na bazie rezysotr - ten pomysł także nie wypalił
mam taki pomysł aby pamięć wybierać przez odłączanie zasilania dodatniego poprzez inwertery CMOS ale to chyba tez nie wypali...
Czy może ma ktoś jeszcze jakis pomysł?? oczywiście bez przekaźnikow
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 62 gości