PCF8574 - kierunek I/O poszczególnych portów

Witajcie,

jak wysterować po I2C ten scalak, żeby części portów działała jako wyjście, a część jako wejście? Chodzi o to, że jak przy adresowaniu układu ustawię

8 bit na zapis do układu i w kolejnym bajcie podam maskę stanów, to poustawiam określone w masce stany na wszystkich 8 portach, które wszystkie staną się wyjściowymi. A jeśli potem przy adresowaniu podam 8 bit na odczyt z układu, to wszystkie porty staną się wejściowe? Jeśli tak, to porty przestaną wystawiać ustawione wcześniej stany wyjściowe i np. jakiś port nie będzie zasilał choćby kontrolnego LED-a. A co w sytuacji, gdy najpierw zaadresuję układ do odczytu stanów portów, a do jednego z portów (jako wejścia) podłączę jakieś źródło napięcia (np. dla kontroli stanu zasilania układu), a potem zapisem do układu będę chciał ustawić jakieś stany na portach (które przełączą się na wyjście), to jeśli na powyższym porcie kontrolującym zasilanie ustawię stan niski, to zrobię zwarcie źródła zasilania.

Dla porównania, PCA9555 ma rejestry 6 i 7, w których można ustawić kierunki określonych portów i potem czytać (rejestry 0 i 1) lub ustawiać (rejestry 2 i 3) stany określonych portów.

Reply to
Marek
Loading thread data ...

Przeczytaj sobie datasheeta. Jak chcesz miec wejscie to zapisujesz do odpowiedniego bitu 1. Wtedy masz slabe podciaganie do zasilania i to co steruje linia powinno wygrac. Odczyt po prostu odczytuje to co jest na liniach, niezaleznie od tego so uklad probuje wyslac. Przy tym nic nie "staje sie wyjsciem", po prostu byfor wyjsciowy przy zmianie stanu _w rejesterze wyjsciowym_ daje wiekszy prad a przy ustalonym stanie w rejesterze wyjsciowym prad jest bardzo maly.

Reply to
antispam

Masz dwa możliwe stany.

0 -- mocna masa, pin w rezultacie jest wyjściem ustawionym na 0 1 -- słaby plus, pin jest podciągnięty słabym rezystorem do plusa

Jeśli ustawisz 1 i wykorzystasz pin jako wyjście, to ten słaby plus będziesz mógł sobie wzmocnić (np. wysterować nim tranzystor).

Jeśli ustawisz 1 i wykorzystasz pin jako wejście, to w przypadku niepodłączenia wejścia (lub podłączenia do plusa) odczytasz 1, a w przypadku podłączenia do masy odczytasz 0.

Musisz pamiętać, że ten układ wystawia albo mocne zero (czyli możesz np. zasilić LED z anodą podłączoną przez rezystor do plusa), albo słabą jedynkę, która łatwo jest pokonywana przez podłączony do niego stan. Nie wystawisz mocnej jedynki (żeby móc np. zasilić LED od strony anody, gdzie katoda będzie podłączona do masy).

Teoretycznie tak. W praktyce nie ma tam tak silnego źródła, żebyś zrobił zwarcie. Po prostu będzie większy pobór prądu.

Reply to
Adam Wysocki

W dniu 2018-03-29 o 16:51, Marek pisze:

Dzięki Koledzy za łopatologiczne wyjaśnienie.

Reply to
Marek

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.