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 solange 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 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 (0 entspricht 256 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 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 (0 entspricht 256 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 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 count Data Noch nicht deffiniert. Befehle vom AT90S2313 zum ATMega8 Die folgenden Befehle werden 1 zu 1 an den ATMega8 durchgereicht 1.1 CPFull (0000 0001) 1.2 BlockSetHalf0 (0000 0010) 1.3 BlockSetHalf1 (0000 0011) 1.4 FrameHalf0 (0000 0100) 1.5 FrameHalf1 (0000 0100) 1.6 CFrame (0000 0111) 1.7 CP Half 0 und 1 (0000 1hpp) Die nachfolgenden Befehle werden in einen internen FrameHalf Befehl umgesetzt DFrame QFrame OFrame HFrame ZFrame 1.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. 1.9 Interner NOP (0000 0000) Befehle vom ATMega8 zum AT90S2313 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. ECYCLE (0000 0011) Zeigt den Ablauf der Calibrierspanne an und fordert Messwerte vom AT90S2313 ab NOP (1111 1111) Keine Anforderrungen an den AT90S2313 PCCOM (01xx xxxx) Zeigt an, dass ein Datum zum PC übertragen werden soll Befehle vom ATMega8 zum PC Beschreibung folgt.