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?
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.
Hallo, du hast zwar die CPU Geschwindigkeit definiert: #define F_CPU 32000000UL aber vermutlich läuft deine CPU mit 2Mhz(Grundeinstellung) Die Einstellung für einen System-Clock von 32 MHz fehlt in deinem Code. Gruß G.G.
Ach ja, hab ich auch übersehen, für 2MHz sind die besten Einstellungen: BSEL=-7 und BSCALE = 1539 -> Fehler=-0,02%. BSEl=0 und BSCALE=12 geht auch -> Fehler=0,16%
Das heißt, entweder ich stelle den oscil. Auf 32mhz und den bsel und bscale ändern dementsprechend. Oder ich lasse den osci und stelle nur bsel unr bscale anders ein?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.