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

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:
I2c 24c04 problem

Postautor: slawcio » 9 sie 2004, o 07:25

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ź

Awatar użytkownika
almatea
-
-
Posty:240
Rejestracja:12 gru 2003, o 17:02
Lokalizacja:Brzeszcze
Kontaktowanie:

Postautor: almatea » 9 sie 2004, o 17:00

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

Awatar użytkownika
almatea
-
-
Posty:240
Rejestracja:12 gru 2003, o 17:02
Lokalizacja:Brzeszcze
Kontaktowanie:

Postautor: almatea » 9 sie 2004, o 17:11

Zapomniałem - nie zapomnij oczywiście skonfigurować portów magistrali (SDA, SCL); Masz to w swoim programie który podałeś.

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Postautor: slawcio » 10 sie 2004, o 13:57

Dzięki za odpowiedź

Twoja procedurka jest ok. I z tego co widzę adresy na jakich odpyujesz to 160 i 161. Ja podawłem inne adresy i w tym był błąd. Ale jak sprawdziłem adresy (opis w innym poście) to mi wszystko zaczęło działać.

Pozdrawiam
i dzięki

rdt
-
-
Posty:87
Rejestracja:20 sie 2003, o 18:03
Lokalizacja:100km od Wawy

Postautor: rdt » 19 kwie 2005, o 23:18

a ja mam jedno male pytanko na plytce testowej ktora wynmieniles jest zworka sluzaca do wybierania pomiedzy avr-ami a 51
czy to ma jakis zwiazek ze sposobem resetu procka ???

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Zworka

Postautor: slawcio » 14 wrz 2005, o 22:28

Tak

Ta zworka służy do zmiany resetu procesora.

Pozdrawiam

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