Forum: Mikrocontroller und Digitale Elektronik Atmega128: DMX gleichzeitig senden und empfangen


von Bernd (Gast)


Lesenswert?

Ich möchte einen Atmega128 so programmieren, dass er ein (evtl. sogar
zwei) DMX-Signal empfängt, weiterverarbeitet und dann weiter sendet.
Das Senden funktioniert auch schon, das empfangen auch schon fast.

Meine Frage/Problem:
Da das Emfangen durch Interrupts funktioniert unterbricht es doch
ständig das Senden.
Kann dann durch das ständige Empfangen und Weiterverarbeiten, das
Senden gestört werden, so dass beim gesendeten DMX-Singal lange Pausen
zwischen den einzelnen DMX-Werten liegen? Dabei würde doch dann die
Wiederholfrequenz darunter leiden?
Kann das zum Problem werden oder gibt es da Abhilfe?
Gibt es beim Atmega128 soetwas wie Interrupt-Priorität, und wenn ja,
wie stelle ich sie in diesem Fall ein?

Wer hat schonmal mit DMX-Signalen gearbeitet und kann mir helfen?

von gregor (Gast)


Lesenswert?

Hallo Bernd,

willst du das empfangene Signal auch verändern? Oder nur an ein
weiteres Gerät weiterleiten?
Soweit ich mich erinnere ist die  max. Länge des RESET Signals 1s,
ebenso MARK zwischen Frames, zwischen Packeten und zwischen RESET und
Startbyte.
Es kann jedoch vorkommen, das schlecht Programmierte Geräte mit
untypischen Pausen Probleme haben.
Falls du das Signal nur weiterleiten willst, einfach XLR In und XLR Out
miteinander verbinden und dazwischen das Signal abgreifen.
Oder auch (z.B. mit MAX485) empfangen, das TTL Signal einmal auf deinen
Mega128 (besser noch über schnellen Optokoppler) und paralell auf einen
MAX485 als Sender weiterleiten. Hat jedoch den Nachteil, das wenn deine
Schaltung keine Spannung bekommt auch nicht weitergesendet wird (z.B.
über Relaiskontokt Notbetrieb).

mfg
gregor

von Bernd Roppelt (Gast)


Lesenswert?

Nein ich will schon das empfangene Signal verändern und anschließend
wieder senden...

von thomas (Gast)


Lesenswert?

kannst du mal deinen code und oder schaltbilder posten? Ich würd gern
nen DMX in für den PC haben. Dort dann auswerten und z.b. speichern.
Hab aber probleme das signal zu empfangen und auf den rs232 zu packen.



Mfg der thomas

von Hendrik (Gast)


Lesenswert?

www.digital-enlightenment.de

Michael hat IMHO das ultimative DMX-Dongle verbrochen - damit sollte
Thomas glücklich werden.

Ansonsten hat glaube ich DMX4All ein DMX-Gateway im Programm.
Als open project ist mir so etwas unbekannt. (Den meisten incl. mir
reicht ein galv. trennender booster vollauf. Das bischen mergen
rechtfertigt den Aufwand nicht...)

Viele Grüße, Hendrik

von Sebastian (Gast)


Lesenswert?

Hallo Bernd,

das ist definitiv möglich und auch nicht besonders kompliziert. Ich
habe das so gelöst:

DMX empfangen über USART und Interrupt.

DMX umwandeln und senden im Hauptprogramm.

Vorteile: ein Byte, das über die USART reinkommt, wird sofort
verarbeitet und gibt die USART wieder frei. Umwandeln und Senden ist
zeitlich unkritisch, wenn Pausen zwischen den einzelnen Bytes entstehen
stört das keinen. Die Pausen dürfen laut DMX-Spezifikation nur nicht
länger als eine Sekunde werden, dann wird das Signal für ungültig
erklärt. Wenn Du nicht allzuviel rumrechnen willst, würde ich sogar
behaupten, 8MHz reichen völlig aus.

Mein Mega32 sendet DMX, empfängt DMX und unterhält sich spielend noch
mit einem Computer und einem weiteren uC, nebenbei. Bei 8MHz Takt. Und
ich habe im Sendekanal immer noch die vollen 44,...Hz
Wiederholfrequenz.

Gruß,
Sebastian

von gregor (Gast)


Lesenswert?

www.digital-enlightenment.de

Damit könnte ich mich auch anfreunden. Hammer teil. Hat das schonmal
jemand nachgebaut? Ich bin nur besitzer eines MiniDMX. Kann ja leider
nur empfangen und rs232 schnittstellen hat man auch maximal 2 am PC.
Also wenn man keine erweiterungskarten hat natürlich.
Hat das ding schonmal jemand nachgebaut?
Mein Problem ist die fertigung der Platine. Kann nicht ätzen oder
fräsen.


Mfg der gregor

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.