Forum: Mikrocontroller und Digitale Elektronik mp3 Datei in Assembler Decodieren


von Thinnes Roy (Gast)


Lesenswert?

Hallo,
Ich soll als Schulprojekt versuchen mit Hilfe eines ATmega32 ein
NetRadio-Empfänger zu bauen. Also soll an den ATmega32 angeschlossen
werden: eine Soundkarte, ein W-LAN Board und ein LAN Board. Jedoch soll
ich zuerst ein Programm schreiben das eine mp3 Datei Decodiert und an
die Soundkarte schickt. Das ganze soll in Assembler sein weil wir sonst
die 16MHz nicht erreichen.

Wie soll ich das ganze jetzt angehen?

MfG

von Benedikt (Gast)


Lesenswert?

Guter Witz...

von Berti (Gast)


Lesenswert?

würd ich auch sagen...

von Axel R. (Gast)


Lesenswert?

*ABO!* gg

von Thinnes Roy (Gast)


Lesenswert?

hä? Was denn nun los??
Das war kein Witz...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Rechenleistung eines AVRs dürfte für diesen Zweck nicht ansatzweise
ausreichen, zumal so ein AVR intern nur mit 8 Bit-Datenwörtern
arbeitet.

Für einfache ARMe mit ARM7TDMI-Kern (wie den Philips LPC2106) gibt es
Software-Decoder, aber diese Prozessoren arbeiten mit etwas höheren
Taktfrequenzen und sind in der Lage, 32-Bit-Arithmetik durchzuführen.

Natürlich kann auch ein AVR 32-Bit-Aritmethik durchführen, wenn dafür
eigens ein Programm geschrieben wird, das wird dann aber ... langsam.

Übrigens läuft ein AVR mit 16 MHz, ob der nun mit Basic (Bascom), C,
Pascal oder auch Assembler programmiert wird ...

Was für eigenartige Lehrer sind das, die solche Ansätze im Rahmen eines
Schulprojektes vorschlagen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nachtrag:

Wenn die "Soundkarte" aus einem VS1001 oder dergleichen besteht, dann
lässt sich die Angelegenheit allerdings umsetzen. Das ist nämlich ein
Hardware-mp3-Decoder ...

von Thinnes Roy (Gast)


Lesenswert?

Jo ich habe kA davon wir sollten Vorschläge machen für das
Abschlussprojekt und ich hab das vorgeschlagen (mit der Bedingung dass
es möglich ist). Und mein leherer hat gemeint ich soll dann erst mal
ein Programm im Assembler schreiben das eine mp3 datei decodiert und zu
soundkarte schickt...

von dom (Gast)


Lesenswert?

^^ Das war dann wohl nicht ganz ernst gemeint ;)
Zumindest nicht auf nem AVR... wie gesagt...

Gruß

von Thinnes Roy (Gast)


Lesenswert?

jo k ^^
hat er mich wohl reigelegt ...

Jedenfalls hab ich zuerst hier gepostet und wollte danach erst Tage und
Nächte mit programmieren verbringen ;-)

von Ronny (Gast)


Lesenswert?

Sicherlich ist es machbar,die dekodierung im avr zu machen,aber das
erfordert

1.) detail-wissen über den mp3 zugrunde liegenden algorithmus
    -> war als ich 2001 abi gemacht hab,nichtmal ansatzweise abi-
       wissen,denke nicht das die verschiedenen
frequenz-transformationen es mittlerweile sind ;)

2.) viel zeit,da das AUF GAR KEINEN FALL in echtzeit möglich ist (und
damit schonmal nicht von der soundkarte aufgenommen werden kann)

3.) programmiersprache ist egal,aber C wär aufgrund der komplexität der
angelegenheit sicher hilfreich um ´nen überblick zu behalten

Alles in allem eindeutig kein Schul-Projekt.Und von dem Aufwand/Nutzen
will ich mal garnich erst anfangen.

Also: Controller >= ARM7,MP3 dekodierung mit einer Lib (die´s sicher
frei nutzbar irgendwo geben wird) wär ein realistischer Ansatz.

Falls du gar keine Elektronik-Erfahrung hast,wär als 1. Projekt sicher
etwas einfacheres geeigneter...

von Thinnes Roy (Gast)


Lesenswert?

Jo das Abschlussprojekt dauert über 6 Monate und beginnt erst nach den
Sommerferien im September... Aber wir sollten halt Vorschläge machen.
Und ein grossteil des Projektes bsteht darin sich dass Wissen das man
dafür braucht anzueignen ...

von Niels H. (monarch2)


Lesenswert?

Klasse, Ahnung von nix und nen MP3-Decoder programmieren wollen :)

Junge, wovon träumst du eigentlich, wenns nacht ist?

von Thinnes Roy (Gast)


Lesenswert?

Bisher nur von nackten Frauen aber demnächst seh ich mich villeicht als
pro Assembler Programmierer o_O

von Ronny (Gast)


Lesenswert?

Naanaa,immer Sachte...ist ja schonmal gut,wenn man sich ergeizige Ziele
setzt,nur sollte man sich vielleicht nicht gleich beim 1. Versuch
überheben wollen ;)

Lies dir doch einfach heut Abend mal auf der Seite hier die Tutorials
zum AVR (und vielleicht noch des GCC) durch,nur um erstmal ein Gefühl
zu bekommen,was alles in den kleinen AVRs steckt.ATmega und Konsorten
sind ja schonmal prima für kleinere Projekte geeignet,preiswert und
auch Einsteigerfreundlich (was bei ARM nich unbedingt der Fall ist).

von Thinnes Roy (Gast)


Lesenswert?

Jo also grundkenntnisse besitze ich schon zb.: Lauflicht und Zähler...
Jedoch mp3's Decodieren usw da hab ich keinen Schimmer von ...

von Axel R. (Gast)


Lesenswert?

kannst ja die Idee mit dem VS1001 aufgreifen. Lötest ihn eben auf die
Unterseite und kratzt die Schrift ab...

von Niels H. (monarch2)


Lesenswert?

Na, das werd ich dir jetzt was sagen, was du vieleicht schon öfter von
den nackten Frauen gehört hast: Da musst du aber noch viel lernen :)

Selbst wenn du mit einem AVR "nur" die MP3 direkt ausm MemStick holen
möchtest und dann einfach zu einem MP3-Dekoder-Chip sendest, was die
Aufgabe wesentlich vereinfachen würde, braucht das immernoch sehr viel
Erfahrung im Umgang mit Elektronik und Programmierung. Das liesst man
sich nicht mal eben an. Auch nicht in 6 Monaten.

Ich würde dir vorschlangen, ein einfacheres realistischeres Project
vorzunehemen. z.B. ne Lampe über nen paralellport ein- und
auszuschalten. Klingt banal und nach verarschung, ist aber mein voller
Ernst. Du wirst stauen, wieviel fachliche Erfahrung hinter solch
augenscheinlich sehr einfachen Dingen steckt.

von romanua (Gast)


Lesenswert?

@Niels

>MemStick

Da sollte man auch mit Vorschlaegen aufpassen. Nicht dass er jetzt
versucht, einen USB Host in Assembler auf einem AVR zu implementieren.
Waere nicht viel einfacher als MP3.

von Ronny (Gast)


Lesenswert?

Oder vielleicht eine Spannung per ADC messen und über rs232 an einen pc
schicken (terminal-programm).Ist vielleicht etwas spektakulärer als 2
blinkende Lämpchen,ist aber auch schon wieder eine ganze Ecke
anspruchsvoller...

von Thinnes Roy (Gast)


Lesenswert?

Jo also vergangenheist projekte sind:

Ein Roboter mit ATmega16 gesteuert
Eine Drahtlose Lichtersteuerung mit ATmega16 gesteuert und
Ein Digitler Vorverstärker mit ATmega8 gesteuert ...

Habt ihr was in der lage?? Ne einfache Lampe über Parallelport ist
villeicht kompliziert klingt aber total öde...

von romanua (Gast)


Lesenswert?

@Niels
als Witz gemeint.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ähem, 6 Monate darf NIEMAND brauchen um eine Lampe über den Parallelport
ein- und auszuschalten. Ein MP3-Player mit VS1001 und SD-Karte scheint
mir da schon eher ein angemessenes Projekt.

von Thinnes Roy (Gast)


Lesenswert?

@ andreas

Es geht nicht allein um die mp3 datei es geht eher darum ein netradio
ohne rechner als PC zu emfangen ...

von Hans (Gast)


Lesenswert?

vergiss das gaaaaanz schnell... du kannst auf nem kleinen uc nichtmal
anständig puffern... => aussetzer...

wenn dann fetter uc...sprich arm.. das prob dabei.. das ist schon mal
ein ganzes stück schlimmer ... machmal nen diff gegen die alten
versionen vom soft-mp3-player von andreas... ein arm7 ist also auch
nicht das allheilmittel...

unter arm9 glaub ich nicht,dass sowas wirklich vernünftig rennen
wird...

vllt wenn du per tcpip einen raw stream bekommst und den nurmehr an den
adc schicken musst..aber denk drann.. du darfst min 1sec puffern.. das
macht bei stereo ,16bit und 44,1khz immerhin über 100kb!!!

aber in mp3 gehts sichs schon mit der rechenleistung von so nem avr ned
aus...

die idee mit dem hardware-mp3 decoder hört sich schon besser an.. lass
ich mir einreden.. aber trivial wirds sicher nicht...

73

von Thomas Schildknecht (Gast)


Lesenswert?

Wenn man statt der "standart soundkarte" die Aufgabe in eine "MP3
Ausgabekarte" umdefinieren würde, kann man das Projekt in 6 Monaten
mit dem VS1001 umsetzen. Jedenfalls wäre der Praxisbezug sehr
interessant. Ich hatte mein Elektronik Einsteigerseminar vor 30 Jahren
mit Lichtorgel und Stroboskop für die Parties!

von Lupin (Gast)


Lesenswert?

wie wäre es mit einem GSM player? Also das GSM sound format meine ich.

http://www.pineight.com/gba/gsm/
http://kbs.cs.tu-berlin.de/~jutta/toast.html
http://rus.members.beeb.net/zgsmplay.html

Aber das ist vielleicht auch eher was für einen ARM.

du kannst eine Funkuhr bauen (ist schon ein richtiges standard projekt
:)) oder ein GPS Handgerät oder eine riesige LED Matrix oder ein halt
ein hardware MP3 player (ist nicht so kompliziert und kann man sich
sehr wohl anlesen, einfach bei bestehenden projekten abgucken ;))

von Christian Rötzer (Gast)


Lesenswert?

Dann wollen wir das Ganze mal komplettieren:

- ATmega128 mit externem RAM als Pufferspeicher. Oder können das auch
kleinere AVRs?
- Ein Lantronix Wiport, der per AccessPoint auf einen Shoutcast-Server
zugreift
- VS1001 zur MP3-Dekodierung

Alles ist mit 3.3V betreibbar. Wenn Ihr noch lange diskutiert, mache
ich's selber :-)

von Niels H. (monarch2)


Lesenswert?

Kurze Zwischenfrage:
Oben erwähnter Lantronix Wiport sieht recht interessant aus für einer
meiner Projekte. Gibts dafür Bezugsquellen in DE? Beispiel-Schaltungen
im Netz?

Für alle nicht-Google-referenzen wäre ich überaus dankbar.

von Ingo (Gast)


Lesenswert?

@roy

google mal nach propelleruhr oder propeller clock. wir hatten das als
techniker projekt. 15 Mann 2 Wochen. hat spaß gemacht und man hat
einiges gelernt. kann man gut mit funkuhr, fernbedienung, verschiedenen
modi usw. erweitern. und es wär auch noch ein bischen mechanik dabei...

grüsse

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

In der aktuellen Mai2006-Ausgabe des "Funkamateur" ist beschrieben,
wie man einen mp3-Memorystick mit einem Mikrocontroller ansteuert, am
Beispiel von zwei Fabrikaten erklärt:
MP3-Player als CQ-Rufmaschine, Seite 552
Vielleicht wäre das ein Ansatz, die fertigen mp3-Player sind vermutlich
billiger als ein einzelner Chip.

von Rahul (Gast)


Lesenswert?

Segor hat IMHO den WIport (hat auch den XPORT).

von Unbekannter (Gast)


Lesenswert?

Das wird nicht gehen, Netzwerk und MP3 mit einem AtMega32. Die Gründe
sind einfach:

 - Zu wenig Rechenleistung
 - Zu wenig Flash-Programmspeicher
 - Zu wenig RAM-Speicher (Puffer!)

Das kannst Du doch auch ganz einfach ausrechnen/überschlagen.
Angenommen, Du willst ein 128 kBit MP3 decodieren. Dann hast Du
folgende Datenflüsse:

 - Stream über Netzwerk empfangen: 128 kBit/s = 16 KByte/s
   plus Overhead für Netzwerkprotokoll: ca: 18 KByte/s
 - Ganz konservativ: MP3 in 44.100 Hz,  8 Bit, Mono umrechnen:
   - MP3-Datenstrom: 16 KByte/s
   - Audio-Datenstrom: 43 KByte/s
   - Summe: 59 KByte/s
 - Audio-Datenstrom zur Soundkarte schaufeln: 43 KByte/s

So, wenn Du nun diese drei Datenströme zusammen rechnest, ergibt das:

  18 KByte/s + 59 KByte/s + 43 Kbyte/s = 120 KByte/s

So, ist so ein AVR ein 8-Bitter-Risc-Prozessor, verarbeitet also pro
Takt ca. ein Byte. Dann kannst Du ganz einfach rechnen:

  16000000 Befehle/s / 120 KByte/s = 130 Befehle/Byte

So, und nun schaust Du Dir die benötigten Algorithmen für MP3 und
TCP/IP an, dann kommst Du ganz schnell zum Schluß: Aussichtslos.

von Martin (Gast)


Lesenswert?

Hallo,

hab schon einiges mit einem dsPIC4012 gemacht, das ist ein 16bitter,
hat 30MIPS, 48kB Flash und 2kB RAM. würde sich damit eine mp3 decoder
software relativ gut realisieren lassen?

mfg,
Martin

von SiO2 (Gast)


Lesenswert?

@ martin
siehe den einen post über deinem, und rechne nach ;)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Unbekannter: du bist nicht mehr auf dem neuesten Stand, dass die
MP3-Decodierung extern gemacht werden muss wurde doch schon laengst
festgestellt.

Martin: Von der Rechenleistung her sollte das gehen, aber der RAM
reicht nicht.

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.