mikrocontroller.net

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


Autor: Marek Swierzy (marekswierzy)
Datum:

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

Autor: alfsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is dir klar, welche datenrate dvi hat ????

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

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

Autor: Marek Swierzy (marekswierzy)
Datum:

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

Autor: Thorsten (Gast)
Datum:

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

Autor: Marek Swierzy (marekswierzy)
Datum:

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

Autor: Ronny (Gast)
Datum:

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

Autor: Marek Swierzy (marekswierzy)
Datum:

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

Autor: Thorsten (Gast)
Datum:

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

Autor: Marek Swierzy (marekswierzy)
Datum:

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

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

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

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.