www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Netzwerkprobleme mit MAX485


Autor: Danilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir ein kleines Netzwerk mit ATMEGA8 und MAX485 (DIL) 
aufgebaut. Im Moment habe ich nur 2 Teilnehmer (Master/Slave), welche 
später mal halbduplex miteinander reden sollen. Beim MAX485 habe ich Pin 
2 und 3 gebrückt. Der Slave reagiert mittels UART-Interrupt auf 
ankommende Bytes. Die Kommunikation funktioniert auch soweit ganz gut. 
Der Master sendet aller 5 sek. 10 Bytes. Es kommen aber immer 11 Bytes 
beim Slave an.

Ich habe inzwischen auch herausgefunden warum 11 Bytes ankommen. Jedes 
mal wenn der Master den Bus wieder frei gibt (also Pin 2 und 3 beim 
MAX485 auf low legt) wird irgendeine Störung auf die Leitungen A-B 
gelegt, welche den UART-Interrupt des Slave dazu veranlaßt darauf zu 
reagieren.

Muß der MAX485 noch irgendeine externe Beschaltung erhalten oder müssen 
bestimmte Voraussetzungen erfüllt sein wenn man den Bus frei gibt. Die 
120 Ohm am Ende sind dran. Ich habe auch verschiedene Test mit den 
Pullups/Pulldowns der A-B-Leitung gemacht - ohne Erfolg. Ich glaube 
nicht, dass es an meinem Programm liegt. Wie gesagt die Kommunikation 
der 10 Bytes funktioniert fehlerfrei. Hat jemand eine Idee?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schaltest den Transmitter möglicherweise zu früh ab. Ich hatte 
ähnliche Effekte, offenbar kommt der TXC Interrupt ein bischen zu früh.

Autor: Uli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Txinterrupt(UDRE) kommt wenn das schieberegister leer ist. Dann muss 
das byte aber noch geschoben werden. Wenn man nun den anderen 
Txinterrupt(TXC) nimmt, wird der ausgeloest bevor das Stopbit draussen 
ist.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fast richtig. UDRE kommt wenn das Pufferregister leer ist, das 
Schieberegister kann aber zu diesem Zeitpunkt noch Arbeit haben. TXC 
kommt, wenn nun auch das Schieberegister leer ist - aber schon während 
er noch mit dem Stopbit kämpft.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A.K.

>Du schaltest den Transmitter möglicherweise zu früh ab. Ich hatte
>ähnliche Effekte, offenbar kommt der TXC Interrupt ein bischen zu früh.

Das glaube ich kaum. Hast du das mal mit den Scope nachgemessen?

MfG
Falk

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mangels Scope nicht. Aber als ich direkt mit TXC den Transmitter 
freigab, gab es unschöne Fehler, die verschwanden nachdem ich ein 
bischen wartete.

Autor: Danilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für die Antworten. Ich habe mittlerweile die Schaltung 
soweit zurück gebaut, dass gar nicht mehr gesendet wird sondern wirklich 
nur noch die Enable-Pins (2 und 3) geschalten werden. Zwischen durch 
wartet das Programm sogar noch 50 ms. Selbst da kommt beim Slave schon 
ein Interrupt an.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Danilo

>wartet das Programm sogar noch 50 ms. Selbst da kommt beim Slave schon
>ein Interrupt an.

Hast du die richtigen Pins verdrahtet? Kurzschluss von RE oder DE nach 
A/B?

MfG
Falk

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>TXC kommt, wenn nun auch das Schieberegister leer ist - aber schon während
>er noch mit dem Stopbit kämpft.

Das habe ich einmal getestet: TXC kommt erst dann, wenn das Stopbit 
vollständig ausgegeben ist. Irgendeine Wartezeit nach TXC-Int ist somit 
nicht notwendig.
Wenn Übertragungsfehler auftreten, muß daher woanders gesucht werden.

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.