www.mikrocontroller.net

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


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht 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.


void USART_Configure(AT91S_USART *usart,
       unsigned int mode,
       unsigned int baudrate,
                     unsigned int masterClock)
{

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

// Configure mode
usart->US_MR = mode;

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


}


void Usart_Init(void)
{
  unsigned int mode = AT91C_US_USMODE_NORMAL
    | AT91C_US_CLKS_CLOCK
                  | AT91C_US_PAR_NONE
    | AT91C_US_CHRL_8_BITS
                  | AT91C_US_NBSTOP_2_BIT
    | AT91C_US_CHMODE_NORMAL;

  AT91F_US0_CfgPMC(); 
  AT91F_US0_CfgPIO();
  USART_Configure(AT91C_BASE_US0, mode, 250000, CLOCK_FREQ2);
  AT91C_BASE_US0->US_IER = AT91C_US_RXRDY | AT91C_US_FRAME;
  AT91F_AIC_ConfigureIt();
  AT91F_AIC_EnableIt();
  AT91C_BASE_US0->US_CR = AT91C_US_RXEN;
}


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

Autor: henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: henne (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.