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
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
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
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.
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.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 23 gości