Liebe Mit-Bastler, ich hatte ja schon geschrieben, daß ich mich mit CF-Karten beschäftigen will. Jetzt gibt es erste kleine Ergebnisse, aber auch Fragen. Ich schreibe hier weiter, weil der alte Thread eine falsche Kopfzeile hat (SD statt CF). Beitrag "SD-Karte und RDY-Signal (Pin 37)" Zuerst habe ich mich gefragt, wie ich die Karte kontaktiere. Da gibt es bei eBay so CF zu IDE -Adapter. Habe ich gleich ganz euphorisch bestellt für < 5 Euro schon inkl. Versand - dann gesehen, daß die Teile aus Hongkong kommen und ich warten muß *ärger, selbst ausgetrickst*. Zum Leiterplattenmachen (belichten, ätzen usw.) hab ich nichts zu Hause - ich arbeite lieber auf einem Breadboard. Also ein Mega 16 (DIP40, toll zum Basteln) draufgesteckt. Weil ich ungeduldig war und die CF-Karte schon hatte, hab ich einfach passend dünnen Draht gesucht und "zu Fuß" kontaktiert, siehe Foto. Lacht nicht! Die Leitungen hab ich dann an der Karte mit Klebeband fixiert (siehe Foto, Anfangsstadium). Funktioniert, aber Nachteil: Man kann die Karte nicht mehr ohne erheblichen Aufwand in einen Kartenleser stecken, aber die Karte ist ja nur zum Testen. Schon wieder blöd angestellt hab ich mich trotzdem: Hab die Karte gebraucht und ungetestet bekommen und sie nicht im Kartenleser vorher ausprobiert! Naja, die Hoffnung besteht, daß sie funktioniert.. :-) Die Beschaltung ist prinzipiell so, wie hier angegeben, nur daß ich einen Mega16 dran habe (Portbelegung siehe Programm im Anhang) http://www.mikrocontroller.net/attachment/6746/compactflashOnPicArticle.pdf Also hab ich ein kleines Programm geschrieben, und erstmal versucht, die Register zu schreiben und zu lesen. Wer mal schauen will, Programm ist anbei (Entschuldigung für den etwas widerlichen deutsch-englisch-Mix). Ausgabe des Programms im Terminal: Start CF-Test Karte gesteckt Bereit (Signalleitung) test2 F6 test3 00 test4 04 test5 05 test6 F6 Wie man sieht (wenn man ins Programm schaut), funktioniert das bei Register 2 und 3 nicht, bei 4-6 schon.. Seltsam. Evtl. noch Daten in einem Puffer und der Fehler kommt nur, weil ich 2 und 3 zuerst gelesen habe? Naja ich werde weiter untersuchen und mich dann wieder melden. Aufgetauchte Fragen: 1) Die RDY-Leitung zeigt mir, daß die Karte bereit ist, das Statusregister andererseits (das ich vorher mit einem modifizierten Programm untersucht habe) steht permanent auf 50 (hex) - dies würde doch bedeuten, die Karte ist Busy, oder? 2) Mir ist so als hätte ich gelesen, daß die Register 16bit breit sind - muß ich da irgendwie 2x lesen? Evtl. stimmt das auch einfach nicht.. 3) Der Code vertraut darauf, daß die Karte im PC-Card-Modus betrieben wird - allerdings - wie wird der eingestellt? In Datenblatt steht immer, was verschiedene Pins in welchem der 3 Modi bedeuten, aber irgendwie hab ich überlesen, wodurch die Modi eingestellt werden..? Sachdienliche Hinweise zu 1 bis 3 werden gerne entgegengenommen.. :-)
> Sachdienliche Hinweise zu 1 bis 3 werden gerne entgegengenommen.. :-)
Warte auf den CF-Adapter aus Hongkong.
Bitte, gerne.
Kannst du wenigstens einen Schaltplan reinstellen und einen Link zur CFspec, hab meine gerade nicht hier. 1. Die RDY Leintung kannst du auswerten, das Statusregister enthält nur richtige Informationen wenn du richtig zugreifst und dies ist nicht sicher! 2. ja funktioniert aber nur wenn die Karte im 8Bit modus ist ,ansonsten alles (D0..D15)auswerten. 3. über 2 Pins siehe CFspec Könnest du mal angeben auf WAS du eigentlich zugreifen willst. Da gibt es ja auch noch einen Attributspeicher oder sollen es die IDE Register sein? Dein Programm ist da nicht sehr hilfreich.
Danke fuer den Link, aber ich habe schon genügend Spam in der Mailbox... früher gabs die mal, bei SANDISK aber die Seiten sind auch nur bunter geworden...
oh sorry, früher gabs die da glaube ich auch mal ohne Reg, war schon lange nicht mehr da. Aber für solche Fälle hat man doch eine Wegwerf-Adresse beim Freemailer... Ich habe noch ein älteres Doc von SanDisk auf der Platte gehabt, ist im Anhang. Zum Thema: kann es sein das die Adressleitung A02 'klemmt' ?
Das mit der A2-Leitung werde ich prüfen. Die CF-Karte ist so beschalten wie im zweiten, oben angegebenen Link. Das Datenblett aus dem Link von JoJoS ist etwas anders als meins (übersichtlicher..) Muß nochmal nachlesen, wie das mit den Modes funktioniert. Ich will auf die Steuerregister (0 bis 7 bzw. 0 = Data, ...,..., 7 = Status / Command) zugreifen. In Register 0 werden also später die Daten zum Lesen / Schreiben drinstehen.
Noch etwas anschaulicher: die CF-Karte ist genau so angeschlossen wie hier, http://members.aon.at/voegel/Downloads/Driver/CF_HD/CompactFlash_Schematic.gif zusätzlich ist noch RDY/BSY mit PinD.6 verbunden
ist es die alte Falle mit dem JTAG Interface das per Fuses aktiviert ist ?Auffälligerweise beginnt das gerade bei PortC.2 und da ist auch die A2 angeschlossen.
Die Fuses sind noch im Lieferzustand (internet Oszillator, 1MHz, ...) Habe gerade nachgelesen: Datenblatt Seite 217 sagt, daß JTAG standardmäßig eingeschaltet ist - Daran könnte es also tatsächlich liegen! Hatte bisher immer kleinere AVRs ohne JTAG, da kannte ich diese "Falle" noch nicht.. Ich probiere gleich heute abend..
JoJoS, Du bist der Held des Tages - ich hab JTAG "weggefused" und schon hat alles funktioniert! Ich hab mein Programm ein bischen werweitert, Sektoren geschrieben und prüfgelesen - alles prima. So mußte ich also nicht mal warten, bis ich meinen Oszi wiederhabe, um zu sehen, daß an der A2 Müll 'rauskommt. Wenn ich so darüber nachdenke, wie lange ich mit den SD-Karten probiert habe, bis es funktioniert hat mit CMD0, CMD1 usw. (und dann zicken einige spezielle Karten immer noch) - Da ging das irgendwie zu einfach :-) Im Anhang hab ich nochmal ein Foto von der absoluten "low budget"-Variante für "ganz viel Speichern am uC". Von den (jeweils verschiedenen) Transportkosten abgesehen, kosten Chip und Karte (letztere gebraucht bei eBay) zusammen gerdae mal 5 Euro.. (ist eine 16MB Karte) Jetzt werd ich mal einen Quarz anschließen und die zeitkritischen Stellen in Assembler umbauen - mal sehen, wie weit sich die Karte von der Geschwindigkeit reizen läßt. Eine Frage allerdings bleibt - ich nutze ja die RDY - Leitung, um festzustellen, ob die Karte bereit ist. Wenn ich stattdessen das Statusregister lesen wollte - es steht immer auf 50 Hex. Das höchstewertige Bit (siehe Datenblatt oben Seite 47) wiederum bedeutet BUSY, und wenn dem so ist sollen andere Bits ungültig sein (Also auch bit 6, RDY). andererseits kann ich ja trotzdem immer lesen und schreiben - da ist wohl irgendein Denkfehler. Mit welchen Beinchen ich jetzt den funktionierenden Modus eingestellt haben weiß ich auch nicht so recht, ist mir aber jetzt auch nicht mehr so wichtig :-) Viel Spaß beim Basteln weiterhin!
Gestern ist nun mein Adapter (CF auf IDE) angekommen. Prima, dachte ich, gleich mal durchmessen. Siehe da: mein o.g. Programm, mit dem alles so super läuft, muß modifiziert werden: Der Adapter zieht die OE-Leitung auf Masse - Nachlesen brachte die Erkenntnis, daß die Karte dann im "TRUE IDE MODE" arbeitet. (Was bei einem CF zu IDE-Adapter ja nicht so abwegig ist.. :-). Also hab ich gesehen, daß ich statt WE und OE jetzt IORD und IOWR benutzen muß. Eine gute Erklärung fand ich in diesem Artikel: http://www.compuphase.com/mbr_fat.htm Jetzt bleibt noch herauszufinden: Kriege ich es mit diesem Adapter (also im "TRUE IDE MODE") hin, daß ich die Daten mit 8 bit statt mit 16bit übertragen kann? Wenn ja, wie? Ich hab zwar im Datenblatt nachgeschaut, aber da krieg ich immer vor lauter Tabellen so Schwindelanfälle .. :-) Naja evtl. vergeht das noch. Aber wenn das schonmal jemand gemacht hat, wäre ein Tip sehr nett.
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.