' Declare here you SPI-Mode
' using HW-SPI:     cMMC_Soft = 0
' not using HW_SPI: cMMC_Soft = 1
Const cMMC_Soft = 0
#IF cMMC_Soft = 0
' --------- Start of Section for HW-SPI ----------------------------------------
   ' define Chip-Select Pin
   Config PinB.4 = Output                                   ' define here Pin for CS of MMC/SD Card
   Mmc_cs Alias PortB.4
   Set Mmc_cs
   ' Define here SS Pin of HW-SPI of the CPU (f.e. Pinb.0 on M12

   ' If an other Pin than SS is used for MMC_SS, SS must be set to OUTPUT and high for proper work of SPI
   ' otherwise 
AVR starts SPI-SLAVE if SS-Pin is INPUT and goes to LOW
   Config Pinb.4 = Output                                   ' define here Pin of SPI SS
   Spi_ss Alias PortB.4
   Set Spi_ss                                               ' Set SPI-SS to Output and High por Proper work of
                                                            ' SPI as Master
   ' HW-SPI is configured to highest Speed
   Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
'   Spsr = 1                                       ' Double speed on ATMega128
   Spiinit                                                  ' Init SPI
' --------- End of Section for HW-SPI ------------------------------------------
#ELSE                                                       ' Config here SPI pins, if not using HW SPI
' --------- Start of Section for Soft-SPI --------------------------------------
   ' Chip Select Pin  => Pin 1 of MMC/SD
   Config PinB.3 = Output
   MMC_CS Alias PortB.3
   Set MMC_CS
   ' MOSI - Pin  => Pin 2 of MMC/SD
   Config PinB.5 = Output
   Set PinB.5
   MMC_PortMOSI Alias PortB
   bMMC_MOSI Alias 5
   ' MISO - Pin  => Pin 7 of MMC/SD
   Config PinB.6 = Input
   MMC_PortMISO Alias PinB
   bMMC_MISO Alias 6
   ' SCK - Pin  => Pin 5 of MMC/SD
   Config PinB.7 = Output
   Set PinB.7
   MMC_PortSCK Alias PortB
   bMMC_SCK Alias 7
' --------- End of Section for Soft-SPI ----------------------------------------
#ENDIF
' ========== End of user definable range =======================================
' Error
Const Cperrdrivereset = 225                                 ' Error response Byte at Reset command
Const Cperrdriveinit = 226                                  ' Error response Byte at Init Command
Const Cperrdrivereadcommand = 227                           ' Error response Byte at Read Command
Const Cperrdrivewritecommand = 228                          ' Error response Byte at Write Command
Const Cperrdrivereadresponse = 229                          ' No Data response Byte from MMC at Read
Const Cperrdrivewriteresponse = 230                         ' No Data response Byte from MMC at Write
Const Cperrdrive = 231
Const Cperrdrivenotsupported = 232                          ' return code for DriveGetIdentity, not supported yet
Waitms 1                                                    ' Wait some time before initialising MMC/SD
Dim Gbdriveerror As Byte                                    ' General Driver Error register
Dim Gbdriveerrorreg As Byte                                 ' Driver load Error-Register of HD in case of error
Dim Gbdrivestatusreg As Byte                                ' Driver load Status-Register of HD on case of error
Dim Gbdrivedebug As Byte
$lib "MMC.LIB"                                              ' link driver library
$EXTERNAL _mmc
Gbdriveerror = Driveinit()                                  ' Init MMC/SD Card
			
		
 
	
Lesezeichen