RS232 Einstellungen - 115.200 BAUD - Keine Parität - 1 Stopbit Befehle vom PC zum Dongel (AT90S2313) 1. Befehle zum Beschreiben der DMX-Slots Der DMX-512 Frame besitzt 512 Daten Slots. Um vom PC nicht immer alle 512 Slots übertragen zu müssen, habe ich mehrere Befehle zur Datenübertragung generiert. Die gesetzten Slots werden vom dem Dongel gepuffert und so lange ausgegeben bis sie wieder geändert werden. 1.1 QFrame 1qqq qqqq 4xData Der DMX-512 Frame wird in 128 Blöcke zu je 4 Slots aufgeteilt. Block 0 enthält Slot 1 bis 4,..., Block 127 enthält Slot 509-512. Erstes Byte der Befehlsfolge: Bit 7 : Ist immer 1 Bit 0-6: Enthält die Adresse (q) des 4-Byteblocks (QFrame) Zweites bis fünftes Byte: Byte 2: Wert für Slot q*4+1 Byte 3: Wert für Slot q*4+2 Byte 4: Wert für Slot q*4+3 Byte 5: Wert für Slot q*4+4 1.2 OFrame 01oo oooo 8xData Der DMX-512 Frame wird in 64 Blöcke zu je 8 Slots aufgeteilt. Block 0 enthält Slot 1 bis 8,..., Block 63 enthält Slot 505-512. Erstes Byte der Befehlsfolge: Bit 7,6: Ist immer 01 Bit 0-5: Enthält die Adresse (o) des 8-Byteblocks (OFrame) Zweites bis neuntes Byte: Byte 2: Wert für Slot o*8+1 Byte 3: Wert für Slot o*8+2 ... Byte 9: Wert für Slot o*8+8 1.3 HFrame 001h hhhh 16xData Der DMX-512 Frame wird in 32 Blöcke zu je 16 Slots aufgeteilt. Block 0 enthält Slot 1 bis 16,..., Block 31 enthält Slot 497-512. Erstes Byte der Befehlsfolge: Bit 7-5: Ist immer 001 Bit 0-4: Enthält die Adresse (h) des 16-Byteblocks (HFrame) Zweites bis neuntes Byte: Byte 2: Wert für Slot h*16+1 Byte 3: Wert für Slot h*16+2 ... Byte17: Wert für Slot h*16+16 1.4 ZFrame 0001 zzzz 32xData Der DMX-512 Frame wird in 16 Blöcke zu je 32 Slots aufgeteilt. Block 0 enthält Slot 1 bis 32,..., Block 15 enthält Slot 481-512. Erstes Byte der Befehlsfolge: Bit 7-4: Ist immer 0001 Bit 0-3: Enthält die Adresse (z) des 16-Byteblocks (ZFrame) Zweites bis neuntes Byte: Byte 2: Wert für Slot z*32+1 Byte 3: Wert für Slot z*32+2 ... Byte33: Wert für Slot z*32+32 1.5.1 FrameHalf0 0000 0100 FrameAdr Data Es wird der einzelne Wert Data auf den Slot FrameAdr+1 geschrieben. Byte 1: Immer 0000 0100 Byte 2: Adresse für Slot 1-256 (0 -> Slot 1, 255 -> Slot 256) Byte 3: Wert für Slot FrameAdr+1 1.5.2 FrameHalf1 0000 0101 FrameAdr Data Es wird der einzelne Wert Data auf den Slot FrameAdr+257 geschrieben. Byte 1: Immer 0000 0101 Byte 2: Adresse für Slot 257-512 (0 -> Slot 257, 255 -> Slot 512) Byte 3: Wert für Slot FrameAdr+257 1.6 DFrame 0000 0110 DFrameAdr 2xData Der DMX-512 Frame wird in 256 Blöcke zu je 2 Slots aufgeteilt. Block 0 enthält Slot 1 und 2,..., Block 255 enthält Slot 511 und 512. Byte 1: Immer 0000 0110 Byte 2: Enthält die Adresse (DFrameAdr) des 2-Byteblocks (DFrame) Byte 3: Wert für Slot DFrameAdr*2+1 Byte 4: Wert für Slot DFrameAdr*2+2 1.7.1 BlockSetHalf0 0000 0010 StartFrame Count Data Füllt alle Slots ab StartFrame+1 mit dem Wert Data. Count gibt die Anzahl+1 der zufüllenden Slots an. Byte 1: Immer 0000 0010 Byte 2: StartAdresse Slot 1-256 (0 -> Slot 1, 255 -> Slot 256) Byte 3: Anzahl der zufüllenden Slots (1 entspricht 2 Slots, 0 entspricht 257 Slots) Byte 4: Füllwert 1.7.1 BlockSetHalf1 0000 0011 StartFrame Count Data Füllt alle Slots ab StartFrame+257 mit dem Wert Data. Count gibt die Anzahl+1 der zufüllenden Slots an. Byte 1: Immer 0000 0011 Byte 2: StartAdresse Slot 257-512 (0 -> Slot 257, 255 -> Slot 512) Byte 3: Anzahl der zufüllenden Slots (1 entspricht 2 Slots, 0 entspricht 257 Slots) Byte 4: Füllwert 2. Befehle zum Festlegen der Kanaleigenschaften für den Ankommenden DMX-512 Frame Diese Befehle legen fest was mit einem eingehenden DMX-512 Slot geschehen soll. Folgende Codirungen sind möglich: 00: Der auf DMX-In ankommende Slot wird ignoriert es sei denn er hat den Wert 255 Wenn 255 dann wird die Kanaleigenschaft auf 10 gesetzt und eine Info an den PC gegeben. 01: Der Wert wird auf den Stack der captured Slots gelegt und an den PC übertragen. 10: Der Wert wird 1 zu 1 in den DMX-512 Ausgabestram übertragen 11: Beide Aktionen zu 01 und 10 werden ausgeführt. 2.1. CP Half 0 und 1 0000 1hpp FrameAdr Der Befehl bildet aus h:FrameAdr+1 die Slotadresse für die die Kanaleigenschaft pp eingetragen werden soll. pp entsprechend der oben stehenden Tabelle 2.2. CPFull 0000 0001 128xData Der Befehl übertragt die Eigenschaften für alle 512 Slots pro Datenbyte für 4 Slots beginnend mit Slot 1 bis 4 Bit 1 und 0 für den Niederwertigen Slot Bit 7 und 6 für den Höherwertigen Slot 3. CFrame 0000 0111 3.1 Commandframe(CFrame) Der Commandframe dient dazu Frames zu erzeugen dessen erstes Byte ungleich 0 ist. Damit können Setupdaten zu Dimmer und Scanner übertragen werden in so fern sie diese unterstützen. 3.1.1 CFrame-Request 0000 0111, 0000 0000 Byte 1: immer 0x07 Byte 2: immer 0x00 - veranlasst eine Unterbrechung der normalen DMX-Frame Ausgabe - lässt einen BRAKE-MARK Folge erzeugen - bestädigt diese Ausgabe mit 0x41, 0x41 Richtung PC Das Dongel erwartet nun die auszugebenden Daten in 3.1.2 dargestellten Format. !!!WICHTIG!!! die Daten müssen bin der nächsten 500mS gesendet werden, da sonst die angeschlossenen DMX-Geräte ihre Syncronisation verlieren. das Dongel wartet unbegrenzt lange auf diese Daten. 3.1.2 CFrame-Data 0000 0111 count countxData CFrame-Data wird nach CFrame-Request erwartet. Byte 1: immer 0x07 Byte 2: Anzahl (n) der auszugebenden Slots (1-253) Byte 3: Datum 1:1 Ausgabe Byte n: Datum 1:1 Ausgabe 3.2 CFrame-DongelSetup 0000 0111, 4. Befehle vom AT90S2313 zum ATMega8 (interne Befehle) Die folgenden Befehle werden 1 zu 1 an den ATMega8 durchgereicht 4.1 CPFull (0000 0001) 4.2 BlockSetHalf0 (0000 0010) 4.3 BlockSetHalf1 (0000 0011) 4.4 FrameHalf0 (0000 0100) 4.5 FrameHalf1 (0000 0100) 4.6 CFrame (0000 0111) 4.7 CP Half 0 und 1 (0000 1hpp) Die nachfolgenden Befehle werden in einen internen FrameHalf Befehl umgesetzt DFrame QFrame OFrame HFrame ZFrame 4.8 Internen FrameHalf Befehl 0001 010h FrameAdr Data Es wird der einzelne Wert Data auf den Slot h:FrameAdr+1 geschrieben. Die drei Bytes des Befehls werden als Block an dem ATMega8 übertragen. 4.9 Interner NOP (0000 0000) 5. Befehle vom ATMega8 zum AT90S2313 5.1 SCYCLE (0000 0010) Fordert einen Calibrierdurchgang beim AT90S2313 an. Der ATMega8 läuft auf dem internen RC-Oscilator bei 8MHz. Dieser Befehl ermöglicht die genaue Calibrirung des ATMega8 auf 8MHz. 5.2 ECYCLE (0000 0011) Zeigt den Ablauf der Calibrierspanne an und fordert Messwerte vom AT90S2313 ab der AT90S2313 über gibt direkt 'Calib low' und 'Calib High' Byte'. 5.3 NOP (1111 1111) Keine Anforderrungen an den AT90S2313 5.4 PCCOM (10xx xxxx, Datum) Zeigt an, dass ein Datum zum PC übertragen werden soll und übergibt das Datum 6.Befehle vom ATMega8 zum PC 6.1 Podi/Flasherwerte 0011 0nnn, Datum Zeigt den geänderten Wert der Podies und Flasher an. Bit0-2: Nummer des Podi/Flasher Bit3-7: Befehlscode immer 00110 Byte 2: Wert des Podi/Flasher 6.2 Calibrierwert 0100 0011, Datum Überträgt den Calibrierwert des ATmega8 an den PC Byte 1: Immer 0100 0011 Byte 2: Wert des ATmega8 Calibrierregisters 6.3 CFrame-Request-Aknolage 0100 0001, 0100 0001 Zeigt an, das nun die CFrame-Daten erwartet werden. Byte 1: Immer 0100 0001 Byte 2: Immer 0100 0001 6.4 DMX-IN-Canneldata 1ppp pppp, Datum Übergibt einen geänderten DMX-IN-Slot der zur Übertragung an den PC markiert ist. Bit0-6: Pointer des DMX-IN-Tables (Entspricht NICHT der DMX-Slotadresse) Bit 7: Immer 1 Byte 2: DMX-Slot Datum Der Pointer zeigt auf die Slots die in Aufsteigender Reihenfolge markiert sind. z.B. Slot 5,9,37,85,102 sind markiert, dann sind die Pointer wie folgt zugeordnet. Slot Pointer 5 0 9 1 37 2 85 3 102 4 6.5 CP-Overwrite 0100 010s ssss ssss Teilt dem PC mit, dass mit der Flashtaste eines angeschlossenen Steuerpults ein CP-Overwrite von 00 nach 10 stattgefunden hat. Slot Angabe 0-511 Bit 0: MSB des DMX-IN-Slots dessen CannelProperty geändert wurde. Bit1-7: immer 0100 010 Byte 2: LB des DMX-IN-Slots dessen CannelProperty geändert wurde.