DMX-Receiver

Gast #75232
Hallo, allerseits!

Hat schon mal jemand versucht, mit dem AVR ein DMX-Signal zu dekodieren
und den Quelltext in C geschrieben? Ich habe zwar einen eigenen
Quelltext entwickelt, habe aber zur Zeit keinen DMX-Sender zur
Verfügung und kann mein Programm nicht austesten.

Vielen Dank im Voraus für Eure Antworten!

KMT
Gast
Schon mal getan, aber entweder waren es Quelltexte in Assembler oder
Quelltexte für einen DMX-Sender. Ich bräuchte aber zum Anpassen einen
Quelltext in C für einen DMX-Empfänger. Notfalls ließe sich das
sicherlich auch in Assembler programmieren, aber ich bin halt
C-verwöhnt...

Viele Grüße

KMT
Gast
Also einen Code für den AVR kann ich Dir leider nicht geben. Ich habe
mal einen für den 8051 geschrieben, ist aber schon ne Weile her und das
war auch in Assembler.

Mit dem normalen UART kannst Du Dir aber leicht einen DMX-Empfänger
bauen. Den Brake kannst Du erkennen, indem Du "Framing Error"
auswertest. Wenn das empfangene Byte 00h war, dann wars der Brake. Dann
nur noch auf das Start warten, dann die eingehenden Bytes zählen und ab
Deiner DMX-Adresse n Bytes in eine Tabelle schaufeln.

Stefan
Gast
Hallo Markus hast du den Quellcode des Empfängers in C bekommen?
Ich suche nämlich auch einen c - quellcode für einen DMX-Empfänger.

mit freundlichen grüßen
Max
Gast
#pragma vector = 0x48
__interrupt void USART0_RXD_isr(void)
{

  if (UCSR0A & (1<<DOR0))               //Overrun
   {
      dmx_empfangs_zeiger = 515;            //Fehler-Flag setzen
   }
   if (dmx_empfangs_zeiger > 512)          //Zeiger auf DMX-Feld zu groß
   {
      dmx_empfangs_zeiger = 515;            //Fehler-Flag setzen
   }
  if (UCSR0A & (1<<FE0))                 //FE-Bit
   {
     if (UDR0 == 0)                    //Datenregister leer?,wenn ja ist 
es ein
Break
     {
       dmx_empfangs_zeiger = 0;          //DMX-Zeiger setzen
     }
     else
     {
       dmx_empfangs_zeiger = 515;          //Bei Fehler Zeiger auf 
Nirvana
setzen
     }
   }
   else
   {
    dmx_werte[dmx_empfangs_zeiger++] = UDR0;

  }
  fehler = UDR0;

}
IAR Systems
ATM 64
dmx_empfangs_zeiger ist kein richtiger Zeiger, sondern nur ein unsigned
int als Arrayzähler.
fehler ist ein unsigned char, weil, um das Interruptflag zu löschen
immer UDR ausgelesen werden muss.
Die Werte werden in ein 516 Byte großese Array geschrieben.

Bei Unklarheiten bitte meldden.

MW
Gast
Hallo Stefan
kannst du mir mal den Quelltest für den 8051 schicken für den empfang 
von DMX daten das würde mir echt sehr helfen.

Ich kann auch mit Asembler was anfangen ich muß ein Projetzt mit dem LPC 
900 machen.

Danke Gruß Alex
Habe mal den alten Kram rausgesucht.
Das Ding ist ca. 20 Jahre alt, genau Bescheid weiss ich über die 
Einzelheiten nicht mehr, habe auch keine Ahnung, wie damals der 
Assembler hiess.

Der Code, der für Dich interessant ist, steht unter "SIO-Handler".

Wenn ich mich richtig erinnere, lief das Teil mit 8Mhz auf einem 80517.

Um bei dem Takt noch schnell genug zu sein, sind ein paar Register 
exklusiv für den SIO-Interrupt reserviert, also Vorsicht, die darfst Du 
nirgends anders verweden!

Gruß, Stefan
Angehängte Dateien:
Gast
Ich weis der Beitrag ist schon ein paar Jahre alt allerdings habe ich 
ihn gerade entdeckt und es würde mich brennend interessieren woher du 
solche Linsen für die LEDs bekommen hast?? hab nämlich genau das selbe 
geplant :D

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.