Forum: Mikrocontroller und Digitale Elektronik LPC2106 für Anfänger ?


von Marek S. (Gast)


Lesenswert?

Hallo zusammen,

ich habe einige Fragen, ich verfolge das folgende Ziel :

Problemstellung 1:

Ich möchte Daten aus einer DVI - Schnittstelle des Computers aufnehmen
das Frame (Bild) bearbeiten (z.b. jeden Pixel um eine Stufe heller
setzen oder an eine andere Position) und dann an den Monitor
weitergeben.

Nun wurde mir ein ARM Controller als Leistungsstark "verkauft".
Ich habe bereits gelesen, dass der LPC2106 beim Toggeln eines PortPins
nicht besonders schnell ist, somit ist der Controller nicht für mein
"End-Ziel" gedacht.

Frage 1:

Wäre dieser Controller aber eine Basis (da andere ARM Controller
ähnlich arbeiten nur viel schneller) oder muss/soll ich mich lieber mit
einem DSP wie dem TigerShark beschäftigen (meine Vermutung)?

Problemstellung 2:

Als Leitfaden zu meinem Durchbruch in ARM-Bereich dient die Lektüre ARM
Cross Development with Eclipse. Hier können nicht alle meine
Fragenbeantwortet werden, da kann mir das Forum aber sicherlich
helfen.

Frage 2:
Gibt es eine elegantere Methode mit der ARM - Programmierung
anzufangen?



So ich denke…. Ich habe genug Probleme für diese Stunde 

Für jede Stellungnahme bin ich Dankbar.

von alfsch (Gast)


Lesenswert?

is dir klar, welche datenrate dvi hat ????

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist mit einem LPC2106 nicht zu schaffen. Auch nicht mit anderen
vergleichbaren ARMen.

Bedenke einfach mal die Datenrate, die an einer DVI-Schnittstelle
herrscht (hinter dem TMDS-Receiver) - da werden 24-Bit-Datenworte mit
dem Pixeltakt des jeweiligen Graphikmodus übertragen. Und der liegt
bereits bei Standard-VGA-Auflösung (640x480) bei über 30 MHz. Bei den
interessanteren Auflösungen XGA (1024x768) oder SXGA (1280x1024) liegt
der Pixeltakt bei etwa 50 bzw. etwa 80 MHz.

Das sind Datenraten, für die schon ein sehr schneller DSP oder aber
entsprechend programmierte Hardware (FPGA/CPLD) erforderlich ist.

Die Einzeldatenwordbearbeitung (Helligkeit verändern) wäre so
realisierbar. Eine Zwischenspeicherung, die zum Verschieben von
Bildinhalten erforderlich wäre, steigert die Komplexität des ganzen
erheblich - Du musst einen entsprechend schnellen Zwischenspeicher
haben, den Du mit dem Pixeltakt beschreiben und simultan mit dem
Pixeltakt wieder (an anderen Adressen) auslesen kannst. Damit muss ein
kompletter Zugriffszyklus auf diesen Speicher also doppelt so schnell
wie ein Pixeltakt sein. Dazu kommen noch die üblichen
Verzögerungszeiten Deiner Elektronik - Du brauchst also Speicher mit
einer Speicherbandbreite von etwa 200 Megazugriffen pro Sekunde. SDRAM
etc. eignet sich hierfür nicht, da dieser Speicher auf lineares Lesen
innerhalb von Speicherblöcken optimiert ist - Du aber willst
wechselweise an unterschiedlichen Adressen schreiben und lesen.
Daher ist statischer Speicher naheliegend, und dessen Zugriffszeit
sollte unter 5 nsec liegen (um die geforderten 200 Megazugriffe je
Sekunde hinzubekommen).
Davon benötigst Du dann -je nach Bildschirmauflösung- einige Megabyte
(knapp 4 bei SXGA).

Das Vorgaukeln eines Monitors, das Deine Graphikkarte benötigt, damit
sie überhaupt ein Signal auf ihrem DVI-Anschluss ausgibt, dürfte durch
Kopieren des DDC-EEPROMs Deines bestehenden Monitors zu erledigen sein,
dann stimmt wenigstens auch das Timing mit dem gewünschten überein.
TMDS-Receiverbausteine musst Du Dir auch noch besorgen (sowas willst Du
Dir nicht selberbauen), aber auch das dürfte noch lösbar sein.


Was ist der Zweck der Anwendung? Es gibt Graphikkartentreiber, die eine
globale Helligkeits-/Kontrastanpassung ermöglichen, das dürfte etwas
weniger aufwendig sein ...

von Marek S. (Gast)


Lesenswert?

@alfsch: ja, ich weiss dass es kein Kinderspiel ist.
@Rufus: vielen Dank für deine Antwort; also ich bin im 2 Sem.
Elektrotechnik nun programmiere ich aber seit ein paar jahren "leider
nur" 8051 Mikrocontroller. Jetzt habe ich einen Prof. auf der FH
kennen gelernt der dass Fach "Mikrocontroller" unterrichtet, ich habe
ihm von meiner Idee berichtet und er fand es sei eine komplexe aber sehr
nette idee.

Meine Idee ^^ :

Meine Diplomarbeit soll die Entwicklung einer LED-Videowand werden.
Ich habe zwar noch ne Paar Semester, aber die Aufgabe ist ja nicht
gerade einfach also früh anfangen und vorbereiten damit es dann fluppt
:) (Jetzt bitte keinen Post über die Kosten der LED's etc... ich bin
mir darüber im klaren).

Ziel 1:
Das erste Ziel sollte es sein ich sag mal eine BMP bild zu decodieren
und auf eine LED wand bringen.

Ziel 2:
Auf dieser LED Wand werden Variablen plaziert und ein BMP als Maske
verwendet. Bit manipulationen.

Ziel 3 - 4:
Schnellere "Bit manipulation" und auslesen der DVI.

Und dann bin ich hoffentlich fertig.
Jetzt an alle die direkt mit den ganzen problemen ankommen.
Ich bin mir im klaren dass es nicht einfach ist, deshalb fange ich so
früh an.

Hört sich doch interessant an oder :)

Mfg

von Thorsten (Gast)


Lesenswert?

Hallo Marek!

Ich würde die Videoleinwand an deiner Stelle aus kleinen Modulen mit
z.B. 32x32 Bildpunkten aufbauen und diese dann über ein schnelles
Netzwerk, wie z.B. Ethernet, ansteuern. So kannst Du erstmal klein
anfangen und später die Auflösung durch hinzufügen weiterer Module
praktisch beliebig erweitern und defekte Module einfach austauschen.
Mit der DVI-Schnittstelle dürfte so etwas nur schwer zu realisieren
sein.

Gruß
Thorsten

von Marek S. (Gast)


Lesenswert?

Hi Thorsten,

Ja ich werde die Vieowand aufteilen müssen.
Da du ethernet als ansteuerung nennst.... ist es nicht schwerer einen
"video stream", an die Anzeige zu bringen als direkte daten( von der
div bzw. vga) ?

Gruß

Marek

von Ronny (Gast)


Lesenswert?

Ich denke mal ein UDP-Stream der die Bilddaten anliefert ist sicher die
einfachste (und am Ende auch einfach von jedem Laptop ansteuerbar)
Lösung,für Netzwerk gibt´s schon etliche fertige ICs oder auch für
grössere Controller entsprechende Software-Libs.

Die Ansteuerung der LEDs würde der Controller nach dekodierung des
mpeg-streams (auch dafür gibt´s libs) übernehmen.Interessant würd auf
jedenfall die Stromversorgung des ganzen...Mehrfarbige Low-Power LEDs
in grösseren Stückzahlen,da geht einiges an Strom durch....

von Marek S. (Gast)


Lesenswert?

hmmm irgendwie kann ich mir dass mit dem UDP nicht vorstellen gibt
kannst du mir da die gennanten ic's mal nennen oder nen link posten.

Vielen dank, .... hört sich interessant an.

von Thorsten (Gast)


Lesenswert?

Hallo Marek!

Such Dir am besten einen µC mit integrierter Ethernetschnittstelle.
Noch ein wenig Logik zur Ansteuerung der LEDs, Stromversorgung etc.
dazu und fertig ist das Modul. Die einzelnen Module verbindest Du via
Ethernet zu einem Netzwerk zusammen und steckst noch einen
Steuerrechner dazu. Der Rest ist dann nur noch eine Frage der Software
auf dem PC, welche die Bilddaten in Kacheln zerlegt und an die
einzelnen Module schickt.

Hört sich für mich jedenfalls deutlich machbarer an, als die DVI Signal
zu zerpflücken und irgendwie auf die Module zu verteilen. Mit normalen
µCs hast Du da keine Chance. Mit einem DSP oder FPGA könnte es
vielleicht klappen, ist dann aber nicht so flexibel erweiterbar, wie
die Ethernetlösung.

Gruß
Thorsten

von Marek S. (Gast)


Lesenswert?

habe mir nochmal gedanken dazu gemacht, mein problem war es, dass die
UDP verbindung zu langsam sein könnte aber alleine wenn ich vnc
aufmache und eine TCP verbindung zum benachbarten PC mache geht es
"recht" schnell. Also wird es mit dem UDP wohl auch gehen. Hört sich
gut an :)!
Dann habe ich nur noch ein problem undzwar die daten welche auf dem
screen sind mittels einer software an die anzeige bzw. die module zu
senden. aber wenn der erste teil steht, wird dass andere auch gehen.

Vielen Vielen dank, langsam schliessen sich alle lücken.
Die frage ist nur welchen controller ich verwenden soll damit eine
möglichst große fläche an led's abgedeckt wird. Dass RGB-Modul steht
schon. Mom, nur mit 16 * 16 dot. Diese Steuer ich mit einem 8051 an.
wenn ich einen schnellen controller verwende müste ich min. eine fläche
von 16 * 64 dot hinbekommen.

Nun die basic frage einen ARM oder DSP für diese aufgabe?

Gibt es Erfahrungswerte ?

Gruß

Marek

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Dann habe ich nur noch ein problem undzwar die daten
> welche auf dem screen sind mittels einer software an
> die anzeige bzw. die module zu senden.

Dafür hast Du im Satz vorher eine Lösung erwähnt: vnc.

Zur Ansteuerung Deiner LEDs würde ich eine Hardwarelösung bevorzugen,
die einen Speicherbaustein ausliest und dessen Inhalt an ebenjene LEDs
ausgibt. Den Speicher beschreibt dann der Controller, der übers
Netzwerk mit dem VNC-Server verbunden ist ...

Die Hardware kann entweder "diskret" mit Zählbausteinen,
Multiplexern, Schieberegistern und einem SRAM aufgebaut werden, oder
aber in ein FPGA/CPLD (mit extern angeschlossenem SRAM) verpackt
werden.

Die Verwendung von VNC als Protokoll hätte mehrere Vorteile: Du musst
die Serversoftware nicht mehr entwickeln und sie existiert für
verschiedene Plattformen (Windows, *NIX, MacOs, wasauchimmer).

So eine Herangehensweise halte ich jedenfalls für erfolgsversprechender
als den Versuch, Daten an einer DVI-Schnittstelle abzugreifen ...

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.