mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenfehler in drahtloser UART Tiny13 / ATMega16


Autor: Torsten B. (torty)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich versuche im Augenblick eine drahtlose UART (simplex) Verbindung 
zwischen einem Tiny13 und einem ATMega16 erzustellen. Da der Tiny13 ja 
keine UART hat, habe ich eine Art Software UART für ihn programmiert, um 
die Daten über PB0 an meinen Sender zu schicken. Um nicht zu viel Zeit 
in Warteschleifen zu verbringen, habe ich eine Baudrate von 115kBaud 
programmiert. Ein Bit ist dann 4ms lang. Gesendet wird 1 Startbit, 8 
Datenbits und 4 Stoppbits.
Der Empfänger hängt nun wieder an dem RX Pin der USART des Mega16 und 
ist ebenfalls auf 115 kBaud eingestellt.

Jetzt zum Problem:
Ich habe Probleme, eine sichere Verbindung aufzubauen. Ich empfange zwar 
ab und zu das, was ich auch gesendet habe, jedoch kommt es zu (wie ich 
finde) zu vielen Fehlern.
Ich habe einen Zähler programmiert, der alle Fehlerhaften Bytes zählt 
und mir auf meinem LCD anzeigt. Manchmal sychronisiert sich Sender und 
Empfänger auch gar nicht.
Erst, wenn ich mit einem Reset am Empfänger uC in den Datenstrom 
einsteige kommt es zu einer Verbindung.

Frage:

Glaubt Ihr dass das Problem bei der Synchronisierung /Datenfehler eher 
am internen Oszillators des Tiny13 liegt ? Man liest ja sehr oft, dass 
für eine UART ein Quarz angesagt ist. Dagegen spricht jedoch, dass es 
doch bei einem Einzelstück (ohne Temperaturschwankungen) auch mal 
klappen sollte, wenn man alles auf einander abstimmt.

Oder glaubt Ihr, dass das Problem in der hohen Baudrate liegt ? Ist eine 
9600 Baud Leitung sicherer ?

Danke für jeden ernst gemeinten Tipp und Hinweis.
Torsten

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Torsten B. schrieb:
> ... habe ich eine Baudrate von 115kBaud
> programmiert. Ein Bit ist dann 4ms lang.

???

Bei 115 kBaud ist ein Bit ca 8,7 µs lang.
Oder umgekehrt: 4 ms pro Bit sind gerade mal 250 Baud.

Autor: Torsten B. (torty)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Recht, da stimmt etwas nicht. Ich glaube aber, dass es hier ein 
Messfehler sein wird. Wenn ich mich nämlich wirklich in diesen 
Dimensionen verrechnet haben sollte, würde ich nur Müll empfangen. 
Zeitweise klappt es ja wie gesagt.

Glaubst Du denn, dass es (abgesehen von der Bitlänge) eher an der hohen 
Baudrate oder am nicht verwendeten Quarz im Sender liegen könnte ?

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Serielle Kommunikation ohne Quarz ist naheu unmoeglich. Die Baudrate 
muss auf besser als 2% stimmen, was ein AVR-RC nicht tut

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Torsten B. schrieb:

> Glaubst Du denn, dass es (abgesehen von der Bitlänge) eher an der hohen
> Baudrate oder am nicht verwendeten Quarz im Sender liegen könnte ?

Oder vielleicht doch eher hieran:
> habe ich eine Art Software UART für ihn programmiert
?

Sorry, aber deine Aussage bezüglich der Bitlänge oben stärkt nicht 
unbedingt meinen Glauben, dass du einen Software-UART mit 115 kBaud 
innerhalb der erforderlichen Genauigkeit hin bekommen hast.

Davon abgesehen: du machst keinerlei Aussagen über die Funkverbindung. 
Wieso vermutest du die Fehlerquelle nicht dort? Hast du die selbe 
Fehlerrate bei einer direkten Verbindung?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Erst, wenn ich mit einem Reset am Empfänger uC in den Datenstrom
> einsteige kommt es zu einer Verbindung.
Du solltest dem Empfänger schon mal die Möglichkeit geben, sich auf den 
Sender zu synchronisieren. Dazu muß zwischen 2 Zeichen ab und zu eine 
Pause von mindestens 1 Zeichen kommen. Auf einen kontinuierlichen 
Datenstrom kann sich kein RS232 Empfänger einsynchronisieren. Die 
Stoppbits allein reichen da nicht aus.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.