Witam
Mam taki problem polegający na tym że niżej przedstawiony kod porgramu na układ 90s2313 nie działa. Program ten powinien zapisać 3 w pamięci 24c04 a następnie ją odczytać. Oczywiście kod ten kompiluje się bez żadnych problemów. Przykład tej jest prosty i powienien działać a tym czasem wyświetla mi odczytywaną daną jako 0 a czasem jako 255. Nie wiem w czym może tkwić problem. Wszystko to testuję na płytce AVT2500 z tą tylko różnicą że zamiast 51 uzyłem 2313 i połączenie pomiędzy układem a pamięcią jest już poprowadzone gotowymi żeciezkami.
'zapis
Dim A As Byte , B As Byte
Const Adresw = 174 'adres do zapisu układu 2404
Const Adresr = 175 'adres do odczytu układu 2404
Config Scl = Portb.7
Config Sda = Portb.6
Config I2cdelay = 100
Cls
Lcd "Trwa zapis:"
Wait 1
Cls
Print "witam"
Wait 1
I2cstart 'warunek startu
I2cwbyte Adresw 'wyślij adres układu
I2cwbyte 1 'wyślij adres w pamięci EEPROM
I2cwbyte 3 'wyślij daną
I2cstop 'warunek stopu
Waitms 10
Cls
Lcd "zapisano 3:"
Lcd A
Wait 2
Cls
Lcd "Trwa odczyt"
Wait 2
I2cstart 'warunek startu
I2cwbyte Adresw 'zaadresujemy urządzenie
I2cwbyte 1 'wyślij adres komórki EEPROM
I2cstart 'znów generujemy warunek startu
I2cwbyte Adresr 'adresujemy układ EEPROM do odczytu
I2crbyte 1 'odczytujemy komórkę pamięci.
I2crbyte A
'Nack oznacza że nie będzie następnego odczytu
I2cstop 'warunek stopu
Cls
Lcd "zmienna:"
Lcd A ; ":" ; B 'wyświetlamy zawartość komórki
Wait 2
Pozdrawiam
I proszę o podpowiedź
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 24c04 problem
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Sprawdź i odpisz czy działa. Powinno, bo sam przetestowałem i działa poprawnie. Adresy zmieniac możesz sobie wg uznania (oczywiście nie poza obszarem dostępnej pamięci), a wartosci z przedziału 0-255
Obsługę LCD dopisz sobie sam.
Dim adres As Byte
Dim wartosc As Byte
adres=1
wartosc=3
call zapis_eeprom
wait 1
adres=1
call odczyt_eeprom
lcd "Odczyt: "; wartosc
End
' Procedura odczytu z pamięci EEPROM
Sub Odczyt_eeprom
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cstart
I2cwbyte 161
I2crbyte Wartosc , Nack
I2cstop
End Sub
' Procedura zapisu w pamięci EEPROM
Sub Zapis_eeprom
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cwbyte Wartosc
I2cstop
Waitms 10
End Sub
Obsługę LCD dopisz sobie sam.
Dim adres As Byte
Dim wartosc As Byte
adres=1
wartosc=3
call zapis_eeprom
wait 1
adres=1
call odczyt_eeprom
lcd "Odczyt: "; wartosc
End
' Procedura odczytu z pamięci EEPROM
Sub Odczyt_eeprom
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cstart
I2cwbyte 161
I2crbyte Wartosc , Nack
I2cstop
End Sub
' Procedura zapisu w pamięci EEPROM
Sub Zapis_eeprom
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cwbyte Wartosc
I2cstop
Waitms 10
End Sub
Zworka
Tak
Ta zworka służy do zmiany resetu procesora.
Pozdrawiam
Ta zworka służy do zmiany resetu procesora.
Pozdrawiam
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 28 gości