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.
Didn't find your answer? Ask the community — no account required.
G
Greg(G.Kasprowicz
AFAIR zeby cos odczytac z IIC trzeba najpierw zapisac adres.. nie pamietam jak w tym kokretnym przypadku..sprawdz w datasheet'cie
L
Look
no i tak robie, najpierw wysyłam 0x39 potem odczytuje daną. chyba dobrze?
G
Greg(G.Kasprowicz
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
P
Piotr [PKi
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.
R
Rogher
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
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.