Arduino: Hur känna av om SD kort sitter i hållaren?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Bigstone
Inlägg: 582
Blev medlem: 22 september 2004, 13:04:12
Ort: Linköping

Arduino: Hur känna av om SD kort sitter i hållaren?

Inlägg av Bigstone »

Bygger en liten logger baserad på en Arduino MEGA 2560 som ska lagra all data till ett microSD kort men skulle behöva känna av om minneskortet sitter i sin hållare eller inte.
Har en ethernet modul, den tidigare modellen, med en minneskortshållare men kan inte se att det finns någon pinne eller funktion för det som jag söker. Sökt på nätet men inte hittat många ledtrådar.
Har jag missat något eller är det bara så att jag måste skaffa en annan minneskortshållare med CD SW (eller vad det nu kan heta)?
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Arduino: Hur känna av om SD kort sitter i hållaren?

Inlägg av lillahuset »

Nu vet ju jag i praktiken inget om Arduino men det borde väl inte skilja så mycket från andra system.

Ett vanligt sätt att ta reda på om det finns ett SD-kort eller ett USB-minne eller något annat lagringsmedium är att försöka läsa från det.

Om det finns ett filsystem kan man försöka läsa directorystrukturen. Funkar det inte så finns det troligen inget SD-kort.
Om det inte finns ett filsystem får man förhoppningsvis ett fel om man läser när det inte finns ett SD-kort.
zealotry
Inlägg: 918
Blev medlem: 9 oktober 2004, 22:28:40
Ort: Västerås

Re: Arduino: Hur känna av om SD kort sitter i hållaren?

Inlägg av zealotry »

Eller bara SD.Begin() rakt av, lär returnera false om det inte finns något kort i?

Finns det ingen card detect-pinne så blir det nog svårt att lösa det utan att polla..
Användarvisningsbild
Bigstone
Inlägg: 582
Blev medlem: 22 september 2004, 13:04:12
Ort: Linköping

Re: Arduino: Hur känna av om SD kort sitter i hållaren?

Inlägg av Bigstone »

Tack för goda råd!
SD.begin() har jag provat med och det fallerade då det bara gick att initiera kortet en gång, efter det blir det fail. Hittat något om att det är en bugg i lib'et, kan funka att först köra if(root.isOpen()) root.close(); och sedan köra SD.begin() efter det.

SDexist() ska jag prova med!

Är analog i tanken så det här med programmering är lite nytt tänk för min del.
Tanken inombords är väl att det skulle varit enklare att ha möjligheten att kolla ren "fysiskt" med en pinne att om minneskortet inte satt där så kunde man skippa initieringen och direkt tala om att "Inget kort i hållaren. Gör om gör rätt!" och att programmet stannade där tills pinnen för "kort på plats" gick hög så man kunde fortsätta.

Idag kan jag plocka ut kortet under gång och programmet märker inte av det! (Antagligen en bugg som jag själv lyckats ordna med. :-P)
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Arduino: Hur känna av om SD kort sitter i hållaren?

Inlägg av lillahuset »

Om du hanterar fel vid öppning av fil borde du se problemet omedelbart.
Användarvisningsbild
hawkan
Inlägg: 2586
Blev medlem: 14 augusti 2011, 10:27:40

Re: Arduino: Hur känna av om SD kort sitter i hållaren?

Inlägg av hawkan »

Processorn och SD kommunicerar med SPI. Och kommunicerar gör de bara när du begär det.
Så att byta kort i flykten kan gå bra. Om det sparas info om kortet som sitter/satt i kan det så klart gå illa...

Korthållare brukar ha en anslutning som indikerar om ett kort sitter i eller ej. Det behöver inte användas,
men om du gör kort och program själv så är det inget som hindrar att kolla en pinne.
Om SD.exists() levererar kommunikationsfel så är det lika bra som något att detektera om kortet sitter i antar jag,
Skriv svar