xaveri
Guest
Thu Oct 05, 2006 8:29 pm
Potrzebny przykład procedury zapisującej lub odczytującej w Bascom 8051
umożliwiającej
sekwencyjny odczyt lub zapis wszystkich 131071 bajtów tej pamięci.
Datasheet -
http://ww1.microchip.com/downloads/en/DeviceDoc/21941B.pdf#search=%22%20%2224fc1025%22%20filetype%3Apdf%22
Muszę dzisiaj skończyć projekt, a nie wiem jak dostać się do tej kości.
Procedura musi umożliwiac podanie adresu dziesiętnie - zmienna integer,
rozbicie integera
na bit P,bit H i bit L, oraz zaadresowanie komórki pamięci...
Miller Artur
Guest
Thu Oct 05, 2006 8:45 pm
Użytkownik "xaveri" <xaveri@poczta.fm> napisał w wiadomości
news:eg3puq$ti4$1@node4.news.atman.pl...
Quote:
znaczy potrzebujesz gotowca bez koniecznosci zrozumienia o co w nim chodzi ?
bo napisac wlasne procedury obslugi tej kostki majac gotowa obsluge i2c (a
taka chyba w bascomie jest) to naprawde jest 15 minut - na stronach 9 i 12
podanego dokumentu masz opisane co i kiedy trzeba wyslac albo przeczytac.
aha, nie udalo mi sie uruchomic funkcjonalnosci "acknowledge polling" w
moich kostkach ... moze jakis bug albo cos przegapiłem.
@
xaveri
Guest
Thu Oct 05, 2006 9:36 pm
Tak potrzebuję gotowca bowiem bez problemu adresuję pierwsze 65536 bajtów na
adresie 160, natomiast za ChRL nie mogę zaadresować pozostałych bo na
adresie 168 nie wykrywa mi obecności układu.
Narazie używam tego:
//ZAPIS
I2Cstart
I2Cwbyte 160 //adres pamieci na magistrali dla zapisu
I2Cwbyte //H adres
I2Cwbyte //L adres
I2Cwbyte(7); //przykladowy bajt danych
I2C_stop();
//ODCZYT
I2Cstart
I2Cwbyte //adres pamieci na magistrali dla zapisu
I2Cwbyte //H adres
I2Cwbyte //L adres
I2Cstart
I2Cwbyte 161 //adres pamieci na magistrali dla odczytu
zmienna=I2Crbyte
I2Cstop
no i H adres i L adres dają 16 bit czyli 65535 komórek... Pozostałe powinny
być na inny adresie - 10101000 = 168, ale ich nie widzę. Może coś źle robię?
xaveri
Guest
Fri Oct 06, 2006 8:52 am
Czeski film?
Pawel Halama
Guest
Fri Oct 06, 2006 9:43 am
Witam
Quote:
...nie mogę zaadresować pozostałych bo na adresie 168 nie wykrywa mi
obecności układu.
Może pod tym adresem jest podpięty jeszcze jakiś inny układ I2C i następuje
konflikt.
Paweł Halama
xaveri
Guest
Fri Oct 06, 2006 9:58 am
Niestety pamięć jest jedynym układem na I2C...
Pawel Halama
Guest
Fri Oct 06, 2006 11:52 am
Quote:
Niestety pamięć jest jedynym układem na I2C...
Może taki prosty sprawdzający program coś wykaże:
'----------------------------------
Config Lcd = 16 * 1a
Dim Adres As Byte
Cls
Lcd "Start"
Cls
For Adres = 150 To 200 Step 2
I2cstart
I2cwbyte Adres
I2cstop
If Err = 0 Then
Cls
Lcd "Uklad pod: " ; Adres
Else
Cls
Lcd "Brak ukladu: " ; Adres
End If
Wait 1
Next Adres
Cls
Lcd "Koniec"
End
'------------------------------------
Oczywiście wyświetlanie trzeba skonfigurować po swojemu.
Pozdrawiam
Paweł Halama
xaveri
Guest
Fri Oct 06, 2006 12:29 pm
Napisałem sobie podobny programik już na początku problemu - dla pewności
odliczał od 0 do 255.
Wykrył tylko adresy 160 i 161 (zapis i odczyt)... Nic pozatym :/
xaveri
Guest
Sat Oct 07, 2006 12:33 pm
Już rozwiązałem problem. Napiszę co było powodem - może komuś to pomoże.
Płytkę projektowałem korzystając z datasheeta do 24C1024 produkcji ATMEL,
układ ten ma pin 3 niepodłączony.
Zastosowałem jednak pamięć 24FC1025 produkcji MicroChip i nie spojrzałem
(dokładnie)
do datasheeta. Okazało się, że ta pamięć WYMAGA podłączenia pinu 3 na
sztywno do VCC,
czego u mnie nie było. To powodowało, że pamięć nie udostępniała drugiej
połówki na
adresie 168 I2C. Po podłączeniu pinu do VCC jest OK.
Tak więc Panowie (i Panie) - CZYTAJMY UWAŻNIE DOKUMENTACJĘ !
Dziękuję wszystkim którzy próbowali mi pomóc.
Pozdro!
Miller Artur
Guest
Sat Oct 07, 2006 12:57 pm
Użytkownik "xaveri" <xaveri@poczta.fm> napisał w wiadomości
news:eg86pm$pr0$1@node4.news.atman.pl...
Quote:
Już rozwiązałem problem. Napiszę co było powodem - może komuś to pomoże.
Płytkę projektowałem korzystając z datasheeta do 24C1024 produkcji ATMEL,
układ ten ma pin 3 niepodłączony.
Zastosowałem jednak pamięć 24FC1025 produkcji MicroChip i nie spojrzałem
(dokładnie)
do datasheeta. Okazało się, że ta pamięć WYMAGA podłączenia pinu 3 na
sztywno do VCC,
czego u mnie nie było. To powodowało, że pamięć nie udostępniała drugiej
połówki na
adresie 168 I2C. Po podłączeniu pinu do VCC jest OK.
Tak więc Panowie (i Panie) - CZYTAJMY UWAŻNIE DOKUMENTACJĘ !
eee noo ... od tego to sie zaczyna ;)
@