Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Leonardo oraz Nano - nietypowy brak komunikacji z kartą SD

matviej 01 Sty 2017 20:58 678 4
  • #1 01 Sty 2017 20:58
    matviej
    Poziom 7  

    Witam

    walczę już parę dni i nie dam rady samemu - prośba o pomoc.
    -Arduino Leonardo oraz Arduino Nano.
    -Podłączenie do karty SD zarówno poprzez moduł Catalex Micro SD Adapter działający na zasilaniu i logice 5V
    -jak i podłączenie poprzez samodzielnie wykonany czytnik (MOSI MISO CLK SS VCC GDN) wg schmatów sprawdzonych wielokrotnie przez innych użytkowników.
    -Sprawdzone elektrycznie - wszystkie napięcia, przejścia, połączenia OK
    -sprawdzone 3 karty SD (2GB i 16GB)
    -sprawdzone różne ustawienia formatowania (FAT16, FAT32)
    -sprawdzone formatowanie poprzez oryginalny SD formatter 4.0 we wszystkich opcjach
    -dodatkowo kombinowałem z partycjami - zmniejszałem pojemność kart, formatowałe te zmniejszone partycje
    -również ustawiałem inaczej SPI (SD.begin(SPI_HALF_SPEED, chipSelect) oraz QUARTER_SPEED)

    Czego bym nie robił, efekt zawsze taki sam.
    -Kartę 16GB ATADY wykrywa w programie przykładowym Arduino o nazwie CardInfo ale nie wykrywa w programie DataLogger oraz innych prostych loggerach jakie działają u innyh użytkowników w necie.

    -Kartę 2GB wykrywa w programie przykładowym Arduino o nazwie CardInfo ALE pisze, że jest źle sformatwana ORAZ nie wykrywa w programie DataLogger oraz innych prostych loggerach jakie działają u innyh użytkowników w necie.

    Komunikaty dla karty 16GB:
    Initializing SD card...Wiring is correct and a card is present.

    Card type: SDHC

    Volume type is FAT32

    Volume size (bytes): 2015268864
    Volume size (Kbytes): 1968036
    Volume size (Mbytes): 1921

    Files found on the card (name, date and size in bytes):

    UWAGA- Volume size wynika z tego, że taką na niej założyłem partycję, żeby była mniejsza do obsługi. Jeśli jest na goło sformatowana na 16GB to komunikat jest podobny tyle, że widzi około 2,8GB... ale kartę widzi.
    Natomiast w żadnym wypadku nie wyświetla już listy plików, nawet jeśli tam są!


    Komunikat dla karty 2GB:

    Initializing SD card...Wiring is correct and a card is present.

    Card type: SD2
    Could not find FAT16/FAT32 partition.
    Make sure you've formatted the card

    A to komunikat dla każdej z moich kart (nawet dla tych widocznych w CardInfo) w programie DataLogger:

    Initializing SD card...Card failed, or not present
    error opening datalog.txt

    W każdym innym nawet najprostszym dataloggerze nie wykrywa karty.

    Przykładowy najprostszy datalogger:

    #include <SPI.h>
    #include <SD.h>

    File plik;

    void setup() {

    SD.begin(4);
    plik = SD.open("test.txt", FILE_WRITE);
    plik.println( "testowanie" );
    plik.close();

    }

    void loop() {

    }


    Proszę o pomoc - nie wiem gdzie utknąłem :(

    pozdrawiam, Pawel

  • #2 02 Mar 2017 19:57
    aafr
    Poziom 10  

    Witaj,
    - to jest nieźle bo ja męczę się od 5 dni z dwiema różnymi kartami - na netbooku pod "Win7 Starter" pokazują się jako napędy, ale kilkanaście programów (w tym pod linuxem) zgłasza brak komunikacji (lub pojemność 512 kB i brak komunikacji....) + brak tabeli partycji i nie da się nic zapisac ...
    A czytałem w necie ze często to może być błąd programowy tj. uszkodzona tabela translacji w oprogramowaniu mikrokontrolera karty...(>> jak nie wiesz to mniej więcej z opisu : " zawiera dane do algorytmu adresowania komórek pamięci w celu równomiernego ich zużywania - zachowania jednakowej ilości cykli zapis/odczyt na wszystkich komórkach - w celu wydłużenia czasu życia karty z pełną sprawnością "
    błąd taki może powstać w czasie nagłego odłączenia karty w momencie jej komunikacji z urządzeniem w którym pracuje lub zaniku zasilania w tym momencie lub namieszania w niej przez wirusa

    Specjalistyczne serwisy dobierają się fizycznie do samej struktury pamieci flash (podłączają ja fizycznie do odpoweidniego 'fejsu" , i odtwarzając tę tabelę przy pomocy odpowiedniego softu - mogą dotrzeć do danych ; inaczej nie wiadomo w której komórce siedzi kolejny fragment pliku (ów) i można zaczytać li tylko "siano"

    - w moim przypadku chyba sie poddam bo brak dalszych koncepcji :cry:

  • #3 20 Mar 2017 09:33
    Szumlus
    Poziom 17  

    Witam,
    Na Arduino to raczej nie zadziała z ich bibliotekami :)
    Miałem podobny problem (zlecenie od kolegi - warunek ma być na Arduino). Po kilku dniach męki z bibliotekami i "wiringiem" (czy czymś takim) pobrałem FatFs i napisałem w 100% działający datalogger w pół dnia - do tego obsługa LCD 2x16, UART oraz kolejnego scalaka po SPI(z niego czytałem dane do datalogger'a) plus trochę przeliczeń matematycznych. Całość zamknęła się w około 60/60% RAM/FLASH.
    W środowisku Arduino IDE sama obsługa LCD i karty SD "zjadła" podobną ilość. Nie mówiąc już o reszcie rzeczy które miał robić procek - zabrakło by zasobów "megi" 328. Pomijam fakt iż to nie działało.
    Nie mówię już o rekonfiguracji SPI w "locie" pomiędzy zapisem danych na kartę a odczytem danych (inna prędkość transmisji i polaryzacja zegara) - w C prosto łatwo i przyjemnie.

    Pozdrawiam,
    Marcin

  • #4 20 Mar 2017 12:45
    trol.six
    Poziom 30  

    Ja nie wiem ile to zajmie, ale tutaj kolega uruchomił na Arduino Mega:
    https://www.elektroda.pl/rtvforum/topic3316686.html

    A Arduino ma jakieś wersje? Tutaj jest obsługa fat od wersji 1.6
    https://github.com/greiman/SdFat

    Niby Arduino UNO, winno być wystarczające.

    Może też kwestia partycji i formatowania? Ja miałem kiedyś problem z pewnym sprzętem, mimo iż inny sprzęt problemów nie miał. Spróbuj założyć od nowa partycje i sformatować innym programem.

    Jak masz np aparat do zdjęć, które mogą formatować karty, to użyj go, zobacz efekt.

  • #5 21 Mar 2017 11:04
    Szumlus
    Poziom 17  

    Bez opcji jakiegokolwiek debuga ciężo ruszyć temat. Biblioteka arduino działa lub nie. FatFs przynajmniej jakieś kody błędów jest w stanie zwrócić.
    W tej chwili raczej nie wiadomo gdzie "siedzi" problem.
    Może format plików, może coś niżej (problem z SPI? za szybko? problem z poziomami napięć? - trochę gdybanie).

    Proponuję uruchomić jednak FatFs przez UART można prosto wysłać kod błędu, ewentualnie dodać swoje do listy enuma i dopisać parę linijek w kodzie. Od razu wyjdzie gdzie szukać problemu.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME