dann stimmt die initialisierung der SPI nicht.
scheinbar ist der Port als Ausgang konfiguriert
und du ziehst den auf 0 bzw. 5V
Die Karte sollte ja nur die 3V3 ausgeben als Highpegel.
Dein Programmablauf gefällt mir
persönlich auch nicht so besonders ... goto meide ich
wie der Teufel das Weihwasser ... Do Loop Until ist
mir persönlich sympatischer
seltsamerseise wird die SPI aber in der Lib deklariert:Code:$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 64 $baud = 9600 Declare Sub Sramdump(byval Pwsrampointer As Word , Byval Pwlength As Word) Dim Berror As Byte Dim Abuffer(512) As Byte ' SRAM-Bereich für den Transfer Dim Wsrampointer As Word ' Adress-Pointer für den Drive... Routine Dim Lsectornumber As Long ' Variable für Sektor-Nummer do $Include "Config_MMC.bas" '$Include "Config_XRAMDrive0.bas" ' Zum Testen mit dem Simulator If Gbdriveerror <> 0 Then Print "MMC/SD Initialisierung fehlgeschlagen" End If loop until Gbdriveerror <> 0 do ' Adresse des Buffers in die Variable Wsrampointer = Varptr(abuffer(1)) ' Die ersten 100 Sektoren ausgeben For Lsectornumber = 0 To 100 Berror = Drivereadsector(wsrampointer , Lsectornumber) ' Konnte der Sektor eingelesen werden? If Berror > 0 Then Print "Drive Fehler: " ; Berror ; " bei Sektor " ; Lsectornumber Exit For End If Print "Sektor " ; Lsectornumber ' Sektor ausgeben Sramdump Wsrampointer , 512 Next loop End
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spiinit ' Init SPI








Zitieren

Lesezeichen