Usart beim Xmega128a3

OP #3504153
Lesenswert?

Hallo

Hab ein kleines Problem mit dem Xmega.

Und zwar habe ich ein Board, wo ein Grafik-display mit einem Xmega128a3 
verbunden ist.
Intern sind sie mit D1->Reset; D2->RX; und D3->TX

Baudrate soll 9600 sein.
Mit Usart wird der Grafikcontroller Picaso SGC angesteuert.

Habe ich im programm einen Fehler?
Angehängte Dateien:
#3504281
Lesenswert?

Hallo,

ohne Deinen Code genau durchgeschaut zu haben, ist mir aufgefallen, dass 
Deine Baudberechnung meiner Meinung nach nicht stimmt.
Bei 32MHz und 9600 Baud wäre der günstigste Wert für BSCALE -4 und für 
BSEL 3317. Das würde für
USARTD0.BAUDCTRLA = 0b11110101;
und
USARTD0.BAUDCTRLB = 0b10111100;
ergeben.
#3504386
Lesenswert?

Genau, probiers einfach aus. Du kannst für BSEL und BSCALE zwei 
Variablen verwenden z.B.:
  uint16 BSEL=1539;
  int8 BSCALE=-7;
Ich hab gerde gesehen, dass ich im letzten Beitrag BSEL und BSCALE 
verwechselt habe.

und die Variablen so zuweisen:
USARTD0.BAUDCTRLA  = (uint8) (BSEL);
USARTD0.BAUDCTRLB  = (uint8) (BSEL>>8) | (BSCALE & 0x80) | (BSCALE<<4) ;

So habe ich es in meinem letzten Projekt gelöst

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