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
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.
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
haste UBRSC (wie das auch heißt..) auch richtig eingestellt? dave
Du meinst UCSRB?! UCSRB = 0x08 Sonst würde die UART ja überhaupt nix senden
sende doch mal eine Zahl.Dann könnte man den Fehler besser einkreisen. 65 ist das "A"...
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... :)
+---+ +-------+ +---+ 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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.