Hallöchen! Erstmal sorry für den langen Text. Ich hoffe, ihr lest ihn trotzdem... ;-) Es geht mal wieder das allseits beliebte Thema "Speicherkarten". Ich habe mich gerade ein etwas größeres Projekt herangewagt, welches wohl mit mehreren AVRs realisiert werden wird. ( Im Detail: Es wird ein komplettes DMX-Lichtmischpult und Scannersteuerung zum Einsatz in einer Discothek angestrebt. Ein AVR übernimmt lediglich die DMX-Ausgabe, ein weiterer (oder mehrere) übernimmt die Automatik-Steuerung, ein AVR wird wohl für die MMC-Kommunikation gebraucht werden. Alles in einem einzigen AVR klappt nicht wegen der Geschwindigkeit: Alle 44us muß ein Byte seriell per DMX ausgegeben werden... ) Momentan bin ich gerade dabei die Automatische Scenensteuerung zu programmieren. Die Steuerung selber stellt kein großes Problem dar, Überblungsberechnungen funktionieren schon. Jetzt muß ich "nur" noch das Problem mit den gespeicherten Daten lösen. Da das DMX-Protokoll bis zu 512 Kanäle zuläßt, müssen pro Scene 512 Bytes (nicht Bits!) gespeichert werden. Ein einziges einfaches Programm aus 8 Schritten besteht somit schon alleine aus 4 KlioBYTE, zuzüglich diverser Steurungsinformationen. Lange Rede, kurzer Sinn: ich benötige einen (austauschbaren) Speicher mit massenhaft Kapazität. Jetzt habe ich mich umgeschaut und mir mal die "MultiMediaCards" angeschaut. So ein Ding ist auch in meinem DV-Camcorder, somit hätte ich schonmal ne 4MB-Karte zum experimentieren mit mehr als genug Platz. Inzwischen gibts die Karten ja sogar schon mit > 128MB. Wie ich das sehe, können die MMC-Karten einfach per SPI gelesen und geschrieben werden. Auf ein bestimmtes Dateiformat bin ich nicht abgewisen, die Karten sollen später nicht (direkt) per PC gelesen/beschrieben werden. Hat schonmal jemand mit ner MMC experimentiert? Gibt es schon Projekte? Oder besteht eventuell Interesse, gemeinsam die Probleme zu lösen? Im Anhang habe ich mal die Spezifikationen für die MMC angehängt... Da ich in Assembler Programmiere, wäre es Klasse, wenn irgendwo schon nen Example-Code existieren würde. Dann bräuchte ich das Rad nicht neu erfinden... :-) Na dann, bin mal gespannt auf Eure kommentare! :-) ciao, Andi
Hallo, folgendes gibt meine Meinung wieder - muss also nicht stimmen: 1. alle 44µs ein Byte zu senden ist doch nicht wirklich schlimm, oder??? Ich weiß nicht wie aufwändig das DMX Protokoll ist, aber ein Byte in den Sendespeicher des UART zu senden dauert wirklich nicht lange...... 2. Das mit den 4kb ist ja auch nicht so schlimm als das man gleich eine MMX Karte ansteuern müsste - es gibt ja noch andere Mgl, die wesentlich einfach sind: -Der Mega128 hat glaub ich 4kbyte Ram und EEProm -bei Maxim und so gibts jede Menge tolle nichtflüchtige Rambausteine. Ich hab' mir mal einen mit 2Mbyte zugelegt - MMX karte ist kompakter, aber das Teil ist schon super (Sample) und wir auch noch parallel angesteuert ( = super simpel)- bei Verwendung eines Megas stellt auch dies kein Problem da. Verwendest du diesen Lösungsweg erübrigt sich auch eine Lösung für deinen 2. Tread..... Viel Erfolg Christian
Hallo Christian! Erstmal danke für Deine Antwort! Eventuell läßt sich per UART das DMX-Protokoll senden. Das weiß ich aber nicht, da ich mit UART noch nichts zu tun hatte. Zunächst hatte ich vor, DMX per Hand zu generieren, und dann hab ich nit mehr die nötige Zeit, um aufwendige Scenenberechnungen zu machen. Aber gut, das ist ja auch nicht mein aktuelles problem, die reine DMX-Ausgabe kommt später. Wegen dem Speicher... Eventuell hast Du "austauschbar" überlesen? Ich will den Speicher natürlich austauschen können, damit z.B. jeder LJ seine eigenen Scenen und Programme programmieren kann. Ein AVR mit noch so viel internen Speicher reicht jedenfalls nicht aus. Alleine für ein(!) Programm mit nur 8 Schritten benötige ich die genannten 4KB, der Platz soll aber ausreichen für mehr als hundert Programme mit bis zu je 32 Schritten. 512 Byte für eine Scene, 32 Scenen für ein Programm, bei 128 Programmen sind das schon mal 2MB. Hinzu kommen dann noch die Programm-Steuerungs-Informationen wie Überblend-dauer und Delay-Werte. Alles in allem: Ein Austauschbarer, günstiger, handlicher und einfach anzusprechender Speicher klingt irgendwie ganz nach MMC... ciao, Andi
Thomas F hatte mal diesen Link reingestellt. Der Code ist Asm, sollte also ideal für dich sein. http://homepage.ntlworld.com/seanellis/mmcserial.htm Gruss Bernhard
Ich wäre für die CF, die sind zwar etwas größer, aber auch günstiger, und sehr leicht anzusteuern - wenn du kein Dateisystem brauchst erst recht. Hab ein Projekt mir MMC hinter mir (MP3-Player), aber die ist um einiges aufwendiger.
CF ist genau das richtige für PC-Programmier. Ist ja vom Interface eine ATA-Festplatte. Benötigt aber unötig viele Ports. Die MMC läßt sich via SPI auch superleicht ansteuern, ist ja im Prinzip auch nichts anderes als ein serielles DATA-Flash. Für die Steuerung reicht DMX-Sender (auch für 2 Kanäle je 512 Kanäle) und die MMC Ansteuerung reicht ein ATMega 161 im DIP40 Gehäuse erhältlich oder falls die TQFP nicht abschreckt ein ATMega 128 dicke aus. Lediglich wenn mit den gespeicherten Daten zusätzlich umfachreiche Berechnungen (inbesondere Divisionen) für viele Kanäle gleichzeitig ausgeführt werden sollen, könntest du an die Leistunggrenzen dieser Prozessor-Familie stossen. Ein DMX Universe mit 512 Kanälen ist wenig problematisch, da hier 22,668 ms pro Frame zur Verfügung stehen. Nach dem alten Standard (DMX1990) ist es ja auch möglich, nur 1 Kanal mit einer 176 µs pro Frame zu senden, was natürlich für Verwaltungsoverhead wenig Spielraum lässt. Dieses wurde im DMX2000 Entwurf (endlich) auf 1,1 ms (was etwa 24 Kanälen entspricht) geändert. Wenn du allerdings beabsichtigt immer 512 Kanäle zu übertragen, ist dieser Umstand natürlichz ohne Bedeutung.
Erstmal besten Dank für Eure Beiträge. Den Code von der Seite, die "Bernhard T" verlinkt hat, hab ich mir mal angesehen, könnte echt hilfreich sein. Damit werd ichs mal probieren. Ne 16MB-MMC-Karte hab ich gerade bei eBay für 9€ erworben, preislich ist das i.O. denke ich. Liegt in meinem Budged. ;-) So wie ich das sehe, wird es kein großes Problem werden, sie anzusteuern, sie haben mehr als genug Kapazität, sind handlich... also genau das, was ich suche. :-) Daran werde ich zunächst festhalten. Da ich wohl leider doch recht viele Berechnungen in "Echtzeit" erledigen muß, darunter auch 16Bit-Divisionen (z.B. Schrittweite = (Startwert-Zielwert)/Delay), komme ich wohl um mehrere AVRs nicht drumrum, aber das ist auch kein Problem. So teuer sind die Dinger auch nicht. Wenn ich alles zuammen rechne und dabei auf gerade mal 100-200 Eur gesamt komme, ist das ne super günstige alternative zu kommerziellen Projekten, die teilweise in die Tausende gehen... Und vor allem ist es was EIGENES. :-) Zum Thema DMX... Ich werde wohl nicht immer alle 512 Kanäle senden müssen, aber ich will es können. Alleine im Anfangsstadium kommen mindestens 4 Moving-Heads mit je 16 Kanäle, 4 Scanner mit je 16 Kanäle und 2 Farbwechsler mit je 2 Kanäle zur Anwendung. Gruß, Andi
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.