Forum: Mikrocontroller und Digitale Elektronik Attiny2313 USART / Hyperterminal interpretiert falsche Zeichen


von Multi K. (multikulti)


Angehängte Dateien:

Lesenswert?

Guten Tag,
ich möchte mich ein wenig mit der USART Schnittstelle vertraut machen, 
und habe ein kleines Programm geschrieben das Zeichenketten an den PC 
senden soll. Der quellcode ist im Anhang. Ich habe 2 verschiedene 
Methoden ausrobiert, eine davon ist auskommentiert.

Das programm scheint soweit auch zu funktionieren, der Controler sendet 
munter, jedoch kommt beim Hyperterminal nur Schrott an. Der 
interpretiert seltsame zeichen in die Daten. Im Program ist extra eine 
synchronisationszeit einprogrammiert, daran kann es eigentlich nicht 
liegen. Außerdem müsste sich der HypertTerminal spätestens nach einem 
Reset synchronisieren.
Das Format ist standartmäßig auf 8 bit und 1 Stoppbit. Am UCSRC Register 
verstell ich eigentlich nichts, ich habe lediglich mal probiert ob das 
ganze im Synchronmodus funktioniert.
Ich habe mit dem Osziloskop mal verschiedene Zeichen durchgemessen. Die 
Bitmuster entsprechen alle ihrem Wert und die Baudrate müsste auch 
stimmen.
Beim Hyperterminal habe ich eigentlich auch alles richtig eingestellt ( 
8 bit, keine Paritätsprüfung, 1 stoppbit, keine Flussteuerung )
Ich habe die Baudraten 2400 und 9600 ausprobiert, der Oszilator 
osziliert mit 3,686 MHz.

von g457 (Gast)


Lesenswert?

CKDIV8 noch gesetzt? Ansonsten wäre Quellcode(sic!) hilfreich.

von Multi K. (multikulti)


Angehängte Dateien:

Lesenswert?

Hopla, hab versehentlich die .aps datei angehängt anstadt die .asm 
Datei. Jetzt müssts aber die richtige sein.

An CKDIV8 hab ich auch schon gedacht, der ist nicht gesetzt. Außerdem 
hab ich die Baudrate ja mit dem Osziloskop überprüft. Die müsste 
eigentlich stimmen.

Ich benutze übrigens das STK500

von Sascha W. (sascha-w)


Lesenswert?

wie ist der AVR mit dem Rechner verbunden ?

Sascha

von Karl H. (kbuchegg)


Lesenswert?

Wenn die Gegenstelle etwas anderes empfängt als der Sender sendet, dann 
liegt das zu 99% praktisch immer daran, dass der µC nicht mit der 
Taktfrequenz arbeitet mit der der Programmierer rechnet.

Das kann jetzt zb sein, weil der µC immer noch auf internen Oszillator 
steht und nicht auf externem Quarz.

Programmier dir doch einfach mal eine Warteschleife, mit der du eine LED 
blinken lässt. Leg deine 3.irgendwas Mhz zugrunde und berechne das Ganze 
so, dass die LED 1 Sekunde an, 1 Sekunde aus ist. Und dann siehst du dir 
das Blinken an und entscheidest ob das Timing stimmen kann. Ob die 
Taktfrequenz aufs letzte Herz stimmt, kannst du damit natürlich nicht 
feststellen, aber den Unterschied zwischen 1Mhz und 3Mhz sieht man dann 
schon sehr deutlich :-)

von Falk B. (falk)


Lesenswert?

Und wieder mal ein UART-Problem. Das 1002te.

http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

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.