DMX512 přijímač - je nutné pro UART pozměnit DMX512 paket?

Ahoj

Zde neco o protokolu DMX512 cs.wikipedia.org/wiki/DMX512
Chtel bych prijimat DMX512 data pomoci UARTU v MCU.Zajimalo by me, jestli musim resit kromne prevodu urovnina TTL take format paketu ktery ma DMX512.Nebo jestli staci proste cist jak je zvykem a ignorovat mezery mezi ramci,pakety,atd. a vse zajisti start bit a stop bity??

:arrow_right: administrator: přesunuto z "Ostatní"

:arrow_right: administrator: přejmenováno z "DMX512 prijimac"

Tak nejspis to asi cist bezne UARTEM nepude,musi se no nejak softwarove overit a aby nechdily nesmyslny bajty.Ma nekdo skusenosti s implementaci DMX512 v MCU ??

inspiracie tu dmx512.svetla.org/

a tu dmx512.cvut.org/USB-DMX512-navod.htm

pre programatora cpu by to nemal byt problem hlavne ked je to na com vyskusat…

Me napada reseni pri kterym budu citacem odmerovat nulovej usek,jak zjistim ze je to reset,tak budu cekat az pride znacka,kdyz pride zapnu UART a vypnu citac.Prectu si kanaly ktery potrebuju a vypnu UART a zapnu ciotac.tzim zacina vse od znova a cekam dalsi paket.Napred sem myslel ze by to slo ciste s UARTEM bez citace,ale tam je naprt ze to cte po bytech.Ten citac si nastavim pekne na stejnou rychlost a budu krasne detekovat hrany bit po bitu.Jestli se v necem pletu tak me pls opravte

projekt.cvut.org/ tu mas dekoder s atmega8

No tam to je zrovna takovym nesikovnym zpusobem ale logicky.Neco co tu navrhoval JJirkAA, ale zjistil ze se to ma delat pres detekci priznaku FRAME ERROR.I kod sem nasel: [code]
ISR(USART_RX_vect) {
static uint16_t dmx_channel, dmx_base;
uint8_t status, data;
int16_t index;

    // read UART data, also clears interrupt flag
    status = UCSRA;
    data = UDR;
    if (status & (1<<FE))   // frame error
{                                 
       if (data==0)            // break -> DMX Reset
      {                        
        dmx_channel=0;
        dmx_base = (~PINB & 0xFF)+1;   // read dip switches which define DMX base address
        if (~PIND & (1<<PD6)) dmx_base +=256;
        flag=1;                               // trigger update
      }
      else dmx_channel++;                                  // rx error
    }
    else
{
      index = dmx_channel-dmx_base;
      if (index>=0 && index<dmx_size) dmx_array[index]=data;
      dmx_channel++;
    }
  }

[/code]

Pokial mi vedomosti stacia, tak DMX na UART prevedies pomocou jednej sucistky, tu mas schemu. picprojects.org.uk/projects/dmx/ … ematic.gif
Este ma zaujima, ci vyrabas vysielac, alebo prijimac, pretoze ja si budem robit ovladac, teda vysielac len este neviem ze ako,…

:arrow_right: administrator: přiloženy externí soubory

Pozor!!!MAX481 ti prevede pouze napetove urovna z urovni jaky ma DMX512 na TTL urovne.Protokol zustane ale stejny,trochu se lisi seriovky,sou tam nejaky signaly navic,jinak pak uz prijimas normalne byte po byte.viz. internet…