Forum: Mikrocontroller und Digitale Elektronik 10,5 bit an/von RS232


von florian niemann (Gast)


Lesenswert?

Hallo.
Kann mir mal jemand erklaeren wie man 1,5 Stopbits auf Atmega 
realisiert? Beispielprogramm waere nett.

mfg. nie

von Oliver (Gast)


Lesenswert?

Muss es denn unbedingt 1.5 sein?

Aus meiner Erfahrung kann ich Dir nur sagen, daß etliche PC-UARTS
das auch nicht können.

Grüße
Oliver

von florian niemann (Gast)


Lesenswert?

Ich probiere eine schnelle Baudrate zu verwenden. Leider kommt schon bei 
19200 relativ oft Mist raus. Habe gelesen, dass man mit 1,5 Stopbits 
56000 baud erreichen kann.

gruss florian

von Markus Burrer (Gast)


Lesenswert?

Wie wäre es, wenn Du statt dessen einen anderen Quarz verwendest? Je 
nach Controller z.b. 7,3728MHz oder 11.0592MHz. Schau mal ins Datenblatt 
in die Baudratentabelle

von Oliver (Gast)


Lesenswert?

Hallo Florian,

Mist kommt bei der Übertragung immer raus. Mal mehr, mal weniger.
Das kommt von den Abtastfehlern (Synchronisationsproblem) der UARTS.

Die einfachste Art einen Fehler zu detektieren ist, mit Paritätsbits zu 
arbeiten. Der UART-Baustein signalisiert dann eventuell einen 
Übertragungsfehler(Doppelfehler werden nicht erkannt). Beheben kann man 
ihn allerdings nicht.
Wenn Du eine sichere Verbindung aufbauen willst, mußt Du ein 
Übertragungsprotokoll aufsetzen. Jedes Telegramm wird dann durch einen 
CRC geschützt. Wird ein fehlerhaftes Telegramm erkannt, wird es erneut 
angefordert.

Grüße
Oliver

von mikki merten (Gast)


Lesenswert?

19200 und 38400 Baud sind auch mit 8 MHz problemlos möglich, da hier der 
Fehler unter 0,2% liegt. Mit 7,3728 MHz sind 115000 Baud in beide 
Richtungen möglich. Diese Geschwindigkeiten schafft der AVR ganz ohne 
Probleme.

von florian niemann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo an alle!

Ich hab einen 3,6864 MHz Quarz. Laut Datenblatt bis 115200 baud keine 
Fehler. Also wird es wohl an dem Prog oder Kabel liegen. Im Anhang ist 
es (das Prog) . Vieleicht schaut mal jemand rein. Die Fehler sind ganz 
schoen haeufig.

schonmal Thanx
florian

von Oliver (Gast)


Lesenswert?

Deine Formel ist falsch!
Muss lauten:
ldi temp, quartz / (16*(baud +1))

Grüße
Oliver

von florian niemann (Gast)


Lesenswert?

Hi Oliver!

Die Formel haut schon hin. Im UBRR steht das richtige drin! Werde mich 
dann mal weiterprobieren.

florian

von mikki merten (Gast)


Lesenswert?

Warum aktivierst du den RXC Interrupt wenn du ihn nicht nutzt? Das UDR 
enthält nur gültige Daten wenn RXC Flag im UCSRA gesetzt ist. Und warum 
setzt du das CHR9 Bit. Dann musst du auch TXB8 setzen um mit 2 Stop Bits 
zu senden.

von florian niemann (Gast)


Lesenswert?

@mikki

hi.
Sorry das da quark stand. mein prob ist damit aber auch nicht geloest.

mfg.
niemann

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.