mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sector 1 wird nur beschrieben obwohl ich die 3 angebe


Autor: neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.