hallo, ich habe ein programm mit fastavrbasic um die mmc-karte zu
beschreiben.
ich kann die karte mit diesem code beschreiben, aber immer auf sector 0,
obwohl ich sector 3 angebe.
die schiebefunktionen habe ich mit bascom ausprobiert , sind die
gleichen wie mit fastavr, die einzelnen werte stimmen für den
übergabebuffer überein.
mit bascom kann ich die karte ordentlich beschreiben , es wird der
sector 3 beschrieben.
was sztimmt da nicht ??hm..
der code :
$Device = M32
$Stack = 32
$Clock = 8
$Baud = 19200
$ShiftOut Data=PORTB.1, Clock=PORTB.3, Msb
$ShiftIn Data=PORTB.2, Clock=PORTB.3, Msb
Declare Sub Mmc_init()
Declare Sub Mmc_write()
Dim Dout As Byte
Dim Din As Byte
Dim A As Word
Dim Cmd(6) As Byte
Dim Buffer(515) As Byte
Dim Tmp As Long
Dim Sector As Long
$Def Mcs =PORTB.0
$Def Sck =PORTB.3
DDRB.0=1
WaitMs 255
Sector = 3
Buffer(0) = &HFE
Buffer(513) = &HFF
Buffer(514) = &HFF
For A = 1 To 512
Buffer(a) = 71
Next
Mmc_init()
WaitMs 255
Mmc_write()
End
Sub Mmc_init()
Set Mcs
Dout = &HFF
For A = 0 To 10
ShiftOut Dout
Next
Anfang:
Reset Mcs
Cmd(0) = &H40
Cmd(1) = 0
Cmd(2) = 0
Cmd(3) = 0
Cmd(4) = 0
Cmd(5) = &H95
For A = 0 To 5
ShiftOut Cmd(a)
Next
Dout = &HFF
ShiftOut Dout
din=ShiftIn
If Din <> 1 Then
GoTo Anfang
End If
Print Din
Anfang1:
Cmd(0) = &H41
Cmd(1) = 0
Cmd(2) = 0
Cmd(3) = 0
Cmd(4) = 0
Cmd(5) = &HFF
For A = 0 To 5
ShiftOut Cmd(a)
Next
Dout = &HFF
ShiftOut Dout
din=ShiftIn
If Din <> 0 Then
GoTo Anfang1
End If
Print Din
Set Mcs
End Sub
Sub Mmc_write()
Set Mcs
cmd(0)=&h58
cmd(1)=0
cmd(2)=0
cmd(3)=0
cmd(4)=0
cmd(5)=&hff
Sector= Shift(Left,9,Sector)
tmp=Sector & &hff000000
cmd(1)=Shift(Right,24,tmp)
tmp=Sector & &h00ff0000
cmd(2)=Shift(Right,16,tmp)
tmp=Sector & &h0000ff00
cmd(3)=Shift(Right,8,tmp)
Anfang2:
Reset Mcs
For A = 0 To 5
ShiftOut Cmd(a)
Next
Dout = &HFF
ShiftOut Dout
din=ShiftIn
If Din <> 0 Then
GoTo Anfang2
End If
Print Din
Dout = &HFF
ShiftOut Dout
For A = 0 To 514
Dout = Buffer(a)
ShiftOut Dout
Next
WaitUs 10
din=ShiftIn
Print Din
Dout = &HFF
ShiftOut Dout
Set Mcs
End Sub
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.