Forum: Mikrocontroller und Digitale Elektronik USB DMX In/Out - Sinn oder Unssin folgenden Aufbaus


von bte (Gast)


Lesenswert?

Hallo!

Ich trage mich zur Zeit mit dem Gedanken einen DMX-Controller nach 
folgendem Schema zu bauen:

PC <-[USB(FTDI)RS232]-> Luminary LM3S811 Eval <-[SPI]-> mega32 <-> DMX

Folgendes lässt mir die Konstruktion sinnig erscheinen:

1) Auf allen Übertragungswegen lässt sich eine Datenrate>250kBit/s 
realisiern
2) der AVR soll gleichzeitig DMX empfangen und senden bei 44Hz 
Framefrequenz und 512 kanälen. Da selbiger lediglich einen UART hat,
erscheint SPI als sinvoller Kontakt zu Außenwelt.
3) Der mega32 hat mit seinen 2kB RAM genug Platz um den Kompletten 512 
Byte Outputframe und den kompletten Inputframe zu puffern
4) Das Evalkit hat genug Power um neben der RS232 zu SPI Brücke auch 
noch
intelligentes Merging durchzuführen.
5) Eine lösung mit mega8515 und USBN scheidet imo aus, da ich weder mit 
Material zu Ätzen eigener Boards ausgestattet bin, noch eine 
hinreichende Feinmotorik zum Löten von SMDs habe.
6) An den zweiten UART des LM3S811 ließe sich in Zukunft eine 
selbstgebaute Inputquelle anschließen (Fader/Taster die von nem 
zusätzlichen Board gelesen und nach RS232 gewandelt werden)

Die Firmware stelle ich mir wie folgt vor:
LM3S811
 - UART0 RX Interrupt:
    - Speichern und Puffern der Auszugebenden daten
    - Queuen von Kontrollanweisungen
 - UART0 TX Interrupt:
    - Senden der DMX-IN Daten zum PC
    - Senden von gequeueten Kontrollmeldungen
 - SPI Interrupt
    - Senden der gepufferten Ausgabedaten an den AVR
    - Puffern der vom AVR kommenden DMX daten.
 - main()
    - abarbeiten von Kontrollanweisungen
    - mergen von DMX-IN/OUT (einfache verknüpfung nach Maske,LTP und 
HTP)
AVR
 - UART TX Interrupt
    - DMX-Out
 - UART RX Interrupt
    - DMX-In
 - SPI Interrupt
    - Den Datenaustausch mit dem LM3S811
 - main
    - starten des DMX-Out nach der Break
    - start/stop des DMX-Out auf kommando vom M3

Sollte es einen besseren Weg oder Denkfehler geben, bitte ich darum dies 
aufzuzeigen.

mfg,
  bte

von Clemens (Gast)


Lesenswert?

Was ist der Sinn an der Sache das ganze auf 2 und später sogar auf 3 
Prozessoren aufzuteilen wenn es locker mit einem geht? Nimm entweder ein 
AVR mit 2 UARTS (z.b.: ATMEGA162, MEGA64 oder MEGA128) oder du 
programmierst Software-UART. Eine weitere Möglichkeit wäre ein FTDI-Chip 
mit parallelem Ausgang. So solltest du keine Probleme haben das ganze 
mit einem Prozessor zu realisieren.
Es macht keinen Sinn, für fast jede Funktion einen eigenen Prozessor zu 
verwenden.

Grüße

von K. B. (kbf)


Lesenswert?

Ich versteh jetzt dein Konzept nicht ganz, aber mitnem FTDI und nem 
RS485 Treiber kannste die Daten doch direkt verschicken und empfangen.


MfG
Karsten

von Clemens (Gast)


Lesenswert?

Hab ich mir auch schon gedacht, aber er will ja später noch Fader und 
Taster verwenden

von bte (Gast)


Lesenswert?

Ein Controller, der das auszugebende Frame puffert macht doch sinn,
es mag vorkommen, das der PC so ausgelastet ist, das er Aussetzer bei 
der Signalerzeugung macht.

mega mit zwei Uarts klingt gut, wäre noch das Problem, der Verbindung 
zum FTDI - da muss ich doch selbst Platine machen und versuchen den 
aufzulöten.
Oder gibt es irgendwo günstig FTDI auf DIL adapter?
Oder gibt es evtl sowas direkt in nem DIP?

Alternativ, brauch ich dann ja nur nen RS485 Transceiver an den UART1 
vom LM3S811 anschließen oder seh ich das falsch?

mfg, bte

von Clemens (Gast)


Lesenswert?

Bei Farnell gibt es z.B. den MM232R der geht einfach zu löten. 
Alternativ gibt es auch SMD-Adapter.

Grüße

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.