Forum: Mikrocontroller und Digitale Elektronik Text über Uart und FT232 an PC


von Massa-Master (Gast)


Lesenswert?

Hi ich sitze gerade wieder mal an meinem Testboard.

Ich habe mir heute meinen FT232RL aufgelötet und wollte mir zum Test von 
meinem Atmega128 zum PC ein paar Zeichen senden. Ich fahre momentan mit 
38kbaud.

Folgendes Problem:
Sende ich mit UDR1 = "A"; ein "A" dann komt am PC ein "E" an
Sende ich mit UDR1 = "B"; ein "B" dann komt am PC ein "G" an
Sende ich mit UDR1 = "C"; ein "C" dann komt am PC ein "I" an

Sende ich mit UDR1 = 65; ein ASCII-"A" dann kommt auch ein "A" an.

Meine Uart Config sieht so aus:
  UCSR1A = (1 << U2X );
  UCSR1B = (1 << RXEN) | (1 << TXEN);
     UCSR1C = (0<<USBS1)|(1 << UCSZ11) | (1 << UCSZ10);
     UBRR1L = 25;     //38 kBaud bei 8 Mhz U2X = 1
     UBRR1H = 0;

Mein Testboard kenn ihr schon aus diesem Beitrag:
Beitrag "Hoher Strom bei Taster am Eingan"

von Massa-Master (Gast)


Lesenswert?

OK es ist mir zu peinlich ^^
Statt

UDR1 = "A";

muss es natürlich

UDR1 = 'A';

heißen

von gtf (Gast)


Lesenswert?

1)TX und RX- Leitungen vom FT232RL miteinander verbinden, und prüfen ob 
die vom Terminalprogramm gesendete Zeichen auch richtig ankommen.
Treten keine Fehler auf, so kann man den FTDI als funktionsfähig 
abstempeln.
2)Wozu schaltest du UART double speed ein?
  UCSR1A = (1 << U2X );
Hab’s noch nie gebraucht, also zuerst mal abschalten.
  UCSR1A = (0 << U2X );

3)   UBRR1L = 25;     //38 kBaud bei 8 Mhz U2X = 1
Diese Zeile deutet darauf hin, dass du als Clocksource den Internen RC- 
Oszillator verwendest. Ist keine so gute Idee. Für Testzwecke sollte man 
die Baudrate sehr klein wählen(bsp. =<600Baud/s), somit dürfte es 
vielleicht noch klappen. Für höhere Baudraten sollte ein Baudratenquarz 
oder überhaupt ein Quarz verwendet werden.

Hast du schon dieses Tutorial gelesen?
http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART
ist echt spitze.

Weitere nützliche Informationen über die UART gibt’s im jeweiligen 
Datenblatt.

Gruß gtf

von Massa-Master (Gast)


Lesenswert?

Danke für die Antwort.
Ähm ich muss ehrlich sagen mit meinem zweiten Beitrag wollte ich 
mitteilen daß ich das Problem gefunden habe. Es waren einfach nur die 
doppelten Gänsefüße ^^. Wollte ja keinen String übergeben sondern nur 
ein einziges zeichen. Es funktioniert jetzt jedenfalls ^^

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.