Attiny2313 USART / Hyperterminal interpretiert falsche Zeichen

OP #1560240
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.
Angehängte Dateien:
OP #1560255
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
Angehängte Dateien:
#1561161
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 :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.