Expander PCF8574, tryb wejsciowy

May 22, 2006 5 Replies

Witam wszystkich.



Podczepiłem sobie ten układzik pod AVR-ka i z zapisem nie ma żadnych problemów. Linie A0, A1, A2 do masy więc adresik układu do zapisu to 0x38 i stany portów ustawiam jak chcę. Jednak nic z tego układu nie moge odczytać, adres 0x39 dla odczytu i układ milczy. Czy trzeba jeszcze coś specjalnego zrobić żeby układzik odpowiedział??



Pozdrawiam.


AFAIR zeby cos odczytac z IIC trzeba najpierw zapisac adres.. nie pamietam jak w tym kokretnym przypadku..sprawdz w datasheet'cie

no i tak robie, najpierw wysyłam 0x39 potem odczytuje daną. chyba dobrze?

niech sprawdze u siebie.. mam podpieta 4 przyciskowa klawiature przez ten extender tak ustawiam FF na wyjsciu

get_key_init: ; sets high keyboard inputs call stop_check ; make sure the last operation is not in progress mov dptr,#I2CS ; set the START bit mov a,#80h ; b7=start bit movx @dptr,a

; mov dptr,#I2DAT ; first data byte is address+direc mov a,#4eh ; IO expander address, bit b0=0 means write movx @dptr,a

call wait_done ; wait for i2c transmit complete ; mov a,#0ffh mov dptr,#I2DAT ; write the data byte movx @dptr,a call wait_done ; mov dptr,#I2CS ; set the STOP bit mov a,#01000000b movx @dptr,a ret

a tak czytam:

get_key: ;returns in ACC keyboard state call stop_check ; make sure the last operation is not in progress mov dptr,#I2CS ; set the START bit mov a,#80h ; b7=start bit movx @dptr,a

; mov dptr,#I2DAT ; first data byte is address+direc mov a,#4fh ; IO expander address, bit b0=0 means write movx @dptr,a

call wait_done ; wait for i2c transmit complete ; mov dptr,#I2DAT ; write the data byte movx a,@dptr call wait_done

mov dptr,#I2CS ; set the START bit mov a,#00100000b ; b5=last read movx @dptr,a

mov dptr,#I2DAT ; write the data byte movx a,@dptr push acc ; mov dptr,#I2CS ; set the STOP bit mov a,#01000000b movx @dptr,a

pop acc ret

powinno teraz wszystko stac sie jasne soft testowany byl na CY7C68013, podczepialem mu pod USB modul wyswietlaczy i klawiatury wyciagneity z jakeijs szafy sterowniczej wlasnei w celu debuggowania

Look napisał(a):

Mi z datasheeta wychodzi 0x41 do odczytu, 0x40 do zapisu?

i zobacz czy nie masz czasem wersji "A", bo ta ma inne adresy.

Piotr [PKi] napisał(a):

A tak zapytam bo nie kojarzę czy sprawdzałeś:

Aby I/O były wejściami to musisz ustawić je w stan High, to wiesz? Masz problem z tym że przy odczycie magistrala milczy, czy z tym że to co odczytujesz nie odpowiada rzeczywistości?

Rogher

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required