DMX receive: kein framing-error

OP #1386733
Lesenswert?

Hi,

ich hab ein paar Schwierigkeiten mit dem USART vom AT91SAM9263 
Controller. Die DMX-Daten kommen zwar an, aber ich kann nicht auf den 
Break-Impulse synchronisieren (es findet kein Frame-Error etc. statt).

Die übertragenen DMX-Werte werden jedoch richtig erkannt und dargestellt 
- nur auf der falschen Position.

1
void USART_Configure(AT91S_USART *usart,
2
       unsigned int mode,
3
       unsigned int baudrate,
4
                     unsigned int masterClock)
5
{
6

7
// Reset and disable receiver & transmitter
8
usart->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS;
9

10
// Configure mode
11
usart->US_MR = mode;
12

13
// Configure baudrate
14
// Asynchronous, no oversampling -> dmx is asynchron 
15
if(((mode & AT91C_US_SYNC) == 0)
16
    && ((mode & AT91C_US_OVER) == 0)) {
17
    
18
     usart->US_BRGR = (masterClock / baudrate) / 16;
19
}
20

21

22
}
23

24

25
void Usart_Init(void)
26
{
27
  unsigned int mode = AT91C_US_USMODE_NORMAL
28
    | AT91C_US_CLKS_CLOCK
29
                  | AT91C_US_PAR_NONE
30
    | AT91C_US_CHRL_8_BITS
31
                  | AT91C_US_NBSTOP_2_BIT
32
    | AT91C_US_CHMODE_NORMAL;
33

34
  AT91F_US0_CfgPMC(); 
35
  AT91F_US0_CfgPIO();
36
  USART_Configure(AT91C_BASE_US0, mode, 250000, CLOCK_FREQ2);
37
  AT91C_BASE_US0->US_IER = AT91C_US_RXRDY | AT91C_US_FRAME;
38
  AT91F_AIC_ConfigureIt();
39
  AT91F_AIC_EnableIt();
40
  AT91C_BASE_US0->US_CR = AT91C_US_RXEN;
41
}

Vielleicht hat jmd von euch eine Idee, an was das liegen könnte. Wenn 
ich die Baudrate ändere, dann bekomm ich Framing-Error angezeigt, jedoch 
sind natürlich dann auch die DMX-Werte falsch.

Gruß
Bernd
Gast #1386940
Lesenswert?

250kBaud, 8n2 ist auf jeden Fall richtig.

Bei AVRs hakelt es dann meistens am Takt oder an einem verpolten 
DMX-Signal, wenn es nicht klappt.

Was ist denn Deine DMX-Quelle? Hast Du mal den Rx-Pin mit GND verbunden 
- das müsste auch als Break erkannt werden.

Schade, dass ich bislang nicht mit ARMs gewerkelt habe...


VG,
Hendrik

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren