Forum: Mikrocontroller und Digitale Elektronik DMX Usart: ISR löst 514x aus nicht 512x


von Bernd S. (mms)


Lesenswert?

Hi,

hab grad ein kleines problem mit dem empfangen von dmx-datenpaketen (512 
Werte): es werden zwar alle Kanäle empfangen, allerdings löst die ISR 
nicht 512x aus sondern 514x aus; bei allen Interrupts ist auch das 
AT91C_US_RXRDY Bit gesetzt.

entsprechend ist der erste DMX-Wert im Array nicht der Wert Array[0] 
sondern der Wert Array[1]. Sprich die ISR empfängt einen Interrupt nach 
der Break, dann empfängt die ISR alle 512 Kanäle und anschließend 
nochmals einen Interrupt (wenn die Break anfängt))....

Ist das normal?

Baudrate 250kBaud, und Clock vom Prozessor stimmen; 8 Datenbits, zwei 
Stoppbits und ein Startbit sind auch ausgewählt.

Gruß
Bernd

von R. M. (rmax)


Lesenswert?

Für den empfangenden UART ist der Break ein Frame-Error. Je nach dem wie 
er konfiguriert ist (bzw. sich konfigurieren läßt) löst auch ein 
Frame-Error einen Interrupt aus. Die ISR muß dann anhand der 
Status-Flags des UART unterscheiden, welcher Fall vorliegt.

von Bernd S. (mms)


Lesenswert?

das hab ich auch - beim AT91SAM9263 Prozessor ist das dann ein
1
if( ulStatus & AT91C_US_RXRDY )
2
{
3
  cntr++; 
4
}
5
6
if((ulStatus & AT91C_US_RXBRK) == AT91C_US_RXBRK)
7
{
8
  //um den break zu erkennen
9
  //hier ist dann cntr = 0x202  
10
}

Gruß
Bernd

von R. M. (rmax)


Lesenswert?

Könnte es sein, daß beim Break beide Flags gesetzt sind, z.B. weil 
AT91C_US_RXRDY nach jedem empfangenen Byte explizit zurückgesetzt werden 
müßte?

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

DMX heisst doch:

FE, 0, Byte1, Byte2, ...Byte512

Wenn der Frame Error und das Startbyte was immer 0 sein muss mitgezählt 
werden dann ergeben sich 514 Interrupts!

MFG Mixer

von Henne (Gast)


Lesenswert?

so ist es.

von Bernd Schuster (Gast)


Lesenswert?

alles klar, danke für die aufklärung!

Gruß
Bernd

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.