Witam
Moja radość z powodu uruchomienia biblioteki MDD FS Microchipa była chyba przedwczesna....
Dlatego prosiłbym kogoś kto tego używał o jakieś rady, wskazówki...
Wszystko niby chodzi, procek robi ładnie puste pliki, katalogi itp. tylko jest mały problem, wszystko jest ładnie do momentu kiedy zapisuje do pliku mniej niż 100kB ... w momencie kiedy zapisuje więcej niż 100kB zaczynają się schody, powiedzmy że zapisuje 1MB to raz zapisze 432k raz 841k.... jakieś przypadkowe ilości danych, plik potem można otworzyć na kompie i nie zgłasza błędu, zapisuje całe długości sektora ale wewnątrz gubi co jakiś czas co co miało być zapisane z bufora.
druga sprawa,trochę śmieszna, czasami nie chce utworzyć pliku w trybie 'w' więc napisałem żeby robił go aż zrobi i jest OK. Tak to wygląda:
Co w tym śmiesznego? Jeżeli nie dam tam Delayms(100); to jeżeli utworzy i coś z nim jest nie tak to czasami mam 3-4 pliki o takiej samej nazwie ;] co jest chyba absurdem ;] no ale z opóźnieniem w końcu zrobi poprawnie plik i jest OK
dalej dla testu robię np tak:
i jes OK, jeżeli zapisze bufor więcej niż 100 razy czyli 100 x 1024 = 100kB to zaczyna się krzaczyć, mimo że da się odczytać plik.
gorzej jest jak zrobię dodatkowo:
i znowu niby wszystko jest ok jeżeli plik nie przekroczy 100kB, jeżeli przekroczy to w kompie po odczytaniu mam "plik uszkodzony'
normalnie ręce mi opadają....
procek chodzi na zegarku 40MHz jak bym nie ustawiał parametrów w SD-SPI.h to i tak ustawia mi SPI na 10MHz,
w tej chwili tak jak to działa to masakra, pomijając że nie mogę utworzyć poprawnego pliku większego niż 100k ( czasmi udaje się zrobić plik 200-300k ale pomiędzy dopisaniem do pliku 100kilowej porcji muszę odczekać około sekundy, a to jest nie do przyjęcia) to jeszcze czas zapisu jest masakrycznie wolny.
Potrzebuję zapisać pliki o wielkości GB z prędkością około 3MB/s ......
Czy to w ogóle jest realne?
Jeżeli ktoś ma jakiś pomysł albo jakieś doświadczenie z tą biblioteką albo namiary na jakąś inna to będę wdzięczny.
pozdro
otapi
Moja radość z powodu uruchomienia biblioteki MDD FS Microchipa była chyba przedwczesna....
Dlatego prosiłbym kogoś kto tego używał o jakieś rady, wskazówki...
Wszystko niby chodzi, procek robi ładnie puste pliki, katalogi itp. tylko jest mały problem, wszystko jest ładnie do momentu kiedy zapisuje do pliku mniej niż 100kB ... w momencie kiedy zapisuje więcej niż 100kB zaczynają się schody, powiedzmy że zapisuje 1MB to raz zapisze 432k raz 841k.... jakieś przypadkowe ilości danych, plik potem można otworzyć na kompie i nie zgłasza błędu, zapisuje całe długości sektora ale wewnątrz gubi co jakiś czas co co miało być zapisane z bufora.
druga sprawa,trochę śmieszna, czasami nie chce utworzyć pliku w trybie 'w' więc napisałem żeby robił go aż zrobi i jest OK. Tak to wygląda:
while (Fpointer == NULL)
{
Fpointer = FSfopen (fname, "w");
Delayms(100);
}
Co w tym śmiesznego? Jeżeli nie dam tam Delayms(100); to jeżeli utworzy i coś z nim jest nie tak to czasami mam 3-4 pliki o takiej samej nazwie ;] co jest chyba absurdem ;] no ale z opóźnieniem w końcu zrobi poprawnie plik i jest OK
dalej dla testu robię np tak:
for(y=0;y<1024;y++)
sendBuffer[y]=60; // wypełniam bufor jakimś znakiem ">"
for(x=0;x<100;x++) // 100 razy zapisuje bufor
FSfwrite (( void *)sendBuffer, 1, 1024, Fpointer);
i jes OK, jeżeli zapisze bufor więcej niż 100 razy czyli 100 x 1024 = 100kB to zaczyna się krzaczyć, mimo że da się odczytać plik.
gorzej jest jak zrobię dodatkowo:
FSrewind (Fpointer); // przewijam plik na początek
for(y=0;y<1024;y++)
sendBuffer[y]=61; // wpisuje do bufora nowe znaki "="
FSfwrite (( void *)sendBuffer, 1, 1024, Fpointer); // zapisuje bufor na początku pliku
i znowu niby wszystko jest ok jeżeli plik nie przekroczy 100kB, jeżeli przekroczy to w kompie po odczytaniu mam "plik uszkodzony'
normalnie ręce mi opadają....
procek chodzi na zegarku 40MHz jak bym nie ustawiał parametrów w SD-SPI.h to i tak ustawia mi SPI na 10MHz,
w tej chwili tak jak to działa to masakra, pomijając że nie mogę utworzyć poprawnego pliku większego niż 100k ( czasmi udaje się zrobić plik 200-300k ale pomiędzy dopisaniem do pliku 100kilowej porcji muszę odczekać około sekundy, a to jest nie do przyjęcia) to jeszcze czas zapisu jest masakrycznie wolny.
Potrzebuję zapisać pliki o wielkości GB z prędkością około 3MB/s ......
Czy to w ogóle jest realne?
Jeżeli ktoś ma jakiś pomysł albo jakieś doświadczenie z tą biblioteką albo namiary na jakąś inna to będę wdzięczny.
pozdro
otapi