Semestrální práce - Komunikace po sběrnici RS485 - světla DMX

Z MAM wiki

Přejít na: navigace, hledání

Obsah

[editovat] Procesor

ATmega16-16PU

[editovat] Zdrojový kód

usart.h - knihovna pro čtení hodnoty na sběrnici

dmx.c - zdrojový kód na obsluhu čipu

[editovat] Popis funkce

Procesor inicializuje sběrnici USART, která čeká s nastavenou baudrate na příchozí spojení.

Aktivujeme port PORTA na kterém bude zobrazena přijatá hodnota, jako výstupní

aktivujeme port PORTB na kterém bude adresa_dmx našeho zařízení, jako vstupní

vypneme všechny watchdogy v systému pro nepřerušení čtení na USART modulu

zapneme vektor přerušení v procesoru

Jakmile USART modul obdrží packet příchozí komunikace (tj jedno slovo), spustí přerušení. Zde se počítá adresa (..pořadí) dané hodnoty a pokud pořadí odpovídá námi zadané adrese (buď na portu B pomoci dipswitche, případně zadané číslo), přiřadíme hodnotu registru UDR na PORTA

Mezitím procesor bliká LEDkou na PD7, aby indikoval funkčnost zařízení

[editovat] Postup

Zatím by projekt mohl mít název: Jak nezamknout procesor FUSE bajty aneb 1. května nový nekoupíš. Pokračování bude v principu - jak dostanu načnutou ATmegu16 místo ATmega8, ale vždy se zapíše něco jiného. Další krok - když v linuxu jde zapsat konečně HEX file - jak zprovoznit Eclipse s AVR. Je sedm ráno, spánku jsem neodolal mezi 1.30 a 5.45.

[editovat] Princip

RS-485 je signálová diferenciální sběrnice. Diferenciální znamená, že jednotlivé bity, posílané za sebou, nejsou dány aktuálním (napěťovým) stavem, nýbrž přechodem mezi polaritou dvojice vodičů. Fyzické vedení sběrnice tedy je odolné oproti rušení i bez použití stínění a může být mnohem delší než u nediferenciálních sběrnic (jako např RS-232) při zachování obdobné rychlosti přenosu.

Pro ukázku využití sběrnice jsem si vybral technologii DMX512, kterou se ovládají (nejen) světla na koncertním pódiu.

Jednotlivé adresované zařízení obdrží hodnotu v rozmezí 0x00 - 0xFF a podle hodnoty se zapne (výrobník mlhy) nebo nastaví jas (stmívač), či natočí světelný paprsek (inteligentní hlava).

Sběrnice používá sériový přenos 8mi-bitových hodnot, 512krát za sebou, Tj. adresa je pořadí v packetu a data jsou přímo kódována bity v sérii za sebou.

Protokol používá vždy jeden startbit 0 a dva stopbity 1 1, to znamená, že na každé adresované zařízení připadá 11 bitů. Baudrate protokolu je 225kbps.

[editovat] Ukázková sestava

Mým úkolem je sestavit komunikaci mezi PC přes USB/RS-485 převodník na chip ATmega tak, aby ovládací software (pokud možno freeware nebo napsaný) posílal osmibitovou hodnotu na PORTx, kde ji budu indikovat pomocí šestice LED diod (případně hodnota bude výchozí hodnotou pro PWM modulaci na OC2 bitu.

Pro převod mezi RS-485(diferenciální sběrnice) a TTL(procesor) používám obvod SN75176

[editovat] Zdroje

Datasheet ATmega16

Programátor DASA

http://avrprogrammers.com/images/sbbpdasa.gif

Řízení světel pomocí DMX

AVR-DMX (sourceForge)

How DMX512 Works

Osobní nástroje