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
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?
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 ...
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...
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...
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 ...
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).
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.
@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.
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...
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...
Ä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.
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
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!
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.htmlhttp://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 ;))
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 :-)
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.
@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
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.
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.
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
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.