chc±c zapisaæ 1 bajt do karty MMC, rozumiem, ¿e musze jeden sektor (512bajtów) wczytac do Ramu, dopisac ten 1 bajt, i potem zapisac ca³y sektor, panujc aby sektory siê nie pomiesza³y ?
Mam problem bo mam karte MMC teraz podpiet± do 89c2051 a nie chce zapisywaæ po 512 bajtów bo tylu nie mam ;-)
D.
Didn't find your answer? Ask the community — no account required.
D
Dariusz Zolna
DEXTER napisał(a):
Dokładnie tak to musisz zrobić.
Darek Żołna
D
DEXTER
No tak, tylko jak tu znale¼æ procka '51 który ma 512 RAMu w strukturze, choæ i to tez jest na styk.
D.
N
nuclear
U¿ytkownik "DEXTER" snipped-for-privacy@wppp.pl napisa³ w wiadomo¶ci news:eq89fm$3l6$ snipped-for-privacy@mx1.internetia.pl...
a musi byc 51 ? byle atmega88 ma 1k...
V
Virus_7
DEXTER napisał(a):
No to może jakiś zewnętrzny RAM?
M
Miller Artur
U¿ytkownik "DEXTER" snipped-for-privacy@wppp.pl napisa³ w wiadomo¶ci news:eq89fm$3l6$ snipped-for-privacy@mx1.internetia.pl...
có¿, kolejny przyk³ad na to, ze nie kazde narzêdzie nadaje siê do wykonywania jakiej¶ czynno¶ci ... pozostaje zewnêtrzny RAM, choæby na I2C, ¿eby nód zbyt wielu nie zajmowaæ.
@
J
J.F.
Dallas robil takie co mialy i 32KB.
Ale sugeruje jednak inny procek - '51 sie nie nadaje jak blok danych jest dluzszy niz 256 bajtow ..
J.
M
marcom
Czesc. Zastosuj FRAM,
formatting link
z I2C to bajka. Nie dosyc, ze szybki, to jeszcze zapisac mozna miliony razy, a nie jak zwykly EEPROM.
Mariusz
M
Marek Wodzinski
Tak. Natomiast co chcesz zrobić? Bo jeżeli zapis wielu danych po kolei, ale powoli, to cykl zapisu tych
512B może być baaaardzo długi. Więc jak robisz np. rejestrator, to nie trzeba do tego wogóle ramu - możesz przytrzymywać kartę w stanie zapisu i czekać na następną daną z wejścia.
pozdrawiam
majek
D
DEXTER
sugerujesz, ¿e mam koljne dane przesy³aæ wraz z kolejnymi zdarzeniemi ? urz±dzenie które robiê ma zapamiêtywac kody b³êdów z inego urz±dzenia wysane po RS232. Na eden b³±d 16 bajtów. Takie 256 MB by³oby fajne, ale jak nie dokoñcze zapisu to wszystko do tej pory co wys³a³em ucieknie. Chyba, ¿e jednoczesnie wysy³ac to do pamiêci np. 24c16 po i2c i do tej mmc. gdyby sie nie powiod³o, to zawsze ostatni sekto moge powtórzyc i rozpocz±æ go na nowo. Czy dobrze kombinujê ?
D.
J
Janko Muzykant
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...
D
DEXTER
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.
Szkoda, ¿e nie ma takich duzych pamiêcie eeprom na i2c, pamiêæ 24c1024 to najwiêksza jak± znala¿³em, a to jest ma³o.
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ê. Do
89c51 mam do³±czony kwarc 11,059 MHz i nie wiem jeszcze ile mo¿e trwac zapis
512 baktów do MMC.
Ma kto¶ mo¿e gotowca do obs³ugi MMC na '51 ? Zaoszczêdzi³bym sporo czasu.
D.
J
Janko Muzykant
Ale ja nie w tym sensie. Zgrywasz sektor, przy czym dajmy na to 80 bajtów (masz 128 jak pisałeś wszystkiego) przenosisz do ramu, uzupełniasz dane i wysyłasz ową osiemdziesiątkę+pustą resztę do sektora. Wyjdzie 5 komunikatów na sektor zamiast 32. Może wykroisz 96 bajtów, a może i 112 to straty będą mniejsze.
Masz ewentualnie problem z brakiem prądu, ale na to wystarczy kondensator kilka mF + detektor braku zasilania.
P
Paweł Hadam
marcom napisał(a):
Chciałem kiedyś sprawdzić, czy faktycznie można dowolną ilość razy toto zapisać. Znudziło mi się po miliardzie cykli, trwało to coś z dwa tygodnie. Miliard to dla mnie wystarczająco blisko nieskończonosci :).
Pozdrawiam, PH
D
DEXTER
Wiesz, ta strata jest do pogodzenia, ale jak zastosujê kartê 256 MB to mam spokój na jakies 2 lata !!, tylko aby by³ pr±d. Dlatego troszkê zale¿y mi na tych bajtach. 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¶æ.
¯e te¿ te karty MMC nie maja dostepu do konkretnego bajtu !! A mo¿e s± inne, które maj± adresowanie na poziomie pojedynczych bajtów ?
D.
J
Janko Muzykant
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.
D
DEXTER
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.
J
Janko Muzykant
Nie pomogę, bo nie robiłem nic z mmc, tylko teoretyzuję.
Poszukaj siedmioczęściowego cyklu z EP 2004
J
J.F.
Sprawdz ile zapisow wytrzyma eeprom. Chyba jednak RAM/FRAM szukasz.
A w ogole to wsadz jakas ATmega ze stosowna pamiecia.
kilka sekund to nie, ale do przerzucenia jest jednak 4096 bitow, co kilkadziesiat ms zajmie.
J.
D
DEXTER
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 :-((
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.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.