Goto page Previous 1, 2, 3
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ł?

W końcu właśnie po to zostały wymyślone.
Jak przyjdzie transmisja to przerywasz zapisywanie i buforujesz znak.
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
Marcin Gala
Guest
Thu Feb 08, 2007 2:17 pm
DEXTER napisał(a):
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

(
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.
Teoretyzuje, ale... Daj 2 pamieci po 512, w jedna zbierasz dane, a
zawartosc drugiej w tym czasie wysylasz na MMC. Jak sie zapelni pierwsza
to z niej wysylasz a zbierasz dane na druga. Jak dasz podtrzymanie
zasialnia to masz zawsze w pamieci jeszcze backup poprzedniego sektora
WR(J)C.
--
Marcin "Ahmed" Gala
m.gala(maupa)interia.pl
Na poludniu Chalupki, na polnocy Chalupy... a posrodku wielka wiocha
Adam Dybkowski
Guest
Thu Feb 08, 2007 8:12 pm
Taddy napisał(a):
Quote:
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 ?
A co to da? I tak musisz programować pamięć całymi stronami (po AFAIR
264 bajty) tylko dane zbierasz najpierw w buforze RAM w układzie
pamięci. Jeżeli zasilanie padnie zanim przepiszesz bufor RAM do Flasha,
podobnie tracisz zebraną zawartość tak jakbyś robił to prosto z RAMu.
Już ktoś tu podał metodę z wooolnym zegarem transmisji do karty MMC i to
było najskuteczniejsze rozwiązanie. Wręcz można taktować wysyłanie
każdego bajtu oddzielnie cały czas trzymając aktywny chipselect karty (w
trybie SPI).
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
DEXTER
Guest
Thu Feb 08, 2007 8:26 pm
Quote:
Już ktoś tu podał metodę z wooolnym zegarem transmisji do karty MMC i to
było najskuteczniejsze rozwiązanie. Wręcz można taktować wysyłanie każdego
bajtu oddzielnie cały czas trzymając aktywny chipselect karty (w trybie
SPI).
--
Adam, rozumiem, że do tej metody jedynie co jest potrzebne to wykrycie
zaniku zasilani, aby szybko dokończyc ramkę, przed zanikiem, aby Flash nie
zgubiła całej ramki ?
Czyli np. zasilanie wysterowuje np. wejście przerwania i jak tylko zostanie
zgłoszone przerwanie to z jakiegoś licznika odczytać ile jeszcze mam wysłac
i walę $FF do końca i kończe transmisję ?
D.
Marek Lewandowski
Guest
Thu Feb 08, 2007 9:00 pm
DEXTER wrote:
Quote:
Już ktoś tu podał metodę z wooolnym zegarem transmisji do karty MMC i to
było najskuteczniejsze rozwiązanie. Wręcz można taktować wysyłanie każdego
bajtu oddzielnie cały czas trzymając aktywny chipselect karty (w trybie
SPI).
Adam, rozumiem, że do tej metody jedynie co jest potrzebne to wykrycie
zaniku zasilani, aby szybko dokończyc ramkę, przed zanikiem, aby Flash nie
zgubiła całej ramki ?
ano.
Najprościej to zasilanie przez diodę i opornik na kondensator klasy
Supercap (jeśli układ bierze niedużo prądu - masz wtedy minuty a nawet
godziny pracy) albo na zwykłe coś typu 4700uF (jak prądu potrzebujesz
więcej, ale za to musisz się cholernie spieszyć). Przez drugą diodę
podajesz to samo zasilanie na nogę proca, pulldown rzędu 1k. Jak
zasilanie padnie to na nodze masz zbocze opadające i przerwanie, ale
zasilanie z kondensatora nie zwieje do zasilacza, więc masz czas na
zapis. Wysyłasz komendę zapisu i cześć pracy.
Możesz też zrobić bezpieczniej: podeprzeć supercap'em jakiś kawałke
szeregowego RAMu. Wtedy przerwanie zasilania nie robi Ci różnicy, jak
wraca zasilanie to piszesz dalej do tego RAMu i tyle, jak się zapełni,
to przepisujesz do bufora karty i każesz zaprogramować. Zasilanie
podpierasz kondensatorem takim, żeby utrzymał 2x maksymalny czas zapisu
sektora MMC i masz spokój - nawet jeśli szlag trafi zasilanie w
momencie, jak wyślesz komendę zapisu, to i tak zapis się dokońćzy
bezpiecznie i jeszcze zdążysz zweryfikować go i skasować RAM.
--
Marek Lewandowski
ICQ#/GG#: ask per mail. mail: locust[X]poczta/onet/pl
my gallery:
http://www.pbase.com/mareklew
my kind-of-a-blog:
http://lockaphoto.stufftoread.com
Taddy
Guest
Fri Feb 09, 2007 1:50 pm
Adam Dybkowski wrote:
Quote:
Taddy napisał(a):
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 ?
A co to da? I tak musisz programować pamięć całymi stronami (po AFAIR
264 bajty) tylko dane zbierasz najpierw w buforze RAM w układzie
pamięci. Jeżeli zasilanie padnie zanim przepiszesz bufor RAM do Flasha,
podobnie tracisz zebraną zawartość tak jakbyś robił to prosto z RAMu.
Już ktoś tu podał metodę z wooolnym zegarem transmisji do karty MMC i to
było najskuteczniejsze rozwiązanie. Wręcz można taktować wysyłanie
każdego bajtu oddzielnie cały czas trzymając aktywny chipselect karty (w
trybie SPI).
No to chyba zbyt duze uproszczenie zastosowales.
Ta kostka ma 2 bufory RAM gdzie mozna wsadzac dane a potem
w stosownym momencie wpisywac je do falsha. Zalety:
- prosta komunikacja z ukladem
- nie trzeba nic kombinowac z dodatkowym RAM
- niska cena
- duza pojemnosc
Po wykryciu spadku zasilania wykonac rozkaz zapisu do flasha i tyle.
Stosowny kondensator podtrzyma zasilanie.
--
Taddy
http://www.rcx.pl/
DEXTER
Guest
Fri Feb 09, 2007 6:57 pm
Quote:
IMO zostaw to 51 w cholerę i zainteresuj się AVR.
Masz racje, kolejny projekt będzie pod AVRy.
Mam i kompilator i system uruchomieniowy ST500, ale jakoś mi one nie
podchodzą.
Kwarce jakieś dziwne mam 3,86 MHz na tej płycie ST500. Trudno mi się
przyzwyczić, że porty są DO i DI pod dwoma odersami w obszarze adresowym.
Tyle lat praktyki w czymś innym zniechęca do robienie czegoś po nowemu, ale
widzę, że się nie da. Zastanawiam się czy przykładac się do AVRów czy znów
zaraz to nie będzie przeżytek. Może od razu ARMy ? Może jakiś Ethernet
wbudowany w procka od razu ?
Muszę się zastanowić i olać w końcu to '51.
D.
Goto page Previous 1, 2, 3