Forum: Mikrocontroller und Digitale Elektronik Multi Media Card (MMC)


von Andreas H (Gast)


Angehängte Dateien:

Lesenswert?

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

von Christian (Gast)


Lesenswert?

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

von Andreas H (Gast)


Lesenswert?

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

von Bernhard T (Gast)


Lesenswert?

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

von Rainer (Gast)


Lesenswert?

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.

von mikki merten (Gast)


Lesenswert?

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.

von Andreas H (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.