PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C oder RS485 zwischen Atmega und Visual Basic



Zeroeightfifteen
08.06.2006, 20:00
Hallo

Da ich nun erfolgreich ein VB Programm erstellen kann, möchte ich gerne mit meinem Atmega 32 kommunizieren. Wie kann ich das mit Visual Basic machen? gibt es da gute Tutorials? oder könnt ihr mir da weiter helfen?

man könnte doch dann über den Pin 7 (Request to Send) die RE und DE Pins des Max 485 schalten.

doch wie spreche ich diesen Pin an?

könnte man das so realisieren

könnte das so funktionieren?

Vitis
09.06.2006, 10:34
zu RS232_RS485.JPG
Die Com-Schnittstelle hat +/- 12V als Pegel, die direkte
Beschaltung der Datenrichtungspins könnte
so Probleme ergeben.
Die kannste aber auch über den Max232 laufen lassen.
R2 und T2 haste ja noch frei davon.

In VB wird die COM-Schnittstelle über das MSCom
angesprochen und auch die RTS kannste da einfach setzen
per direkt ansprechen, das gibt keine Probleme

Zeroeightfifteen
09.06.2006, 15:49
für was sind die Pins R2 und T2 am Max232? würde es irgendwie mit RS485 funktionieren? RS232 will ich nicht verwenden, da ich mehrere Atmegas am PC anschließen will.

Vitis
10.06.2006, 09:02
genau darum gehts doch,
du hast am PC eingebaut die RS232, di ewillste umsetzen auf
RS485. Dazu brauchste einmal den Max232 um die
RS232 auf TTL-Pegel zu wandeln, dann den Max485 oder Ltc485
um vom TTL-Pegel auf RS485 zu kommen.
R2 und T2 erfüllen die gleichen Aufgaben wie R1 und T1

Zeroeightfifteen
10.06.2006, 14:33
achso und wie kann ich dann das mit DE und RE regeln? Damit ich auf senden oder empfangen schalten kann. Oder soll ich dafür R2 und T2 verwenden?

Vitis
10.06.2006, 22:40
Sag mal hast Du Dich schonmal mit der Materie
der seriellen Datenübertragung überhaupt was
selber recherchiert?

Die Flussrichtung Deines Busbausteins 485 kann NICHT
vom Bus selbst bestimmt werden.
Das muß Dein PC oder µC dem Baustein sagen.

Der Spannungspegel der RS232 ist +/- 12V,
das kann Dein 485er Busbaustein als Steuersignal normalerweise
nicht direkt ab, daher der Pegelwandler Max232

Es gibt hier im Forum aber auch ein ganz nettes Tutorial über die RS485

Zeroeightfifteen
11.06.2006, 13:42
dass die Flussrichtung nich vom bus selbst bestimmt wird ist schon klar. nur wie sagt mein PC dem Baustein das? RS485 habe ich schon zwischen zwei Controllern erfolgreich zum laufen gebracht.(da sag ichs dem MAX485 durch einen 5V Pegel ob er auf Senden oder Empfangen schalten soll) nur hab ich keine Ahnung wie ich das mit dem PC sonst lösen soll. So gut kenn ich mich noch nicht aus. Deshalb frag ich ja auch nach. Diese Tutorials hab ich schon alle durchgelesen und das nicht nur einmal.

Vitis
11.06.2006, 14:20
Du hast doch am COM-Port deines PC nicht nur RX und TX, ok, GND
wird ja eh voausgesetzt.

da gibts noch:
Request To Send (RTS)
Clear To Send (CTS)
Data Set Ready (DSR)
Data Carrier Detect (DCD)
Data Terminal Ready (DTR)
Ring Indicator (RI)

Du könntest z.B. RTS verwenden um den 485 umzuschalten.
Der RTS führt wie RxD und TxD auch die Pegel
+/- 12V, wodurch Du eben per Beschaltung auch gezwungen bist
den in +5V und GND-Pegel umzuformen, damit Du den 485er
damit ansteuern kannst.
Du kannst das per Gleichrichterdiode, Spannungsteiler und
Pulldown machen, oder über den Max232.
Zu diesem Zweck hat der Max den R2In, der wie der R1In
die Pegelwandlung auf +5 und 0 vornimmt.
dann nimmste den R2Out und führst den auf DE /RE und fertig
ist die 485er Schnittstelle.

Zeroeightfifteen
11.06.2006, 14:37
so einfach geht das? werd ich dann mal ausprobieren. Aber danke schon mal.

Vitis
11.06.2006, 18:19
Ja so einfach geht das ;)

Wichtig beim 485, wie Du ja bei den µC Verbindungen sicher
schon gemerkt hast ist das Timing der Flussrichtungsumschaltung,
also schön wie gehabt den Sendepuffer der Com-Schnittstelle
auf empty überprüfen bevor du umschaltest.

Stellt sich nun noch die Frage welches VB Du benutzt
für die Codeerstellung, oder haste den schon?

MSCOM:

RTSEnable = True / False und DTREnable = True / False

Zeroeightfifteen
11.06.2006, 20:02
ich benutze Visual Basic 2005 Express.
Doch das mit dem RTSEnable = True funktioniert noch nicht so ganz. Er meldet mir immer RTSEnable wurde nicht deklariert. Werde mich aber heute noch damit befassen wie das funktioniert.

Zeroeightfifteen
16.06.2006, 16:28
irgendwie kann ich die RTS oder DTR Leitung nicht ansprechen. aber entweder meldet mir VB dass ich RTS nicht deklariert habe oder nun meldet es mir dass ich kein Argument angegeben habe.
Was muss ich da genau schreiben damit ich die Pins low oder high schalten kann? Ich habe auch schon mehrere Tutorials durchgesehen, aber keins hat mir wirklich geholfen.

Auserdem habe ich an R2 immer nur - 0,45 V egal ob an RTS -12 oder 12V anlegen.