Forum: Mikrocontroller und Digitale Elektronik DMX receive: kein framing-error


von Bernd S. (mms)


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

von henne (Gast)


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

von henne (Gast)


Lesenswert?

Gibt es eigentlich irgendwelche FIFOs in der Hardware, die eine solche 
Verschiebung bewirken könnten?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.