Forum: Mikrocontroller und Digitale Elektronik Xmega usart Problem


von Egon 64 (Gast)


Lesenswert?

Hallo an alle

ich versuche geade an einem xmega den USART zum laufen zu bringen um 
einen GPS Empfänger auszulesen. Leider funst das aber nicht. Was mache 
ich da falsch?
CPU 32000000
Baudrate 9600
8 Datenbits
1 Stoppbit
No Parity

  // Initialisierung der Seriellen Schnittstelle

PORTF.DIRSET = PIN3_bm;    // PORTF3 (TXD0)
PORTF.DIRCLR = PIN2_bm;   // PORTF2 (RXD0)

USARTF0.BAUDCTRLA = 0x7B;  F_CPU 32000000 9600 bps 0x7B / 0xD6
USARTF0.BAUDCTRLB = 0xD6;

USARTF0.CTRLA = 0x30;       //RX high level interrupt 0x30
USARTF0.CTRLC = 0x03;       // Async, No Parity, 1 stop bit, 8 data bits
USARTF0.CTRLB = 0x10;       // Enable RX and TX Disable // kein CLK2X

  // Initialisierung der Seriellen Schnittstelle ende

Danke Egon

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

BAUDCTRLB ist in den oberen 4Bit ein fraktionaler Teiler. Ich bin mir 
nicht sicher, ob Du den wirklich nutzen willst. Für den Baudratenteiler 
bekomme ich 207dez // CFhex heraus. BAUDCTRLH ist also $CF und BAUDCTRLB 
ist $00 Fcpu/(Baud*16)-1 war glaub ich die Formel. Musst Du nochmal 
überprüfen.

von Sauger (Gast)


Angehängte Dateien:

Lesenswert?

Mahlzeit,
ohne es ausprobiert zu haben würde ich in etwa so anfangen:
1
#define BAUD       9600
2
#define BSEL       3317         // mit der xls aus AVR1307.zip
3
#define BSCALE     -4           // berechnet
4
5
PORTC.DIRSET      = PIN3_bm;   // TX = OUT
6
PORTC.DIRCLR      = PIN2_bm;   // RX = IN
7
8
USARTC0.BAUDCTRLA = (uint8_t)BSEL;
9
USARTC0.BAUDCTRLB = (BSCALE << USART_BSCALE0_bp)|(BSEL >> 8);
10
USARTC0.CTRLA     = USART_RXCINTLVL0_bm;
11
USARTC0.CTRLC     = USART_CMODE_ASYNCHRONOUS_gc |USART_PMODE_DISABLED_gc |
12
                    USART_CHSIZE_8BIT_gc;
13
14
USARTC0.CTRLB     = USART_RXEN_bm | USART_TXEN_bm;
15
PMIC.CTRL        |= PMIC_LOLVLEX_bm;

und den Interrupthandler nicht vergessen!

MfG

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.