RTV forum PL | NewsGroups PL

Jak zapisać 1 bajt na karcie MMC przy wczytywaniu 512 bajtów na 89C2051?

MMC zapis 1 bajtu

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zapisać 1 bajt na karcie MMC przy wczytywaniu 512 bajtów na 89C2051?

Goto page Previous  1, 2, 3  Next

Janko Muzykant
Guest

Tue Feb 06, 2007 7:04 pm   



Quote:
Bardzo mi się podoba pomysł trzymania karty w trybie zapisu, jednak nie wiem
jak zachowa sie karta, gdy wysle do niej np. w sumie 300 bajtów (zamiast
tych 512) i urwie się zasilanie.
Przypuszczam, że te 300 bajtów trafi w nicość.

Ale przecież pisałem - dajesz kondensator, który potrzyma 2*czas zapisu
sektora i nie trzymasz karty w trybie zapisu, tylko ściągasz sektor
ignorując 432 bajty (umownie), w pozostałej osiemdziesiątce uzupełniasz
kolejną szesnastkę bajtów i wysyłasz to plus 432 bajty #0ffh. Jak
braknie prądu to albo urządzenie się po chwili wyłączy (nie ma zapisu),
albo zapisze do końca i się wyłączy).

Ostatnio robiłem jakiś tester do siłowników, który programują na ilość
testów itp. Można było wsadzić eeprom do trzymania wskazań, ale
urządzenie miało być odłączane na maksymalnie kilkanaście sekund (celem
przeniesienia), nie miałem akurat scalaka z eepromem przy sobie i
wsadziłem tam na zasilaniu kondensator 6m8, co daje prawie 30 sekund pracy.

--
pozdrawia Adam
różne takie tam: www.smialek.prv.pl

DEXTER
Guest

Tue Feb 06, 2007 7:34 pm   



Quote:
Ale przecież pisałem - dajesz kondensator, który potrzyma 2*czas zapisu
sektora i nie trzymasz karty w trybie zapisu, tylko ściągasz sektor
ignorując 432 bajty (umownie), w pozostałej osiemdziesiątce uzupełniasz
kolejną szesnastkę bajtów i wysyłasz to plus 432 bajty #0ffh. Jak braknie
prądu to albo urządzenie się po chwili wyłączy (nie ma zapisu), albo
zapisze do końca i się wyłączy).

Ostatnio robiłem jakiś tester do siłowników, który programują na ilość
testów itp. Można było wsadzić eeprom do trzymania wskazań, ale urządzenie
miało być odłączane na maksymalnie kilkanaście sekund (celem
przeniesienia), nie miałem akurat scalaka z eepromem przy sobie i
wsadziłem tam na zasilaniu kondensator 6m8, co daje prawie 30 sekund
pracy.

Myslę, że Twój pomysł i rozwiązanie jest zbieżny do mojego, tylko, że ja
chcę uzupełniać sektor w EEPROMIE po i2c. Dodając kolejne 16 bajtów do
pamięci 24c08 i czekając na zapełnienie całego sektora. Potem chciałbym
wysyłać cały sektor z eeprom do mmc jak go uzbieram do końca. Potem gdy
wysle sektor, chcę ustawić wskaznik zapisu pamięci 24c08 znów na adres
zerowy i zbierać cały nowy sektor mmc.

Zaleta tego rozwiązania jest to, że nie tworzę pustych przestrzeni w
sektorach MMC (co jednak jest ważne), zaś nie mam doświdczenia z czasem
zapisu sektora MMC wprost czytając dane z pamięci i2c ? Boję się, że to może
zająć kilka sekund. A w tych sekundach procek będzie tak robotą zarabany, że
może cos przeoczyć na RS232.

Wiesz może ile u Ciebie trwa zapis takich 512 bajtów do mmc ? Robisz to na
kwarcu ca. 11 MHz ?

Jeżeli okaże się on zbyt długi , to obie te metody w moim przypadku odpadną,
bo w Twojej koncepcji robię zapis całego sektora po każdym odebraniu 16
bajtów do zapisu, zaś w moim myśleniu zapis dokonuje raz jak zbiorę 512
bajtów.

Masz może jakies gotowe procedurki do obsługi MMC dla 51 ?

D.

Janko Muzykant
Guest

Tue Feb 06, 2007 7:37 pm   



Quote:
Wiesz może ile u Ciebie trwa zapis takich 512 bajtów do mmc ? Robisz to na
kwarcu ca. 11 MHz ?

Nie pomogę, bo nie robiłem nic z mmc, tylko teoretyzuję.

Quote:
Masz może jakies gotowe procedurki do obsługi MMC dla 51 ?

Poszukaj siedmioczęściowego cyklu z EP 2004

--
pozdrawia Adam
różne takie tam: www.smialek.prv.pl

J.F.
Guest

Tue Feb 06, 2007 7:43 pm   



On Tue, 6 Feb 2007 19:34:16 +0100, DEXTER wrote:
Quote:
Myslę, że Twój pomysł i rozwiązanie jest zbieżny do mojego, tylko, że ja
chcę uzupełniać sektor w EEPROMIE po i2c. Dodając kolejne 16 bajtów do
pamięci 24c08 i czekając na zapełnienie całego sektora. Potem chciałbym
wysyłać cały sektor z eeprom do mmc jak go uzbieram do końca.

Sprawdz ile zapisow wytrzyma eeprom.
Chyba jednak RAM/FRAM szukasz.

A w ogole to wsadz jakas ATmega ze stosowna pamiecia.

Quote:
Zaleta tego rozwiązania jest to, że nie tworzę pustych przestrzeni w
sektorach MMC (co jednak jest ważne), zaś nie mam doświdczenia z czasem
zapisu sektora MMC wprost czytając dane z pamięci i2c ? Boję się, że to może
zająć kilka sekund.

kilka sekund to nie, ale do przerzucenia jest jednak 4096 bitow,
co kilkadziesiat ms zajmie.

J.

DEXTER
Guest

Tue Feb 06, 2007 8:03 pm   



Quote:

A w ogole to wsadz jakas ATmega ze stosowna pamiecia.

Zaleta tego rozwiązania jest to, że nie tworzę pustych przestrzeni w
sektorach MMC (co jednak jest ważne), zaś nie mam doświdczenia z czasem
zapisu sektora MMC wprost czytając dane z pamięci i2c ? Boję się, że to
może
zająć kilka sekund.

kilka sekund to nie, ale do przerzucenia jest jednak 4096 bitow,
co kilkadziesiat ms zajmie.

J.


kilkadziesiąt ms to jest dopuszczalny czas.

Myslałem o ATmega'u, jako drugi procek go zapdoać, dac mu obsługe i2c SLAVE.
Mój procek 51 byłby Master i2c i komuniacja między prockami jak trza. Główny
procek zająłby się tylko wysyłaniem (musi zostac w układzie bo obi jeszcze
klawisze, LCD, czujniki)
Ale: a) nie ma miejsca na płytce a obudowa jest już wybrana
b) kolejne 2 dni (ne miałem aż takiej styczniości z AVR jak z 51 a
pisze w asm wszystko sam)
c) czas tyka na moją niekorzyśc.

Z drugiej strony FRAM tak samo jak 24c08 ma 100 000 cygli zapisu, a to
przeciez jest 100 000 zapisów x 512 bajtów na sektor to jest 51 200 000 B. A
karta ma 256 000 000 B.

PARANOJA Sad(

A już tu padła liczba 50 MB przy obliczeniach, że zapisuję wprost do MMC
tylko 80 bajtów a resztę wypełniam $FF. Tylko, że bez niepotrzebnej
brędzlarki. Walę 80 bajtów i reszta sektora na w kosmos.

D.

DEXTER
Guest

Tue Feb 06, 2007 8:29 pm   



czas tyka na moją niekorzyśc.
Quote:

Z drugiej strony FRAM tak samo jak 24c08 ma 100 000 cygli zapisu, a to
przeciez jest 100 000 zapisów x 512 bajtów na sektor to jest 51 200 000 B.
A karta ma 256 000 000 B.


choć tutaj piszą:
http://www.datasheet4u.com/html/2/4/C/24C08_MicrochipTechnology.pdf.html

w datasheecie, że to jest 1 mln cykli
a to już 512 MB , czyli dwa razy więcej.


D.

Paweł Hadam
Guest

Tue Feb 06, 2007 8:45 pm   



DEXTER napisał(a):
Quote:
czas tyka na moją niekorzyśc.
Z drugiej strony FRAM tak samo jak 24c08 ma 100 000 cygli zapisu, a to
przeciez jest 100 000 zapisów x 512 bajtów na sektor to jest 51 200 000 B.
A karta ma 256 000 000 B.


choć tutaj piszą:
http://www.datasheet4u.com/html/2/4/C/24C08_MicrochipTechnology.pdf.html

w datasheecie, że to jest 1 mln cykli
a to już 512 MB , czyli dwa razy więcej.


Co do EEPROMa to się zgodzę, ale co to za kostka FRAM, która ma tyle
samo cykli co EEPROM?? Ja używałem FM24CL64 (2,7-3,6V) i w .pdf pisze
jak byk "unlimited write cycles". Wersja 5-cio woltowa ma 1 Trylion
cykli....
PH

J.F.
Guest

Tue Feb 06, 2007 8:49 pm   



On Tue, 6 Feb 2007 20:03:18 +0100, DEXTER wrote:
Quote:
Myslałem o ATmega'u, jako drugi procek go zapdoać, dac mu obsługe i2c SLAVE.
Mój procek 51 byłby Master i2c [...]

PARANOJA Sad(

Zgadzam sie z toba ze paranoja, dorzucac 51 jako mastera :-)


J.

lwh
Guest

Tue Feb 06, 2007 8:53 pm   



Użytkownik "DEXTER" <dexter@wppp.pl> napisał w wiadomości
news:eqap0f$so7$1@mx1.internetia.pl...
Quote:
w datasheecie, że to jest 1 mln cykli

Te pamięci dużo cykli zapisu wytrzymują, szczególnie w temperaturach
pokojowych
Liczby określają jakaś statystykę
Weź konkretny egzemplarz z szuflady, napisz krótki program ciągłego zapisu
zliczaj , kiedy pojawią się błędy. Po miliardzie zapisów się znudzisz:-)

Marek Wodzinski
Guest

Wed Feb 07, 2007 10:18 am   



DEXTER wrote:
Quote:
Boję się jednak, że w
czasie przepisywania (czas!!) pojawi się informacja która przegapię.

Zrób minimalnie większy bufor.
Ja w swoim loggerze do gps-a mam przeznaczone jakieś 640B na bufor
cykliczny. Jak się uzbiera 512B 'brudnych' bajtów to zapisuję to i
przestawiam wskaźnik pierwszego 'brudnego'. W międzyczasie na
przerwaniach cały czas są dopisywane bajty pobrane z rs-a do bufora.
Mam już gigabajty logów i nic mi się na razie nie zgubiło (oprócz błędów
na samym rs-ie).

Quote:
Do
89c51 mam dołączony kwarc 11,059 MHz i nie wiem jeszcze ile może trwac zapis
512 baktów do MMC.

Nie znam się na 51, ale policz sobie. Bajty przepychasz po SPI, nawet
najwolniejsza karta będzie szybsza niż Ty będziesz w stanie wysyłać
dane, więc jedynym ograniczeniem jest procek. Dolicz kilka bajtów na
nagłówki i potwierdzenie i będziesz miał prędkość (z karty dostajesz
potwierdzenie czy zapis się udał, więc możesz w przypadku błedu
powtórzyć). Ewentualnie inicjacja karty i może sam rozkaz zapisu (już
nie pamiętam dokładnie - poszukaj w datasheetach) musi być z mniejszą
prędkością (chyba coś koło 400kHz, ale głowy nie dam).

Rozwiązanie problemu z brakiem zasilania, to Ci Janko podał: wystarczy
kondensator i układ wykrywający.


pozdrawiam

majek
--
"If you want something done...do yourself!"
Jean-Baptiste Emmanuel Zorg

Taddy
Guest

Wed Feb 07, 2007 2:12 pm   



DEXTER wrote:

Quote:


Dokładnie tak to musisz zrobić.

Darek Żołna

No tak, tylko jak tu znaleźć procka '51 który ma 512 RAMu w strukturze,
choć
i to tez jest na styk.

A nie prosciej uzyc pamieci flash np. AT45DB081B ?

--
Taddy
http://www.rcx.pl/

Adam Wysocki
Guest

Thu Feb 08, 2007 2:41 am   



Spinacz biurowy, DEXTER <dexter@wppp.pl>!

Quote:
Bardzo mi się podoba pomysł trzymania karty w trybie zapisu, jednak nie wiem
jak zachowa sie karta, gdy wysle do niej np. w sumie 300 bajtów (zamiast
tych 512) i urwie się zasilanie.
Przypuszczam, że te 300 bajtów trafi w nicość.

Sprawdź. Podejrzewam że tak. Ale nie za agresywnie, mi podczas zapisu
(z komputera, normalnie, przerzucając pliki przez czytnik) wypadła
wtyczka z USB i karta przestała być widziana.

Quote:
Że też te karty MMC nie maja dostepu do konkretnego bajtu !!

To upraszcza budowę kart.

--
Adam Wysocki * Warszawa * http://www.chmurka.net/ * GSM: 514 710 213
Jakbym chciał, to bym coś mądrego napisał (C) LampA @ p.c.networking

Adam Wysocki
Guest

Thu Feb 08, 2007 2:41 am   



Spinacz biurowy, DEXTER <dexter@wppp.pl>!

Quote:
A może po prostu nie potrzebujesz tyle pamięci? Wykrój tyle ramu, ile
się da i zapisuj to jako sektor, reszta się zmarnuje. Najwyżej z 256MB
zrobi się np. 50MB...

Tak, myślałem o tym, ale nadal istanieje niebezpieczeństwo, że ktoz
wyciągnie wtyczkę od zasilania i dane juz zebrane w RAMie pójdą się gwizdac.

IMO nie zrozumiałeś.

Po prostu dzielisz sektor na część użyteczną i zmarnowaną i piszesz procedurę,
która np. dostaje 128 bajtowy bufor i zapisuje go jako sektor, zerując (albo
jeszcze lepiej, powielając) resztę. Na przykład 128 bajtów zapisując w jednym
sektorze czterokrotnie.

Quote:
Szkoda, że nie ma takich duzych pamięcie eeprom na i2c, pamięć 24c1024 to
największa jaką znalażłem, a to jest mało.

Drogie toto... W porównaniu z MMC 32 MB z Allegro bardzo drogie.

Quote:
Ale pomyslę nad koncepcją zbierania danych po 512 bajtów w pamięci 24c16
albo 24c08 i gdy zbiore 512 to przepiszę to do MMC. Boję się jednak, że w
czasie przepisywania (czas!!) pojawi się informacja która przegapię.

A o przerwaniach słyszał? Smile W końcu właśnie po to zostały wymyślone.
Jak przyjdzie transmisja to przerywasz zapisywanie i buforujesz znak,
a procesor pomaga ci w tym sprzętowo.

IMO zostaw to 51 w cholerę i zainteresuj się AVR.

--
Adam Wysocki * Warszawa * http://www.chmurka.net/ * GSM: 514 710 213
Jesteś emocjonalnie wykolejony (C) Bylinek do futszaK-a na apff 2002

Adam Wysocki
Guest

Thu Feb 08, 2007 2:41 am   



Spinacz biurowy, DEXTER <dexter@wppp.pl>!

Quote:
Myslałem o ATmega'u, jako drugi procek go zapdoać, dac mu obsługe i2c SLAVE.
Mój procek 51 byłby Master i2c i komuniacja między prockami jak trza. Główny
procek zająłby się tylko wysyłaniem (musi zostac w układzie bo obi jeszcze
klawisze, LCD, czujniki)
Ale: a) nie ma miejsca na płytce a obudowa jest już wybrana
b) kolejne 2 dni (ne miałem aż takiej styczniości z AVR jak z 51 a
pisze w asm wszystko sam)

To zacznij pisać w C i zajmij się AVRami. Spokojnie dasz radę.

Quote:
A już tu padła liczba 50 MB przy obliczeniach, że zapisuję wprost do MMC
tylko 80 bajtów a resztę wypełniam $FF. Tylko, że bez niepotrzebnej
brędzlarki. Walę 80 bajtów i reszta sektora na w kosmos.

Jeżeli możesz dopuścić taką redukcję pojemności karty to tak będzie
najprościej.

--
Adam Wysocki * Warszawa * http://www.chmurka.net/ * GSM: 514 710 213
Ciekły, zabieraj te szczękoczułki z klawiatury! (C) Obi na 0-18 2000

Adam Wysocki
Guest

Thu Feb 08, 2007 2:41 am   



Spinacz biurowy, DEXTER <dexter@wppp.pl>!

Quote:
Myslę, że Twój pomysł i rozwiązanie jest zbieżny do mojego, tylko, że ja
chcę uzupełniać sektor w EEPROMIE po i2c. Dodając kolejne 16 bajtów do
pamięci 24c08 i czekając na zapełnienie całego sektora. Potem chciałbym
wysyłać cały sektor z eeprom do mmc jak go uzbieram do końca. Potem gdy
wysle sektor, chcę ustawić wskaznik zapisu pamięci 24c08 znów na adres
zerowy i zbierać cały nowy sektor mmc.

To może być bolesne dla eeproma. Już ktoś proponował - użyj FRAM.

--
Adam Wysocki * Warszawa * http://www.chmurka.net/ * GSM: 514 710 213
Malo kto chce, aby ktos robil taka laske jak Ty Wink (C) Greg at appm

Goto page Previous  1, 2, 3  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zapisać 1 bajt na karcie MMC przy wczytywaniu 512 bajtów na 89C2051?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map