mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mp3 Datei in Assembler Decodieren


Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guter Witz...

Autor: Berti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
würd ich auch sagen...

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*ABO!* gg

Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hä? Was denn nun los??
Das war kein Witz...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: dom (Gast)
Datum:

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

Gruß

Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klasse, Ahnung von nix und nen MP3-Decoder programmieren wollen :)

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

Autor: Thinnes Roy (Gast)
Datum:

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

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Thinnes Roy (Gast)
Datum:

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

Autor: Axel R. (axelr) Flattr this
Datum:

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

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Niels
als Witz gemeint.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thinnes Roy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ andreas

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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Schildknecht (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;))

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Segor hat IMHO den WIport (hat auch den XPORT).

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ martin
siehe den einen post über deinem, und rechne nach ;)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.