PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SD-Karte programm lässt sich nicht übersetzen - BASCOM-Bug?



Bauteiltöter
17.04.2010, 16:51
Hi,

Ich habe heute versucht, eine SD-Karte (2GB) mit Bascom zu beschreiben.
Bei dem Code habe ich mich an dieses PDF (http://staff.ltam.lu/feljc/electronics/bascom/Speicherkarten_Low_Level.pdf) gehalten.

Leider lässt sich das programm garnicht erst kompilieren und mit den Fehlern die BASCOM ausspuckt kann ich nichts anfangen.
Hier ist der Code:


$regfile = "M2560def.dat"
$crystal = 16000000
$framesize = 100
$swstack = 100
$hwstack = 100

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 20 * 4


Waitms 10
Initlcd
Waitms 10
Lcd "Hallo Welt!"

Dim Sdbuffer(512) As Byte
Dim Wsrampointer As Word
Dim Temp As Word

Config Portb.4 = Output ' define here Pin for CS of MMC/SD Card
Mmc_cs Alias Portb.4
Set Mmc_cs

' 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.0 = Output ' define here Pin of SPI SS
Spi_ss Alias Portb.0
Set Spi_ss ' Set SPI-SS to Output and High por Proper work of
' SPI as Master

Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1

Spiinit ' Init SPI

' ‘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

$lib "MMC.LBX" ' link driver library
$external _mmc

Dim I As Word
Dim Sectornr As Long
Wsrampointer = Varptr(sdbuffer(1))

Gbdriveerror = Driveinit() ' Init MMC/SD Card
Cls
Lcd "Init: "
Lcd Gbdriveerror

For Temp = 1 To 512
Sdbuffer(temp) = 102
Next
Locate 2 , 1
Lcd "vorbereiten..."

Sectornr = 528

Gbdriveerror = Drivewritesector(wsrampointer , Sectornr ) 'dauert 25ms
Locate 3 , 1
If Gbdriveerror = 0 Then
Lcd "512 Bytes geschrieben"
Else
Lcd "Fehler "
Lcd Gbdriveerror
Lcd " schreiben"
End If

Locate 4 , 1
Lcd "Ende"

End


und hier die Fehlerausgaben:

Am Anfang wurden nur die beiden ersten Fehler angezeigt, aber dann habee ich in der mmc.lib rumgefummelt und dann sind diese Fehler aufgetaucht. Ich habe alles wieder zurückgeändert, aber die Fehler sind geblieben.
Ich habe auch keine Sicherung gemacht.
Asche auf mein Haupt ](*,) ](*,)

Könnte mir jemand die mmc.lbx oder mmc.lib schicken?
Ich habe die Vollversion 1.11.9.3

chr-mt
17.04.2010, 23:24
Hi, die Libs findest du hier:
http://members.aon.at/voegel/

Gruß
Christopher

Bauteiltöter
18.04.2010, 16:33
Vielen dank, mit den neuen Libs funktioniert jetzt alles.
Der ursprüngliche Fehler war, das "Const cmmc = 0|1" fehlte.

Jetzt geht alles :)