Forum: Mikrocontroller und Digitale Elektronik UART: Statt 'T' ein 'g' ???!!!


von Anfänger (Gast)


Lesenswert?

Hallo zusammen,

ich versuche jetzt schon seit zwei Stunden die UART meines ATmega128
zum laufen zu bringen...sollte eigentlich nicht schwer sein - sollte
man meinen.

Senden tut das Ding auch schon, nur leider das falsche :-(

Ich sende ein 'T' und mein Terminal - Prog empfängt ein 'g'. Das
Tool arbeitet aber richtig - habs mit dem Oszi kontrolliert.

An was könnte es liegen?

Bin für jeden Hinweis dankbar.

Gruss, Tobi

von Tobias (Gast)


Lesenswert?

machst du das ganze mit c oder in asm ?
externer qartz oder interner oszillator ?
hast du mal andere sachen gesendet und die richtig empfangen ?

von hier aus mit den wenigen Fakten die du mitgeteilt hast lässt sich
schwer sagen woran das liegt. Das ist in etwa so als ob du in der
Autowerkstatt anruft und denen sagst mein Auto springt nicht an, woran
kann das liegen.

von Anfänger (Gast)


Lesenswert?

ok, seh ich ein :-)

Der µC Steckt auf nem STK501 und wird mit 8MHz getaktet (also intern).
Programmiert ist das ganze in C (Codevision Compiler).

Was richtiges Empfangen hab ich noch nicht.
Mit der Baud - Rate hab ich auch schon rum - gespielt, hat aber leider
nix gebracht. Format ist: 8Bit,1 Stop, kein P bei 9600 baud
d.h UBRRH = 0x0 und UBRRL = 0x33

Das Prog ist wirklich minimal und arbeitet mit Polling. Ich weiss
wirklich nicht was da dazwischen funkt

von dave (Gast)


Lesenswert?

haste UBRSC (wie das auch heißt..) auch richtig eingestellt?

dave

von Anfänger (Gast)


Lesenswert?

Du meinst UCSRB?!

UCSRB = 0x08

Sonst würde die UART ja überhaupt nix senden

von Rahul (Gast)


Lesenswert?

sende doch mal eine Zahl.Dann könnte man den Fehler besser einkreisen.
65 ist das "A"...

von DerMax (Gast)


Lesenswert?

Wenn du mit internem Oszillator arbeitest, sollte klar sein woran das
liegt oder? Wahrscheinlich noch nichtmal das Calibration Byte gesetzt
oder?
Setz das Kalibrierungs-Byte, nehm ne niedrigere Baud-Rate oder nen
externen Takt. Das STK500 stellt doch UART-freundliche Takte zur
Verfügung... :)

von Burkart Lingner (Gast)


Lesenswert?

+---+           +-------+       +---+
g: | S | 1   1   1 | 0   0 | 1   1 | 0 | P
   +   +-----------+       +-------+   +--

   +-----------+   +---+   +---+   +---+
T: | S   0   0 | 1 | 0 | 1 | 0 | 1 | 0 | P
   +           +---+   +---+   +---+   +--

Die sehen sich so wenig ähnlich, daß ich nicht auf ein
Baudraten-Problem tippen würde.

Was genau sendest Du denn? Ein einziges "T" oder lauter "T"s
hintereinander?

von Markus (Gast)


Lesenswert?

Hallo,

ich hatte vor längerer Zeit das gleiche Problem. Bei mir ist es
definitiev an der Baudrate gelegen, bzw. am Teiler. Es kann sein, dass
Du die UART falsch initialisiert hast. Oszilloskopier mal das gesendete
byte, und schau dann wie lange das gedauert hat, und rechne Dir darüber
dann die Baudrate aus.
So bin ich auf meinen Fehler gekommen.

Grüsse Markus

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.