USB DMX In/Out - Sinn oder Unssin folgenden Aufbaus

Gast #548362
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
Gast #548493
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
Gast #548752
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren