- Zasilanie 230 V AC/maks. 2 VA.
- Dwa wejścia interfejsu DMX, jedno wyjście.
- Przyjmuje ramki DMX o różnych długościach.
- Przystosowany do zamontowania w obudowie KM-60.
Budowa mergera nie jest tak prosta, jak opisywanego w poprzednim numerze EP splittera, w którym wystarczyło „rozdzielić” sygnał na kilka wyjść, co daje się łatwo zrobić z użyciem kilku driverów MAX485. W mergerze trzeba zsumować dwa niezsynchronizowane ze sobą strumienie DMX. Każdy ze strumieni może przenosić od 24 do 512 bajtów danych. Funkcjonalność taką można zrealizować z użyciem mikrokontrolera mającego dwa interfejsy UART. Wskazane, aby można było ustalić, jaką część strumienia wykorzystują poszczególne wejścia, co umożliwi połączenie kaskadowe wielu mergerów. Do skonfigurowania takiego urządzenia, co prawda, wystarczyłyby zworki, ale większe możliwości daje impulsator i wyświetlacz alfanumeryczny.
Budowa i zasada działania
Napięcie zasilające 230 V AC jest obniżane w transformatorze, następnie prostowane za pomocą diod D1 i D2, po czym stabilizowane przez układ U1. Dane wejściowe konwertowane są w układach U2 i U3, a następnie trafiają na wejścia UART mikrokontrolera. Przeważnie merger będzie jedynym urządzeniem podłączonym do konsoli czy interfejsu komputera, dlatego zworki JP2 i JP3 powinny być założone. Przekształcone dane wyjściowe z mikrokontrolera są konwertowane za pomocą U5. Mikrokontroler steruje także alfanumerycznym wyświetlaczem LCD oraz odczytuje informacje z impulsatora. Wyświetlacz i impulsator umieszczono na osobnej płytce, zamontowanej pod kątem 90 stopni w stosunku do płyty głównej.
Jak widać, budowa urządzenia jest nieskomplikowana, program już niestety taki nie jest. Oprogramowanie mikrokontrolera odbiera dane z obu interfejsów USART i zapamiętuje je w tablicy. Obsługa USART odbywa się z użyciem przerwań. Realizuje to procedura (dla USART0).
Przy odbiorze danych z USART z użyciem mechanizmu przerwań należy pamiętać, aby zadeklarować przerwanie jako „Signal”. W przeciwnym wypadku dojdzie do przepełnienia stosu, gdyż znacznik przerwania jest kasowany po zakończeniu jego obsługi, a nie po wejściu w przerwanie, tak jak to się dzieje w wypadku przerwań od timerów i innych peryferii. Jeśli konieczne byłoby przerwanie wielopoziomowe, należy postąpić w następujący sposób:
- Zadeklarować przerwanie jako „Signal”.
- Odblokować przerwania za pomocą „sei()”.
- Obsłużyć przerwanie.
Przerwania nie trzeba odblokowywać przy wychodzeniu z procedury jego obsługi. Dzieje się to automatycznie przy odtwarzaniu rejestru CREG.
Procedura odbiorcza jest zabezpieczona przed przepełnieniem bufora. Jak wspomniano, konsola może wysyłać od 24 do 512 bajtów danych. W zmiennej curLenDmx znajduje się liczba odebranych danych. Gdy dwa razy zostanie odebrana taka sama ich liczba (zmienna prevLenDmx), jest ona zapamiętywana w LenDmx0 dla USART0 lub LenDmx1 dla USART1.