PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 Schnittstelle per Software



Jon
25.11.2006, 10:02
Hallo,
da ich an meinem ATMEGA32 schon einen Max232 in Richtung PC hängen habe, suche ich eine Möglichkeit, eine Software RS232 Verbindung zu einem zweiten ATMEGA32 herzustellen.

Zum erstellen der Schnittstelle habe ich das in einem Prog gefunden:

Open "COMA.0:9600,8,N,2" For Output As #1 'TX an Porta.0
Open "COMA.1:9600,8,N,2" For Input As #2 'RX an Porta.1

Zum senden habe ich das gefunden:

Print #1 "Haoll Welt"

Testen kann ich das im Moment leider nicht, da ich noch auf den zweiten ATMEGA32 von Reichelt warte und keinen weiteren Max232 habe.
Deswegen nur die Frage, ob das theoretisch so geht.

Freue mich auf jede Antwort.

jon

Vitis
25.11.2006, 11:05
klar sicher geht das, man nennt sowas dann Software-UART.
Hab ich auch schon verschiedentlich genutzt wenn ich
keinen größeren µC nur wegen der zweiten UART nehmen
wollte.

Jon
25.11.2006, 11:10
Gut. Dann werde ich das mal so probieren, wenn das Packet von Reichelt da ist.

jon

schnuppel
25.11.2006, 20:46
Hallo,


Testen kann ich das im Moment leider nicht, da ich noch auf den zweiten ATMEGA32 von Reichelt warte und keinen weiteren Max232 habe.


zwischen zwei ATMEGA brauchst du dann aber keinen MAX.

schnuppel

coCo
25.11.2006, 21:37
Hi,
ich wollt net extra nen neuen Thread aufmachen.

Ist es möglich auch drei AVRs per Software UART zu verbinden? Also z.B. von AVR1 Pina.0 eine Verbindung zu AVR2 Pina.0 und AVR3 Pina.0?
Wenn jetzt AVR1 mit AVR2 kommunizieren will, könnte man eine Erkennung senden, z.B. eine "2". AVR2 würde nur dann reagieren, wenn er davor die "2" empfangen hat.

Wäre das so möglich oder sollte ich lieber I2C verwenden? Wollte eigentlich I2C umgehen, wegen der I2cslave.lib....

MfG

Spion
25.11.2006, 22:07
Hallo

Ich missbrauche diesen Thread auch mal für meine Frage.

Wie kann ich mit dem Atmega in Bascom Daten per RS232 empfangen?

@coCo
Möglich ist alles :cheesy:
Du wirst aber probleme kriegen wenn sie gleichzeitig senden.

mfg Luca

Jon
26.11.2006, 08:42
Testen kann ich das im Moment leider nicht, da ich noch auf den zweiten ATMEGA32 von Reichelt warte und keinen weiteren Max232 habe.


zwischen zwei ATMEGA brauchst du dann aber keinen MAX.
Zw. zwei ATMEGAS nicht aber ich hätte es ja auch in Richtung PC testen können. Und da bräuchte ich einen Max232 ;)
Logisch, oder?


Ist es möglich auch drei AVRs per Software UART zu verbinden? Also z.B. von AVR1 Pina.0 eine Verbindung zu AVR2 Pina.0 und AVR3 Pina.0?
Wenn jetzt AVR1 mit AVR2 kommunizieren will, könnte man eine Erkennung senden, z.B. eine "2". AVR2 würde nur dann reagieren, wenn er davor die "2" empfangen hat.
Wenn du gleichzeitug ein Startzeichen vom AVR1 (z.B.2) an AVR2/3 sendest,
dann kannst du den AVR3 so proggen, dass er solange du an den AVR2 sendest nichts sendet. Musst dann aber ein Stopzeichen z.B.2E senden, damit der AVR3 weiß, dass er jetzt auch wieder senden darf.

Ich hoffe, du hast es verstanden ;)

jon

Vitis
26.11.2006, 10:54
Also per Max232 n Netzwerk aufbauen geht normalerweise nicht,
RS232 ist nur für Verbindung von 2 Geräten gedacht, weil die
RS232 kann nur 2 Zustände, nämlich high und low, aber nicht
indifferent, also kein tristate.
Für Verbindungen von mehren Teilnehmern, also n Bus, gibts
andere Bausteine, nämlich dann für CAN-Bus oder RS485 Bus.

Jon
26.11.2006, 11:49
Also per Max232 n Netzwerk aufbauen geht normalerweise nicht,
Zwischen die AVRs sollen auch keine Max232s. Nur zum PC hin.

RS232 ist nur für Verbindung von 2 Geräten gedacht,
Ich verbinde doch immer meinen PC mit dem AVR. Das sind, wenn ich richtig rechnen kann 2 Geräte.

Ich habe schonmal ein kleines Netztwerk von 3AVRs aufgebaut. Allerdings über einmal UART pro AVR. Wenn du verstehst, was ich meine.

jon

Vitis
26.11.2006, 11:59
Über die einfache UART gehts im Prinzip, Du musst halt
nach dem Senden von nem Baustein den Jeweiligen Pin dann halt
auf EIngang schalten, damit der Bus von nem anderen Baustein
belegt werden kann, aber das sollte gehen.

Jon
26.11.2006, 12:43
Hab mal ein Bild mit Paint "gemalt", wie das bei mir aussah.
Hatte damit kein Problem. Es darf halt nur einer Senden und der Rest muss die Klappe halten. Sonst gibts kuddellmuddell.

jon

coCo
26.11.2006, 13:57
Hmm wieso isn bei AVR3 TX und RX verbunden? Müsste das nicht so sein wie bei AVR1/2?

Jon
26.11.2006, 17:26
Die sind alle miteinander verbunden ;) :)
jon

coCo
26.11.2006, 17:34
Also hast du praktisch ein Kabel, aber es darf immer nur einer was Senden? Und das klappt so? RXD und TXD miteinander verbinden?

MfG

Jon
27.11.2006, 13:25
Japs. Bei mir ging das so ;)
Probiere es am besten erstmal über Drähte aus, und wenn es nicht geht kannst du mal deine Variante versuchen.

jon

Vitis
27.11.2006, 13:50
aha, du machst also nen 1-Wire-Bus indem du RX und TX
generell auf eine Leitung führst. Kann man so machen,
aber vorsicht, wenn Du die UART-Interrupts, vor allem
die RX Ints verwendest schiebste Dir den Sender auch
laufend in die ISR ohne Grund.

Jon
27.11.2006, 17:03
Ich habe noch nie Interrups verwendet. Da kenn ich mich nicht aus.

jon