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ę

I2C nie dziala

azuri
-
-
Posty:54
Rejestracja:8 sty 2005, o 12:40
Lokalizacja:rybnik
I2C nie dziala

Postautor: azuri » 25 sty 2005, o 16:39

WITAM
ostatnio napisalem krutki programik testujacy pamiec AT24C04
i przy odbieraniu zawsze wychodzi 255 DLACZEGO??
a oto ten program ps to byl procek "4051 na kwarcu 11,059

Dim A As Byte
Dim S As Byte


S = 0
A = 19

I2cstart
I2cwbyte 162
I2cwbyte A
I2cstop
Cls
Lcd "wyslano: 19"
Wait 5
I2cstart
I2cwbyte 160
I2crbyte S , Nack
I2cstop
Cls
Lcd "odebrano: " ; S
End

[ Dodano: 25-01-2005, 15:41 ]
poprawka teraz wyskakuje raz 127 a raz 255

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 25 sty 2005, o 17:46

Jeśli adres bazowy ukladu to 160 to wpisu dokonujesz pod adresem 161, a nie 162
A poza tym przy odczycie:
i2cstart
i2cwbyte 160
i2cwbyte adres_komórki_do_odczytania
i2cstart
i2crbyte zmienna_do_której_wczytujesz
i2cstop

azuri
-
-
Posty:54
Rejestracja:8 sty 2005, o 12:40
Lokalizacja:rybnik

Postautor: azuri » 25 sty 2005, o 18:28

niestety to tez ne dziala :(

JanWi
-
-
Posty:50
Rejestracja:7 maja 2003, o 15:44

Postautor: JanWi » 25 sty 2005, o 19:54

Pewnie, że nie działa, bo :
1. Sprawdź poprawność połączenia pinów SDA i SCL.
2. Sprawdź, czy nie kożystasz z wejść komparatora, jeśli tak, to musisz piny podciągnąć do VCC.
3. Oprócz adresowania samej pamięci (adrs bazowy) musisz podać adres komórki do zapisu, a potem dane. Przykład zapisu:

I2cstart
I2cwbyte adres_bazowy_pamięci_dla_zapisu
I2cwbyte adres_komorki_pamieci
I2cwbyte dane_do_zapisu
I2cstop
Waitms 10 ;czas wymagany do zapisu

4. Przy odczycie sprawa ma sie podobnie. Oprócz adresu bazowego, należy jeszcze podać adres komórki, z której chcesz odczytać dane. Przykład :

I2cstart
I2cwbyte adres_bazowy_pamięci_dla_zapisu
I2cwbyte adres_komorki_pamieci
I2cstart
I2cwbyte adres_bazowy_pamięci_dla_odczytu
I2crbyte dane_do_odczytania , Nack
I2cstop

5. Zatem powinno być tak :

Dim adres as byte
Dim dane as byte

dane = 32 'dane do zapisu
adres = 0 'adres komorki do zapisu

I2cwbyte 160 'pod warunkiem takiego wybranego adresu ukladu
I2cwbyte adres
I2cwbyte dane
I2cstop
Waitms 10

Lcd "Dane wysl: ";dane

I2cstart
I2cwbyte 160
I2cwbyte adres
I2cstart
I2cwbyte 161
I2crbyte dane, Nack
I2cstop

Lcd "Dane odebr: ";dane

Do
Loop
End

6. Życzę powodzenia.

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 15 gości