Forum: Mikrocontroller und Digitale Elektronik problem mit der hama-mmc-karte


von bastler (Gast)


Lesenswert?

hallo, ich habe eine hama 128mb und eine kingstorm128mb.

mit diesen werten unten betreibe ich eine kingstorm-karte die 
funktioniert wunderbar.

wenn ich eine hama-karte einlege funktioniert die erst, wenn ich bei 
cmd(5) den wert von &hff auf "0" ändere.

und das curiose ist alle werte werden mit 2 multipliziert. wenn ich den 
datenwert 65 eingebe wird 130 in den sector reingeschrieben und wenn ich 
zb den wert 35 eingebe steht inder hama-karte der wert 70 drin. weiss 
nicht mehr weiter.

idle-mode:
Cmd(0) = &H40
Cmd(1) = 0
Cmd(2) = 0
Cmd(3) = 0
Cmd(4) = 0
Cmd(5) = &H95

init:
Cmd(0) = &H41
Cmd(1) = 0
Cmd(2) = 0
Cmd(3) = 0
Cmd(4) = 0
Cmd(5) = &Hff

schreiben :
cmd(0)=&h58
cmd(1)=0
cmd(2)=0
cmd(3)=0
cmd(4)=0
cmd(5)=&hff

lesen:
cmd(0)=&h51
cmd(1)=0
cmd(2)=0
cmd(3)=0
cmd(4)=0
cmd(5)=&hff

von bastler (Gast)


Lesenswert?

hardware : atmega32 8mhz mit mmc-karten-halter.

von Olaf (Gast)


Lesenswert?

> und das curiose ist alle werte werden mit 2 multipliziert.

Das wuerde mich vermuten lassen das du bei der Programmierung des 
Treibers
das Datenblatt der Karte nicht aufmerksam genugt studiert hast und dich 
nicht genau an das Timing haelst. (alle Daten um 1Bit verschoben)
Oder du verwendest den Treiber den jemand anderer geschrieben hat ohne 
ihn zu verstehen. Auch nicht gut.

Mit das erste was ich in meinen Anwendungen mache ist es den CRC 
einzuschalten. Kann ich nur weiterempfehlen. So bekommt man wenigstens 
ein winziges Minimum an Datensicherheit.

Olaf

von bastler (Gast)


Lesenswert?

wie wird dann das timing am pc für die karte bereitgestellt? da laufen 
alle karten wunderbar ohne störung, nur nicht am microboard.

von tommi (Gast)


Lesenswert?

Ich hatte auch mit einer Hama-Karte Probleme. Über 20 andere Karten 
liefen ohne Probleme. Ich habe dann eine Weile rumgemessen und habe 
festgestellt, dass sich die Hama-Karte nicht exakt an die Timings hält. 
Ich empfehle Dir, die Timings der Karte großzügig zu handhaben.

Ob Dein Problem, dass Du alles um ein Bit geshiftet bekommst, damit 
zutun hat, kann ich Dir mit den wenigen Infos von Dir leider nicht 
sagen.

von bastler (Gast)


Lesenswert?

hallo, dein tip ist der entscheidenden : timing grosszügig handhaben !!!

hatte jetzt die karte gestestet mit : fastavr-basic, winavr-c und 
bascom.

und natürlich das langsamste bzw das ungenauste in den zeitbefehlen, 
dieses bascom funktioniert.

nur winavr-c und fastavr , dieses haben ein sehr genaues timing, hier 
funktionieren nicht alle karten.

wo muss man denn nun das timing grosszügig halten?

mfg

von bastler (Gast)


Lesenswert?

dieses sind die shift in fastavrbasic , shift_i = shiftin und shift_o 
ist shiftout, mit der kingstorm-karte geht es:

Sub shift_i()
$Asm
    ldi    r24,0x08
_Si2:  clc
    sbi    PORTB,3
    sbic  PINB,2
    sec
    rol    zl
    cbi    PORTB,3
    dec    r24
    brne  _Si2
    sts din,zl
$EndAsm
End Sub

Sub shift_o()
$Asm
        lds    zl,dout
    ldi    r24,0x08
_So22:  rol    zl
    brcc  _So11
    sbi    PORTB,1
    rjmp  _So33
_So11:  cbi    PORTB,1
_So33:  sbi    PORTB,3
    dec    r24
    cbi    PORTB,3
    brne  _So22
    cbi    PORTB,1
$EndAsm
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
Noch kein Account? Hier anmelden.