Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega8 auf USB Memory Stick
Möchte mit einem Mega8 und (idealerweise) BASCOM Daten auf einen USB Memory Stick schreiben. Das Speichern soll natürlich das Auslesen des Sticks durch einen PC unterstützen. Gibt es jemanden, der mir hier einen guten Tip zur Hard-und Software geben kann?
Huge
Also:
Nochmal: du willst mit einem ATMEGA8 direkt auf einen USB-Stick schreiben?
Das funktioniert nicht! Es gibt Chips die von USB -> RS232 konvertieren (FTM-Serie) aber umgekehrt gibt es noch keine.
Martin
Tatsächlich? Dachte, ich hätte sowas schonmal gesehen, aber vielleicht wars tatsächlich andersrum. Stell ich mir eh komplizierter vor, da der USB ja etwas komplexer ist. Von wegen ADresse und so.
MFg Moritz
Ich habs glaub schon mal irgendwo geschrieben, aber egal.
Wenn du auf einen USB Stick zugreifen willst, musst du einen USB Host implementieren. Ein AVR kann das nicht. Dazu bruachst du einen Hostcontroller (wurde vor kurzem in einer Elektor vorgestellt - bei Bedarf kann ich dir die Schaltung raussuchen).
Wenn du Daten sicher willst: Festplatte, Flash, EEPROM oder ganz einfach: MMC Karte.
Grüße
Flite
Wiso, 'gan eindfach'? Sit das so einfach?
Hm - nachdem ich deinen Post 3x gelesen habe, habe ich die Frage verstanden *g*
Du brauchst nur 4 Pins (SPI) um eine Karte anzuschließen. Speicherpltz mehrere 100 MB für wenige Euros. Schwer zu bekommen sind die Sockel, wo man die MMC Karten reinstecken kann. Entweder einen MMC Kartenleser bei Ebay bestellen und ausbauen, bei Pollin einen für 6 € oder so kaufen, oder einfach ein Stück eines alten ISA Slots verwenden.
Nun hast du natürlich noch kein Dateisystem (FAT8, FAT16, FAT32, ...). Du kannst einfach Byteweise Daten absichern und lesen.
Hier gibts eine tolle Anleitung für AVRs
http://www.ulrichradig.de
SVR Projekte / MMC
Außerdem gibts da noch einen Webserver mit AVRs und Videotextgenerator.
Viele Grüße
Flite
Ja, sorry, also was ich da geschrieben habe ist mir auch ein Rätsel. Wenns jemand liest muss er denken, dass ich schon alle Zähne verloren habe, und so ähnlich auch schreibe :oops: Der Schönheit wegen änder ich es mal nicht.
Der Link ist super, einziges Problem, ich habe keine Ahnung von C!
Hm aber vielleicht find ich ja irgendwo noch was für Bascom.
Danke trotzdem!
MFG Moritz
Hallo Moritz,
einfach den C Code kopieren wäre auch schlecht ...
Vielleicht suchst du dir Infos zusammen und programmierst das dann selber in Bascom. Ist eigentlich wirklich einfach. Ohne Filesystem eben ...
Hier ist der Link zu den Befehlen. Ein Hardware SPI wird dein Controller haben.
http://www.ulrichradig.de/site/avr_mmcsd/pdf/MMCSDTimming.pdf
Grüße
Flite
:oops: Um ehrlich zu sein bin ich ein echter Anfänger, bin erst vor 3 Wochen auf AVR umgestiegen. Hab zwar schon von SPI gehört, und kann ihn auch zuordnen, aber dann hörts auch auf.
Was für einen controller hast du?
Zur Zeit einen AT90S2313. Aber ich werde mit Sicherheit demnächst Umsteigen, weil für das was ich vorhabe, die Anzahl von Timern nciht reicht.
gut - wenn du auf die mega serie umsteigst hast du auf jeden fall spi.
Der 2313 hat auch ein SPI.
Wenn du fragen hast, kannst du sie gerne stellen. Ich versuche dann zu helfen :)
Grüße
Flite
Danke, für das Angebot.
Einige Fragen werden sich vermutlich später noch ergeben, hast du denn schon ne Karte an den AVr angeschlossen?
Korriger mich, wenn ich falsch liege:
Also SPI, benutzt, so weit ich weiß MISO und MOSI des ISP, sowie einen weiteren Pin pro Gerät, zur auswahl der angeschlossenen Hardware.
Jetzt versteh ich nur nicht soganz, wie ich was auf die MMC-Karte schreibe, und davonlese. Muss ich nicht irgendwo Speicheradressen angeben, oder erstmal Speichertypen etc. wählen?
MFg Moritz
Nein - selbst angechlossen hab ich noch keine (werd ich aber demnächst machen - allerdings bei einem 8051 -> AT89C51SND -> MP3 Player).
Du musst MISO und MOSI um die Daten von und zur Karte zu schaufeln, Clock als Taktsignal und dann noch einen CS Pin. Der CS (Chip Select) pin dient wie du richtig gesagt hast dazu eine Karte (ein Device des Busses) auszuwählen. Falls du nur die MMC Karte an SPI betriebst kannst du den CS Pin der Karte theoretisch auch auf 3,3V legen.
Wichtig ist, dass die Karte mit 3,3V Pegeln funktioniert. Eine Beschaltung findest du auch auf der Seite von Ulrich.
Schreiben und Lesen kannst du mit den Befehlen.
http://www.ulrichradig.de/site/avr_mmcsd/pdf/hitachi_hb28b128mm2.pdf
Diese findest du in der Dokumentation.
Su schickst also den Befehl LESE_SEKTOR an die Karte, anschließend die Adresse, ab der gelesen werden soll. Anschließend schickt die Karte dir die Daten nach und nach raus.
Genau sagen kann ich das auch nicht, da ich die Doku nicht gelesen habe. Aber so ähnlich funktioniert das Prinzip.
Grüße
Flite
Danke! Werde mich auf die MMC konzentrieren...obgleich es schon befremdlich wirkt, wenn man einen seriellen Bus (USB) nur mit grossem Aufwand ansprechen kann. In meinem Fall ist die Kommunikation sehr langsam und irgendwie müsste der Bus doch zu bremsen sein...aber es soll ja keine Diplomarbeit werden...
Aaalaaaf und Hellau,
Huge
Ne - es geht nicht nur um die Geschwindigkeit, sondern auch um den Overhead. Du musst die Ströme bereitstellen, das gesamte Protokoll übernehmen und die Treiber nicht vergessen!
Um einfach Daten abzuspeichern - lieber MMC. Ist viel einfacher!
Grüße
Flite
OK, und wie geht das nun mit BASCOM?!
Gruß
Das meinte ich, so einfach mit read und write ist das nicht, oder täusche ich mich da? ICh würde mich auhc über ein wenig Code freuen.
MFg moritz
Naja - es gibt meines erachtens keine fertige Funktionen in BASCOM zur Ansteuerung von MMC Karten. Ich würde mir anschauen, wie man unter BASCOM das SPI anschaltet und Daten rausschiebt.
Den Rest musst du dir anhand einiger Infos im Internet zusammensuchen und probieren. Ich kann dir keinen Code liefern, erst recht kein BASCOM.
Grüße
Flite
Ich hab' mal was gefunden: http://www.compsys1.com/support/AVR/mmc/
Nett, ich glaube, da steig ich so schnell auch nicht durch...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.