Wykonałem z ciekawości płytkę do komunikacji z kartą SD bo jeszcze nie miałem z tym do czynienia. Zaopatrzyłem ją w procesor atm32, wyświetlacz od nokii 6100 aby mieć wieksze pole do popisu. Na płycie jest także podświetlenie wykonane na przetwornicy. Do procesora podłączone są linie do komunikacji z kartą po SPI. Lecz czego się spodziewałem karta milczy. Program działa do momentu gdy karta ma zwrócić odpowiedz w postaci &H01, zwraca zawsze &H00. Testowałem kilka kart. Proszę o podpowiedz. Wyskrobałem taki kod:
$lib "lcd-epson.lbx"
$include "nowa.font"
$regfile = "m32def.dat"
$crystal = 8000000
Config Pinc.3 = Input 'Czujnik karty
Config Pinc.4 = Input 'Czujnik WP
Config Pind.2 = Output 'LED
Config Pind.7 = Output 'MOSI
Config Pinc.0 = Output 'CLK
Config Pind.6 = Output 'CS
Config Pinc.1 = Input 'MOSI
Reset Portd.2
Reset Portd.7
Reset Portd.6
Reset Portc.0
Cs Alias Portd.6 'cs
Clk Alias Portc.0 'clk
Miso Alias Portc.1 'input
Mosi Alias Portd.7 'output
Dim Dat As Byte
Dim Resp As Byte
Dim I As Byte
Const Msbl = 0
Config Graphlcd = Color , Controlport = Porta , Cs = 3 , Rs = 0 , Scl = 2 , Sda = 1
Const Blue = &B00000011
Const Yellow = &B11111100
Const Red = &B11100000
Const Green = &B00011100
Const Black = &B00000000
Const White = &B11111111
Const Brightgreen = &B00111110
Const Darkgreen = &B00010100
Const Darkred = &B10100000
Const Darkblue = &B00000010
Const Brightblue = &B00011111
Const Orange = &B11111000
Glcdcmd &H81
Glcddata 42
Glcddata 3
Cls
Box(0 , 0) -(132 , 132) , Black
Wait 1
Setfont Nowa
If Pinc.3 = 0 Then
Lcdat 5 , 5 , "Karta siedzi" , White , Black
If Pinc.4 = 1 Then
Lcdat 22 , 5 , "Karta WP" , White , Black
End If
Else
Lcdat 5 , 5 , "Brak karty" , White , Black
End If
Wait 1
Waitms 300
Config Spi = Soft , Din = Pinc.1 , Dout = Portd.7 , Ss = Portd.6 , Clock = Portc.0
Spiinit
Set Cs
For I = 1 To 10
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Next I
Reset Cs
Resp = 255
Cmd0:
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Dat = &H40
Shiftout Mosi , Clk , Dat , Msbl
Dat = &H00000000
Shiftout Mosi , Clk , Dat , Msbl
Dat = &H95
Shiftout Mosi , Clk , Dat , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
While Resp <> &H01
Shiftin Miso , Clk , Resp , Msbl
Wend
Set Cs
Lcdat 50 , 5 , "C0:" ; Hex(resp) , White , Black
End