XMega128 und USART

OP #1215154
Moin,

ich versuche gerade die USART Schnittstelle eines XMega128A1 zum laufen 
zu bringen. Allerdings sendet der Controller einfach nicht das was ich 
will.

Ich probier es jetzt schon mit einem ganz einfachen Testprogramm:
1
int main (void) 
2
   {
3

4
   PORTE.DIR   = PIN3_bm;
5
   PORTE.OUT   = PIN3_bm;
6
  
7

8
   USARTE0.CTRLA = 0;
9
   USARTE0.CTRLB = 8; // senden einschalten
10
   USARTE0.CTRLC = 3; // 8 Bit
11
   USARTE0.BAUDCTRLB = 0;
12
   USARTE0.BAUDCTRLA = 12;
13

14

15

16
   USARTE0.DATA = 0xAA;
17
   USARTE0.DATA = 0xAA;
18

19
   for(;;)
20
      {
21
      } 
22
   }
und trotzdem wird nicht das gesendet, was eigentlich übertragen werden 
sollte. Hab ich hier irgendeine Feinheit übersehen oder was klappt 
nicht?

Senden tu ich wie man sieht 0xAA, am Terminal kommt 0x2A an. Und das 
Scop sieht sogar 0x95 und 0xF5.

Gruß Mike
Angehängte Dateien:
Gast
Du willst scheinbar 2 mal 0xaa versenden. Wartet da auch irgendjemand 
darauf, daß das 2te 0xaa ins Senderegister geschrieben werden darf, oder 
ist das da nicht erforderlich? Oedr verstehe ich da was falsch ?
OP
Das 2. mal 0xAA war einfach nur ein Test. Der Versuch nur ein 0xAA zu 
senden führt zu einem 0xF5 auf der Leitung.

Der XMega hat übrigens ein zweites Buffer Register, so daß es laut 
Datenblatt ohne Probleme möglich ist 2 Byte in die Register zu schieben 
und
so die Pause zwischen den Übertragungen zu elemenieren.

Normalerweise benutze ich auch lieber die Bitnamen, ich hab auch schon 
die ApNote von Atmel zur USART (incl. Beispielcode) probiert, aber das 
Ergebnis ist immer das gleiche. Deshalb was das hier der letzte Versuch 
um mögliche Fehler in den Headerdateien auszuschließen.
OP
So, habe mein Problem mitlerweile selber lösen können.

Hauptproblem war eine alte Version von HTerm, die gerne das erste 
empfangene Bit ignoriert bzw auf Null gesetzt hat.

Zwietens habe ich
1
   PORTE.DIR   = PIN3_bm;
2
   PORTE.OUT   = PIN3_bm;
noch die Abfolge der beiden Zeilen getauscht. Danach konnte auch das 
Scope die Daten richig dekodieren. Und das zwei Zeichen direkt 
hintereinander schreiben funktioniert tatsächlich ohne Probleme.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.