Wczoraj pisałem, że próbuję walczyć z uruchomieniem karty SD na PIC32. Kod niby sprawdzony i przetestowany (FatFS) a u mnie pojawiały się jakieś dziwne problemy z inicjacją pracy karty. Chwilę zajęło mi dojście do tego, że błąd najpewniej nie jest programowy, a sprzętowy. Na chwilę obecną w przypadku braku karty w slocie funkcja f_open zwraca błąd 3 (). Gdy karta jest w slocie pojawia się błąd 13 ().
Początkowo szukałem winy po stronie karty albo konfiguracji biblioteki. Okazuje się jednak, że od czasu do czasu (raz na kilkadziesiąt przełożeń karty/restartów całego układu) układ zaczyna pracować prawidłowo, zapisując dane na karcie bez zgłaszania jakichkolwiek błędów.
Pomyślałem, że winę może ponosić brak kluczowana zasilaniem karty, w związku z czym nie jest wykonywany pełen cykl jej resetu przy inicjacji. Podłączyłem więc kartę do zasilania przez tranzystor PNP i filtr LC (10uH, 1uF) - identyczny układ stosowałem w moich projektach na AVR-ach, z którymi nie miałem żadnych problemów. Gdy tranzystor był w stanie przewodzenia wszystko wyglądało dobrze - na pienie VCC było około 3,2V. Jednak po wyłączeniu tranzystora okazało się, że napięcie nie spada do zera, ale utrzymuje się na stałym poziomie około 2,5V.
Rezystory podciągające linie CS i CD były podpięte do plusa zasilania ZA tranzystorem, a pomimo tego napięcie się tam pojawiało. Żadne wewnętrzne pull-upy w mikrokontrolerze nie były aktywne. Efekt pojawia się także po fizycznym usunięciu tranzystora. Nie występuje, gdy kartę wyjmę ze slota - wówczas napięcie spada do zera.
Jakiś pomysł skąd się berze taki efekt?