Forum: Mikrocontroller und Digitale Elektronik MAX1486 sendet <0> vorangestellt - RS422


von max1486er (Gast)


Lesenswert?

Schönen sonnigen Freitag Mittag,

ich bastel hier gerade an einer Schaltung mit einem MAX1486.
Insgesamt sind es 2 Platinen mit jeweils einem ATMEGA128 und einem 
MAX1486.
Es geht darum mit dem RS422 Bus herumzuspielen, auszuprobieren usw.

Am Schluss möchte ich dadurch 2 Endgeräte in meinem RS422 Bus erhalten.
Als Host dient mein PC mit einer RS422 Schnittstellenkarte.

Generelles Problem:
Es werden immer Nullen also NULL Byte von den Clients aus zum Host 
geschickt, bevor es mit der eigentlichen Nachricht losgeht. Ansonsten 
funktioniert die Kommunikation perfekt.

Aufbau u. Ablauf:
Beim Drücken einer Taste (aktuell per Stiftleiste und Jumper) werden 4 
Bytes zum Host geschickt. Dieser soll nichts quittieren sondern einfach 
nur diese Bytes im Terminal anzeigen.

Z.B. Client 1 <STX> <CLIENTID 0x31 > <Taste 0x31> <ETX>
Z.B. Client 2 <STX> <CLIENTID 0x32 > <Taste 0x31> <ETX>

Mehr soll es erstmal nicht sein.

Beschaltung am MAX1486:
BZYA beider Clients parallel beschaltet zum Host.
H/F ist mit GND verbunden, damit ich mit full-publex also 4 Draht 
arbeiten kann.
DE wird vom Prozessor kurz vor dem Senden auf High gesetzt.
Muss ich nach dem setzen von DE eine bestimme Zeit warten oder kann ich 
gleich mit dem Senden beginnen? Kurze Pause (100us), Lange Pause (1ms), 
keine Pause, haben keinen Unterschied gemacht.

Als Prozessor verwende ich jeweils einen ATMEGA128.

Ich bin nicht gut im Erklären. Hoffe es ist nicht zu unverständlich 
beschieben.

Auch Abschlusswiderstände (mit und ohne) haben keinen Unterschied 
gezeigt.

Wenn jemand einen Tip hätte, würde ich mich sehr freuen.

Danke

von Falk B. (falk)


Lesenswert?

@  max1486er (Gast)

>Auch Abschlusswiderstände (mit und ohne) haben keinen Unterschied
>gezeigt.

Es fehlen wahrscheinlich die Pull-Ups am Bus.

Siehe RS485

MFG
Falk

von Timm T. (Gast)


Lesenswert?

>> DE wird vom Prozessor kurz vor dem Senden auf High gesetzt.

Erzeugt wahrscheinlich einen Pegelwechsel, der wird als Startbit 
interpretiert, und dann nur Null-Pegel eingelesen. Es gibt zwar kein 
Stoppbit, aber wenn der entstehende Framing Error ignoriert wird, wird 
das als Null-Byte eingelesen.

Passiert auch manchmal bei Controller-Resets oder Anstöpseln einer RS232 
im Betrieb.

1. Versuch es mit den Pull-Ups wie von Falk vorgeschlagen.
2. Leg Deine Software so aus, dass sie damit umgehen kann, weil das 
immer wieder vorkommen kann.

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.