Forum: Mikrocontroller und Digitale Elektronik AT89C51SND1C Display Fragen


von Daniel R. (sliderbor)


Lesenswert?

Hallo alle zusammen,

ich plane momentan einen MP3-Player auf Basis des Atmel AT89C51SND1C. 
Ich weiß, dass es schon viele Threads dazu gibt, aber ich habe noch ein 
paar spezielle Fragen dazu.

Ich würde gerne ein Farbdisplay (z.B. 132x132 Pixel, 16Bit Farben) 
verwenden, allerdings bin ich mir nicht sicher, ob der SND1C (ist ja 
"nur" ein 8051) von der Rechenleistung usw. dafür ausreicht. Vielleicht 
kann mir das jemand beantworten!? Bisher habe ich leider nur kleine 
Projekte gehabt, wofür ein 8051 mehr als ausreichend war.

Der SND1C soll zudem noch von einer Speicherkarte bzw. HDD lesen und 
natürlich Tasteneingaben verarbeiten. Dazu wird er wohl auch das 
FAT16/32 Dateisystem interpretieren/verarbeiten müssen, was auch 
Rechenleistung kosten sollte.

Wenn dieser nicht ausreichen sollte, wie könnte man das sonst lösen? 
Einen ATmega nur für die Grafikausgabe zusätzlich einsetzen? Die 
Framerate sollte auch nicht gerade bei 0,5 liegen. Mir ist schon klar, 
dass man nicht immer den gesamten Inhalt neu schreiben muss, aber es 
sollte schon recht flott gehen.

Gibt es Displays, die man einfach anschließen und dann programmieren 
kann, z.B. mit SPI-Schnittstelle oder ähnliches? Vielleicht sogar mit 
Programmierbeispielen bzw. Libraries oder so?

Sorry für diese Newbie-Fragen, aber wo kann man besser fragen als hier? 
=)

Vielen Dank schon mal im Vorraus!

von Daniel R. (sliderbor)


Lesenswert?

Kann mir keiner helfen oder will keiner? =(

von Daniel P. (ppowers)


Lesenswert?

Naja, wenn man sehen würde, dass Du Dich schon mal selber etwas 
umfangreicher informiert hättest, wären die Hilfestellungen 
wahrscheinlich auch großzügiger - bzw. viele Deiner Fragen bereits 
beantwortet.

Farb-LCDs mit SPI gibt es vom Nokia 6610 und vom Siemens S65, beide mehr 
als ausführlich bereits hier diskutiert, Libraries gibts ebenfalls.

Hast Du schonmal ausgerechnet, wieviel Speicher man braucht, um 132x132 
Pixel bei 16 Bit zu speichern? "immer den gesamten Inhalt neu schreiben" 
kannst Du daher mehr oder weniger vergessen.
Was stellst Du Dir überhaupt unter "Grafikausgabe" vor? Willst Du 
Winamp-Visualisierungen darstellen? DivX-Videos abspielen?

von Daniel R. (sliderbor)


Lesenswert?

Ich wollte gerne ein einfaches grafisches Menü mit Symbolen darstellen, 
weiterhin natürlich die Infos über den aktuellen Titel usw. also evtl. 
noch einen Fortschrittsbalken oder ähnliches. Videos oder aufwändige 
Animationen will ich nicht abspielen.

Zum Thema Speicher: Ich denke mal 132x132x16Bit = 278784 Bit = 34848 
Byte = ~34kb pro Frame. Der SND1C kann mit max. 20MHz im X2-Modus takten 
und ebenso die SPI-Schnittstelle. Ich hab allerdings keine Ahnung, wie 
schnell der SND1C wohl die Daten effektiv schicken kann, er muss ja auch 
noch die Grafik aufgebereiten usw., daher wollte ich eigentlich nur 
wissen, ob es mit dem SND1C sinnvoll ist sowas zu machen. Oder ob man 
besser einen anderen Controller dafür verwenden sollte und wenn ja, 
welcher (Standard-)Controller wäre dafür geeignet?

Ich hab schon viel gegoogelt, habe aber entweder keine ausreichenden 
Infos gefunden oder bin eben nicht draus schlau geworden. Asche auf mein 
Haupt! =(

von Daniel P. (ppowers)


Lesenswert?

Ist bestimmt möglich, ich mache sowas mit einem PIC und habe nur 12 MHz 
SPI-Takt. Einen vollständigen Redraw des Displays kannst Du - wie gesagt 
- auf Grund des Speichermangels kaum ermöglichen, daher erübrigt sich 
auch die Frage nach der "Framerate".
Ich weiß leider nicht, wie sehr der Controller durch das Dekodieren von 
MP3-Daten ausgelastet sein wird, aber - ähnlich wie bei mir - wird die 
Devise lauten: nur das Allernötigste auf das LCD pinseln ;-)

"Geeignet" ist der Controller dafür wohl nur bedingt. 16-Bit 
Grafikspielereien fallen wohl eher in den Zuständigkeitsbereich von 16- 
oder 32-Bit-Prozessoren. Aber möglich ist es. Ja.

von Daniel R. (sliderbor)


Lesenswert?

Da ich mir selbst nicht unbedingt zutraue einen sehr effizienten Code zu 
programmieren, sollte man also auf einen zusätzlichen mC bauen, denke 
ich.

Sind denn die 16 bzw. 32 Bit mC sehr viel anders zu programmieren als 
z.B. ein 8051 oder kommt man trotz wenig Erfahrung mit etwas 
Einarbeitung hin? Hab grad mal schnell bei Atmel geschaut und z.B. den 
AVR32 gefunden.

Wieviel RAM sollte der mC denn haben? Der gesamte Bildschirminhalt 
sollte im RAM passen um eine schnelle Grafikausgabe zu bekommen? Demnach 
also 64kb (34kb pro Frame)?

Sorry für die vielen (für euch wahrscheinlich dummen) Fragen, aber außer 
nem einfachen 8051 hatte ich bisher nichts in der Hand. =( SPI habe ich 
auch genau 1x benutzt, aber bei dem verwendeten LED-Controller (Max7219) 
kommt es nicht so auf die Geschwindigkeit und RAM an.

von Daniel P. (ppowers)


Lesenswert?

So dumm sind die Fragen ja garnicht. ;-)
Aber schau doch einfach erstmal, wieweit Du mit dem AT89C51SND1C + 
S65-Display kommst, um etwas Erfahrung zu sammeln.
Ich befürchte, 32-Bit Controller sind etwas oversized für Dich, der 
Entwicklungs- und Kostenaufwand ist nämlich deutlich größer als für die 
8-Bit-Controller, besonders wenn Du direkt einen Prozessor mit > 30kB 
RAM verwenden möchtest ;-)

Abgesehen davon ist es zwar schön, wenn man den gesamten 
Bildschirminhalt in den RAM bekommt, es ist aber nicht unbedingt nötig. 
Mit geschickter Programmierung lassen sich auf so einem Display z.B. 
auch Tetris realisieren - und das mit nur ~4kB RAM. Es kommt halt auch 
ein wenig darauf an, was man für Ziele bei der "Grafikausgabe" hat.

von Andreas W. (Gast)


Lesenswert?

@ Daniel Reinke
Für ein Menü brauchst du nicht den kompletten Bildschirminhalt im RAM 
des MCUs haben. Daher reicht der AT89C51SND1C zum Abspielen von 
MP3-Dateien von einer SD-Karte mit FAT und zum Ansteuern eines 
Farbdisplay völlig aus. Wie das mit IDE aussieht weiß ich nicht.

Hier ein MP3-Projekt mit Mega128 (8MHz) und Nokia Farb-LCD:
http://www.mictronics.de/?page=mp3stick

von Daniel R. (sliderbor)


Lesenswert?

Vielen Dank für eure Tipps! Ich werde mich mal genauer mit dem S65 
Display beschäftigen, das gibts ja bei der Bucht schon ab ~6€. Muss mich 
aber erst mal genau informieren, welches Versionen ich davon gebrauchen 
kann, es sollen ja nicht alle gleich funktionieren.

Ich werde dann zunächst mal versuchen die Displayansteuerung mit dem 
SND1C zu realisieren und sehen, wie weit ich komme.

Das IDE-Interface soll, soweit ich weiß, beim SND1C schon in Hardware 
vorliegen, natürlich muss das Dateisystem noch in Software implementiert 
werden. Damit muss ich mich auch noch außeinandersetzen. Habe bisher nur 
das ext2 Dateisystem unter Linux nachprogrammiert.

@Andreas
Danke für den Link, werde mir das mal genauer ansehen!

Wenn noch jemand gute Links oder Tipps bez. Display bzw. 
Displayansteuerung hat, immer her damit! =) Und nochmal danke!

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.