2. serielle Schnittstelle (RS-232)

hallo,

für ein Projekt benötige ich einen Arduino mit einer "richtigen" zweiten seriellen RS-232-Schnittstelle. Die erste Schnittstelle ist ja durch den USB-Anschluss den man bei der Entwicklung benötigt belegt. Um bei der Entwicklung nicht immer umstecken zu müssen ist eine zusätzliche RS-232-Schnittstelle notwendig.

Eine Option wäre ja die Verwendung der SoftwareSerial Library: http://www.arduino.cc/en/Reference/SoftwareSerial

Hat aber den Nachteil das darüber das Timing kritischer ist. Da fehlt ja der UART-Puffer.

Eine andere Lösung wäre die Verwendung eines Arduinio-Megas. Der hat ja mehrere UARTs. Wie werden die zusätzlichen seriellen Schnittstellen der Megas im Arduino-Programm angesprochen?

Gibt es dazu auch Libraries bzw. Funktionen ähnlich den Serial-Befehlen?

Kann man da dann die 2. serielle Schnittstelle auch als vollwertige Schnittstelle wie den USB-Anschluss nutzen?

Gruss Jürgen

Serial.begin() bzw Serial.print() ist für die erste Schnittstelle die mit der USB verbunden ist; Serial1.begin() bzw Serial1.print() für die 2. Schnittstelle; Serial2.begin() bzw Serial2.print() für die 3. Schnittstelle; Serial3.begin() bzw Serial3.print() für die 4. Schnittstelle; Grüße Uwe

hallo,

danke - manchmal sieht man vor lauter Bäume den Wald nicht mehr ...

Gruss Jürgen

Hier noch 'ne Hardware-Lösung:

Ich hab' mir erst letzte Woche einen ISP* gekauft und dabei festgestellt, dass man den Arduino (nach anfänglicher Konfiguration) wie gehabt ganz normal über die Arduino-IDE programmieren kann.

Vorteile: - Die Serielle Schnittstelle bleibt unangetastet :) Ein alternatives Terminalprogramm (z.B. hier)statt dem Serial Monitor muss man glaube ich dann auch nicht ständig öffnen & schließen. - Upload geht subjektiv gesehen deutlich schneller - Bootloader fällt weg, etwas mehr Speicherplatz + (nicht spürbar) schnellerer Start

Nachteile: - Keine Ahnung. Ich grübel schon die ganze Zeit, wieso die da nicht gleich einen ISP mit raufgepackt haben. Im einfachsten Fall wäre das wohl eine USB->Parallel Schnittstelle und die kostet bestimmt auch nicht die Welt. Bleibt also wohl: - Nicht ganz so anfängerfreundlich + teurer

  • knapp 20,- bei eBay. Tipp: achtet drauf, dass da gleich ein 6Pin Kabel/Adapter dabei ist

Die Nachteile sehe ich: - Zusatzkosten die man mit dem Bootloader- USB- Serial Converter nicht hat. - Fummelige Angelegenheit, da ist ein USB-Kabel anzustecken einfacher. - Der 6-pin Stecker ist nicht verdrehsicher. - Die ISP-Schnittstelle kann durch Beschaltung, so wie die Serielle Schnittstelle, blockiert werden. - Die Übertragung erfolgt nicht über das Programminterface sondern mit einer anderen SW mit der Notwendigkeit von ein wenig mehr Vorwissen. Grüße Uwe

uwefed:

  • Die Übertragung erfolgt nicht über das Programminterface sondern mit einer anderen SW mit der Notwendigkeit von ein wenig mehr Vorwissen.

Doch, das geht ganz normal mit der Arduino-IDE über den ganz normalen Upload Button wie sonst auch (Jedenfalls aus Anwendersicht. Was da genau im Hintergrund abläuft weiss ich noch nicht).
Man muss nur einmal in der /hardware/arduino/boards.txt noch den Eintrag >> [boardname].upload.using=[programmername] << machen, dann läuft das über den Programmer statt Seriell. Bei mir sieht das so aus:

programmers.txt (Weil mein ISP offenbar nicht zu den Defaultgeräten gehört)

code:
diamexisp.name=Diamex ISP
diamexisp.communication=serial
diamexisp.protocol=stk500v2
diamexisp.speed=19200

boards.txt (Erzeugt einen neuen Eintrag “ATmega8 & ISP” im Menüpunkt “Tools->Board”)

code:
atmega8isp.name=ATmega8 & ISP
atmega8isp.upload.protocol=stk500v2
atmega8isp.upload.maximum_size=30720
atmega8isp.upload.speed=57600
atmega8isp.upload.using=diamexisp
atmega8isp.build.mcu=atmega8
atmega8isp.build.f_cpu=16000000L
atmega8isp.build.core=arduino