Implementacja komunikacji mikrokontrolera ST62E20 z pamięcią 24C02A - procedury zapisu i odczytu
Re: komunikacja mikrokontrolera z pamiecia
From: "=?ISO-8859-2?Q?Marcin_J=EAdrzejczak?=" <big8_at_nospam_ikp.atm.com.pl>
Subject: Re: komunikacja mikrokontrolera z pamiecia
Date: 2 Nov 1998 15:18:29 GMT
Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl> napisał(a) w artykule
<363B33BE.F1EAF298_at_nospam_friko5.onet.pl>...
Pomozcie:
1. Jak powinna wygladac procedura zapisu bajtu do pamieci 24C02A przez
mikrokontroler ST62E20?
2. Jak powinna wygladac pracedura odczytu bajtu z powyzszej pamieci?
3. Jak powinna wygladac procedura opozniajaca o czas mozliwy do
wyliczenia na podstawie danych wartosc podstawionych do procedury?
Oczywiscie chodzi o ST62E20.
Sprawa jest dla mnie naprawde wazna, stanalem z projektem wlasnie w
momencie transmisji danych z/do pamieci, a szef mnie przyciska.
Udalo mi sie nawet zrobic jakas tam procedure, ale dzialala tylko wtedy
gdy mikrokontroler taktowany byl mala czestotliwoscia rzedu
kilkudziesieciu Hz. Powyzej "dlawi sie". Moze ten fakt naprowadzi kogos,
kto ma doswiadczenie z ta pamiecia, na rozwiazanie mijego problemu.
Prosze rowniez o odpowiedz na priva.
To nie transfer danych Ci się dławi, tylko pamięć w cyklu zapisu. Dane
można wysyłać z pełną prędkością magistrali IIC (w niektórych przypadkach
do kilkuset kHz), po czym pamięć rozpoczyna cykl zapisu który trwa do
kilkuset milisekund. Niektóre typy pamięci umożliwiają przesłanie bloku
danych (np. 8 bajtów) przed rozpoczęciem cyklu zapisu (wymaga to
odpowiedniego podłączenia odpowiedniej nóżki konfiguracyjnej). Większość
pamięci jest w stanie przyjąć do dwóch bajtów danych. Po ich wysłaniu
trzeba odczekać odpowiednią chwilę, lub odpytywać pamięć, czy już jest
gotowa. Ja w praktyce stosowałem wielokrotne odpytywanie przez
zaadresowanie i sprawdzenie czy pamięć odpowiedziała sygnałem ACK.
Przy ST622x i kwarcu 4 MHz nie stosowałem dłuższych opóźnień niż 1 NOP.
Dla przykładu tak wyglądają u mnie makra do sterowania pinami magistrali
IIC
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Obsluga pinow magistrali IIC/CBUS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.macro SDA_Up
set SDA, IIC_Port
.endm
.macro SDA_Down
res SDA, IIC_Port
.endm
.macro SCL_Up
set SCL, IIC_Port
.endm
.macro SCL_Down
nop
res SCL, IIC_Port
.endm
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; generacja impulsu zegarowego
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.macro SCLClock
SCL_Up
SCL_Down
.endm
I przykładowa procedurka generująca sekwencję STOP:
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; generacja bitu stopu na magistrali IIC-Bus, SDA i SCL w gore
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IICStop:
call SDAOutput ; rekonfiguracja linii SDA - Output
.ifc gt IICProcs
SDA_Down ; SDA na dol (tylko gdy jest obsluga IIC)
.endc
SCL_Up ; SCL na gore
SDA_Up ; SDA na gore
ret
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; rekonfiguracja linii SDA jako wejscie
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SDAInput:
set SDA,IIC_Port ; SDA na gore
res SDA,IIC_PDir ; linia SDA jako wejscie proste
ret
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; rekonfiguracja linii SDA jako wyscie Open drain
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SDAOutput:
set SDA,IIC_Port ; SDA na gore
set SDA,IIC_PDir ; linia SDA jako wyjscie open-drain
ret
Resztę pewnie zechcesz dopisać sam...
Życzę miłej zabawy i powodzenia.
Marcin J.
From: "Juliusz" <juliusz_at_nospam_wyscigi.multi-ip.com.pl>
Subject: Re: komunikacja mikrokontrolera z pamiecia
Date: Mon, 02 Nov 1998 18:34:00 GMT
Marcin Jędrzejczak napisał(a) w wiadomości:
<01be0673$d4a2d740$b648199d_at_nospam_buzka>...
Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl> napisał(a) w artykule
<363B33BE.F1EAF298_at_nospam_friko5.onet.pl>...
Pomozcie:
1. Jak powinna wygladac procedura zapisu bajtu do pamieci 24C02A przez
mikrokontroler ST62E20?
2. Jak powinna wygladac pracedura odczytu bajtu z powyzszej pamieci?
3. Jak powinna wygladac procedura opozniajaca o czas mozliwy do
wyliczenia na podstawie danych wartosc podstawionych do procedury?
Oczywiscie chodzi o ST62E20.
Sprawa jest dla mnie naprawde wazna, stanalem z projektem wlasnie w
momencie transmisji danych z/do pamieci, a szef mnie przyciska.
Udalo mi sie nawet zrobic jakas tam procedure, ale dzialala tylko wtedy
gdy mikrokontroler taktowany byl mala czestotliwoscia rzedu
kilkudziesieciu Hz. Powyzej "dlawi sie". Moze ten fakt naprowadzi kogos,
Slychaj zgadza sie ! Ja mielem pamieci co potrzebowaly aby im odpuscic 512
cykli maszynowych pomiedzy zapisami przy zegarze 4 MHz ! Wygladalo to tak
jakby dawalo sie czytac z pamieci ale zapis bajtu co sekunde :)) Jak
usilowalem przerwe zmniejszac to dupa i nie zapisywaly sie pamieci.
Najpierw kup eepromy z pewnego zrodla, z data produkcji 97xx lub 98xx i
zobacz co sie dzieje. Pamietaj, ze to co jest w sklepach to SMIETNIK
!!!!!!! To sa resztki magazynowe lub niepelnowartosciowe podzespoly !
Mialem tez eepromy co zapominaly po czasie lub po setnym zapisie przestawaly
przyjmowac dane pod dany adres. Co ciekawe byly to XICOR-y X24C04 ale jakies
stare - polakomilem sie na cene 3 razy mniejsza niz sprowadzane :)
Juliusz