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

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa
Adresowanie urządzeń I2C

Postautor: Grysek » 22 kwie 2008, o 13:19

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...

krzych51
-
-
Posty:7
Rejestracja:23 lis 2006, o 17:59
Lokalizacja:Puławy

Re: Adresowanie urządzeń I2C

Postautor: krzych51 » 22 kwie 2008, o 13:48

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??
Dokładnie, podając kombinacje zer i jedynek na te piny ustalasz adres.
Pozdrawiam Krzych

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 22 kwie 2008, o 13:55

No własnie tyle to ja wiem a problem tkwi w tym skąd wiadomo jaki adres jest wtedy?? Jak mam to sprawdzic??

pozdrowienia

[ Dodano: 22-04-2008, 18:02 ]
Problem w tym że obydwie pamięci mają ten sam adres cały czas czy ktoś wie jak się je adresuje żeby każda miała inny??

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 22 kwie 2008, o 17:16

Z datasheeta (dokumentacji) :619:
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"

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 22 kwie 2008, o 17:44

To samo sie tyczy AT24C08?? gdybym chcial podpiąć C16 i C08 to da rade??

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 22 kwie 2008, o 17:58

To samo sie tyczy AT24C08?? gdybym chcial podpiąć C16 i C08 to da rade??
2 szt c08 tak... A2 adresuje kosc, A1-A0 strony w pamieci danej kosci.

Polaczyc C16 i C08 juz sie nie da, chyba ze jak wspomnialem... sterujac tym zewnetrznie/na osobnych i2c.

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 22 kwie 2008, o 18:44

A mozna zainicjować dwie magistrale i2c niezaleznie w jednym procku?? Bo coś mi się zdaje że nie

Awatar użytkownika
piotr_go
-
-
Posty:159
Rejestracja:27 sie 2004, o 12:18
Lokalizacja:far far away

Postautor: piotr_go » 23 kwie 2008, o 11:29

możesz mieć tyle magistral i2c na ile ci starczy pinów

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 23 kwie 2008, o 11:46

To mógłbyś mi podać jakis przykład takowego programu?? Byłbym wdzięczny (8051)

Awatar użytkownika
piotr_go
-
-
Posty:159
Rejestracja:27 sie 2004, o 12:18
Lokalizacja:far far away

Postautor: piotr_go » 23 kwie 2008, o 15:06

przykładu nie mam bo szczerze mówiąc nigdy czegoś takiego nie potrzebowałem, ale może ktoś inny ma

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 23 kwie 2008, o 19:50

To jak w takim razie sie wybiera z której magistrali chce się korzystać??

Awatar użytkownika
piotr_go
-
-
Posty:159
Rejestracja:27 sie 2004, o 12:18
Lokalizacja:far far away

Postautor: piotr_go » 23 kwie 2008, o 21:11

to już kwestia programu, możesz zrobić oddzielne procedury dla każdej magistrali albo możesz w jednej wybierać z których IO chcesz korzystać

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 23 kwie 2008, o 21:58

To co proponuje Piotrek, to oczywiscie I2C wersja soft (programowa).
Zarowno w pierwszym, jak i kazdym kolejnym interfejsie trzeba okreslic na ktorych pinach on dziala. Przelaczenie tego to juz kwestia szczegolow.

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 25 kwie 2008, o 07:30

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

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
Czy to o to chodzi??

Awatar użytkownika
piotr_go
-
-
Posty:159
Rejestracja:27 sie 2004, o 12:18
Lokalizacja:far far away

Postautor: piotr_go » 25 kwie 2008, o 09:14

jeżeli bascom na to pozwala to tak
tylko pamiętaj żeby na początku programu ustawić odpowiednie poziomy na każdym pinie

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 26 kwie 2008, o 12:21

jeżeli bascom na to pozwala to tak
tylko pamiętaj żeby na początku programu ustawić odpowiednie poziomy na każdym pinie
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.
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.

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 28 kwie 2008, o 19:59

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
No BASCOM pozwala uzyć kilka razy w programie polecenia Config SDA i SCL lecz niestety takowy program nie działa w praktyce :/

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 :629:

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 28 kwie 2008, o 20:38

Nie działało to ponieważ powinieneś użyć tranzystorów małosygnałowych n-MOS a nie bipolarnych NPN.

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 29 kwie 2008, o 23:03

zastosuj switche 4052-4054

Awatar użytkownika
Grysek
-
-
Posty:18
Rejestracja:14 kwie 2008, o 13:43
Lokalizacja:Limanowa

Postautor: Grysek » 30 kwie 2008, o 06:17

Tak chyba zrobie... A które jeszcze pamięci z rodziny 24C... są takie jak 24C16 tzn. które jeszcze mogą pracować pojedynczo??

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości