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
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
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
Hallo Kai. Ich suche einen DMX Code in C. Würdest du mir deinen zur verfügung stellen? Wäre super, Gruß Markus.
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
#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
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
Danke für die schnelle antwort nur leider ist das ja kein Quelltext für einen 8051 sondern für einen AVR hat niemand einen Ouelltext für einen 8051 das würde mir sehr viel helfen Danke Grüße 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
Hallo , danke für die antwort naja ich bin da noch immer ziemlich am rumrudern mit dem DMX Protokal . Für meinen 8051 aber bei dir sind auch ein paar gute ideen drin danke. Gruß Alex
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
Hi, must mal hier schauen, ich weis aber nicht ob er dies ArtLinsen hat. http://www.wayjun.com/index.php?main_page=index&cPath=21&sort=20a&page=1 Dort kaufe ich meinen LED's immer. MfG
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.