Forum: Mikrocontroller und Digitale Elektronik DMX-Signal mit ATMega162 manipulieren


von Benni P. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte mit einem µC (Atmel) ein DMX-Signal manipulieren:

DMX IN -> jeden Wert beliebig manipulieren -> DMX OUT


Dafür habe ich mir den ATMega162 (mit 2 USARTs) ausgesucht und möchte 
die DMX-Routinen von Hendrik Hölscher 
(http://www.hoelscher-hi.de/hendrik/light/ressources.htm) einsetzen.

Im Prinzip müssen bei den Routinen doch nur die Vektorenbezeichnungen 
geändert und die Registernamen um 0 bzw 1 für den jeweiligen USART 
ergänzt werden, oder?
Ist es mit dem ATMega162 überhaupt möglich, da die Routinen von Hendrik 
die Baudrate ständig umschalten. Arbeiten die beiden USARTs des µC 
komplett autark?

Zu dem Schaltplan:

ATMega162 als µC
2x SN75176 (RS485) für DMX_IN und DMX_OUT,
ein 2x16 Zeichen LCD,
ein Drehpoti,
eine ISP-Schnittstelle,
eine LED und
eine 5V Spannungsversorgung.

Es werden wohl noch drei oder vier Taster zur Menüführung folgen.

Ich hatte bislang bei der Anpassung der DMX-Routinen einige 
Schwierigkeiten, werde mich jedoch in den kommenden Tagen damit genauer 
auseinandersetzen. Programmieren möchte ich in C.

Haltet ihr dieses Projekt mit dme ATMega162 für realisierbar?
Habt ihr so etwas schon einmal gebaut?


Vielen Dank für Eure Unterstützung
Benni

von Christoph (Gast)


Lesenswert?

Hallo,

machbar ist das sicherlich. Ich kenne die von dir angesprochenen 
Routinen nicht, aber DMX funktioniert immer mit 250kBaud - also nix mit 
Umschalten!

Du musst hald auf den FE warten, dann kannst du auch nen FE ausgeben, 
anschliessend das Startbyte durchleiten (evtl. mit Manipulation - wenn 
du das willst) und anschliessend kannst du die Bytes mitzählen und 
manipuliert wieder ausgeben.

Interessant wäre der Sinn deiner Aufgabe!

Gruss

von Christoph (Gast)


Lesenswert?

Btw. deine Schaltung wird nicht funktionieren! Ausser den beiden am 
Quarz ist kein einziger Kondensator zu finden...

von Benni P. (Gast)


Lesenswert?

Vielen Dank für deine Antwort.

Christoph schrieb:
> machbar ist das sicherlich. Ich kenne die von dir angesprochenen
> Routinen nicht, aber DMX funktioniert immer mit 250kBaud - also nix mit
> Umschalten!

Hier einmal ein Auszug aus der oben genannten Routine (DMX-Senden):
1
// ****************** DMX Transmission ISR ********************
2
3
ISR (UART_TX_vect)
4
{
5
uint8_t DmxState= gDmxState;
6
7
if (DmxState == BREAK)
8
  {
9
  UBRRH  = 0;
10
  UBRRL  = (F_OSC/1600);    //90.9kbaud
11
  UDR    = 0;      //send break
12
  gDmxState= STARTB;
13
  }
14
else if (DmxState == STARTB)
15
  {
16
  UBRRH  = 0;
17
  UBRRL  = ((F_OSC/4000)-1);  //250kbaud
18
  UDR    = 0;      //send start byte
19
  gDmxState= DATA;
20
  gCurDmxCh= 0;
21
  }
22
else
23
  {
24
  _delay_us(IBG);
25
  uint16_t CurDmxCh= gCurDmxCh;
26
  UDR= DmxField[CurDmxCh++];  //send data
27
  if (CurDmxCh == sizeof(DmxField)) gDmxState= BREAK; //new break if all ch sent
28
  else gCurDmxCh= CurDmxCh;
29
  }
30
}

Dort wird doch je nach "DmxState" die Baudrate variiert.

Christoph schrieb:
> Interessant wäre der Sinn deiner Aufgabe!

Der Sinn liegt darin, dass es in der Veranstaltungstechnik vielfach 
LED-Pulte gibt, die keinen Masterdimmer haben. Da die neuen LED-Kannen 
jedoch enorm an Lichtstrom zunehmen ist der oft notwendig. Also möchte 
ich den µC dahinter schalten und  per LCD die zu dimmenden Kanäle 
auswählen, damit das Gerät universell einsetzbar ist.

Christoph schrieb:
> Btw. deine Schaltung wird nicht funktionieren! Ausser den beiden am
> Quarz ist kein einziger Kondensator zu finden...

Wofür brauche ich weitere Kondensatoren? Ich versorge die Schaltung 
derzeit über ein stabilisiertes Labornetzteil mit ausreichend geringer 
Ausgangswelligkeit.

von Klaus Dieter (Gast)


Lesenswert?

Benni P. schrieb:
> Wofür brauche ich weitere Kondensatoren? Ich versorge die Schaltung
> derzeit über ein stabilisiertes Labornetzteil mit ausreichend geringer
> Ausgangswelligkeit.

Wofür die da sind, sollte sich doch so langsam mal rumgesprochen haben. 
Da kann dein Netzteil noch so stabilisiert sein, bei digitalen 
Schaltungen wirst du ohne Abblockkondensator immer Störungen auf den 
Versorgungsleitungen haben.
Siehe:
http://www.rn-wissen.de/index.php/Abblockkondensator

von Benni P. (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank!

100nF Kondensator ist hinzugefügt und somit eine Fehlerquelle vermieden. 
(Eine galvanische Trennung der DMX-Leitungen soll bei vollständiger 
Funktion folgen.)

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

Benni P. schrieb:
> 100nF Kondensator ist hinzugefügt und somit eine Fehlerquelle vermieden.

Am Reset-Pin und am Display wuerd ich da auch noch was vorsehen...

Benni P. schrieb:
> Dort wird doch je nach "DmxState" die Baudrate variiert.

Ja, ist eine Moeglichkeit den Frame-Error zu erzeugen. Du kannst aber 
auch den Pin einfach kurz als Ausgang umfunktionieren und den 
Frame-Error ohne UART erzeugen.

Gruss Christoph

von Spess53 (Gast)


Lesenswert?

Hi

>100nF Kondensator ist hinzugefügt und somit eine Fehlerquelle vermieden.

Die Kondensatoren vom Quarz gehören übrigens nach GND und nicht nach 
VCC.

MfG Spess

von Benni P. (Gast)


Angehängte Dateien:

Lesenswert?

Spess53 schrieb:
> Die Kondensatoren vom Quarz gehören übrigens nach GND und nicht nach
> VCC.

Ist richtig, Sorry.

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.