www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USART Problem Startbiterkennung


Autor: Ncky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen!

Ich sitze gerade an einer Kommunikation zwischen mehreren µC. Ich 
verwende ATmega16. Die Kommunikatin erfolgt über SN75176 aus der USART 
auf RS485. Die Datenübertragung steht mit 9600Baud.

Einer meiner Controller ist als Master definiert und sendet Anfragen an 
die anderen Controller im Format "1 Startbit - 8 Datenbit - 2 Stoppbit" 
wobei vom Master ein Adressbyte gefolgt von 3 Datenbyte gesendet werden. 
Der mittels Adressbyte angesprochene Slave anwortet mit "1 Adressbyte + 
1 Datenbyte". Da das ganze über 2 Drahtleitung funktioniert, muss ich 
den Bustreiber entsprechend von Senden auf Empfangen oder umgekehrt 
umschalten. Das funktioniert auch super. Die Kommunikation ist in Master 
und Slave gleich aufgebaut, nur das dem Master die Verwaltung (Polling 
mit Time Out, um bei fehlender Antwort mit anderem µC weiter zu machen) 
zugefügt ist.
Soviel zum Aufbau.

Nun habe ich beim Empfangen vom Slave Probleme im Datenempfang. Ich 
gucke mir auf dem Oszi die Daten sowie die Bustreiberumschaltung an und 
kann erkennen, dass der Master wohl ab und an das Startbit nicht 
erkennt. Sendet ein Slave Daten, bei dem das LSB=0 ist, funktiniert 
alles super, ist das LSB jedoch 1, dann läufts aus der Bahn, erkennbar 
an der Zeitverschiebung für die Umschaltung von empfangen auf senden 
sowie in der Darstellung des empfangenen Byte-Wertes auf LEDs.

senden von 0x3F führt zur Anzeige von 0x3F um Wechsel mit 0xFE
senden von 0x1F führt zur Anzeige von 0x1F um Wechsel mit 0xFC


Hat jemand eine Idee, woran das liegen könnte? die 2 Stoppbits vom 
Adressbyte sind deutlich erkennbar, auch das Startbit des Datenbytes ist 
vorhanden. Die gerade sendende USART lädt das folgende zu sendende Byte 
bei "UDRIE" nach. Bei Senden des letzten Bytes, wird auf "TXIE" 
umgeschaltet, damit gleich nach Senden des letzten Bytes auf Empfangen 
umgeschaltet werden kann. Ich weiss nun wirklich nicht, woran das liegen 
soll und grüble bereits 2 Nächte drüber. Ein "DATA OVERRUN" ist nicht 
feststellbar. "U2X" ist abgeschaltet.

Ich weiss, dass hier einige Gurus unterwegs sind, währe schön, wenn Ihr 
mir nen Tip geben könntet, denn ich wüsste nicht, wo da in der Software 
ein Problem sein sollte, da das Problem zwischen 2 Bytes ohne 
Richtungsumschaltung auftaucht.

MfG Nicky

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.