Mit Atmega328P-PU zwei Serielle Schnittstellen?

Hallo zusammen,

mir kam jetzt gerade so ein Gedanke…: wenn ich zwei Serielle Schnittstellen habe, benötige ich doch auch zweimal RX und TX oder?
Also zur praktischen Anwendung formuliert:

Bei meinem Projekt soll das Steuergerät einmal eine Verbindung zu den anderen Geräten haben (RX/TX 1).
Zudem soll auch noch eine Verbindung zu einem PC möglich sein (ob über USB oder Ethernet weiß ich noch nicht; jedenfalls RX/TX 2).

Dazu benötige ich an dem IC doch dann zwei extrige RX/TX-Kontake, ansonsten würde es zu Problemen führen, oder?
Also mit dem Atmega328P-PU nicht verwirklichbar? Falls wirklich nicht, welchen IC sollte ich dann am besten dafür verwenden?

Vielen Dank und LG

Fipsi

Zudem soll auch noch eine Verbindung zu einem PC möglich sein (ob über USB oder Ethernet weiß ich noch nicht; jedenfalls RX/TX 2).

Wenn Du die Verbindung zum PC mit Ethernet machst, brauchst Du keine UART-Schnittstelle (RX/TX). Das Ethernet-Shield wird über die SPI-Schnittstelle angesprochen und die dürfte in Deinem beschriebenen Setup noch frei sein.

Ah, okay, des wusst ich ned.. aber sehr gut.. bis auf den Programmer brauch ich die SPI-Schnittstelle nicht. Ich weiß nur noch nicht, ob es mit USB oder Ethernet geschickter ist, wird aber ein anderes Thema.

Wenn ich aber USB nehm, brauch ich einen anderen IC, oder?

LG Fipsi

Gehts um das gleiche Profjekt wie mit dem Licht? Was meinst du genau, mit geschickter? Arduino kann eine SoftSerial aufmachen, die du zB mit einem FTDI Programmer anschließen und auslesen kannst. Gibt einmal die SoftSerial selber, welche aber mM nach nur für wenige Sachen zu gebrauchen ist. Sehr fehleranfällig sobald du mal etwas mehr Baudraten brauchst. Um 1200 Baud geht das alles. Die AltSoftSerial ist da deutlisch stärker, aber da hast du festgeschriebene Pins und Pin 10 wird zusätzlich belegt.

sschultewolter: Gehts um das gleiche Profjekt wie mit dem Licht?

Ich hab ehrlich gesagt keine Ahnung, von welchem Projekt du redest..^^

sschultewolter: Was meinst du genau, mit geschickter? Arduino kann eine SoftSerial aufmachen, die du zB mit einem FTDI Programmer anschließen und auslesen kannst. Gibt einmal die SoftSerial selber, welche aber mM nach nur für wenige Sachen zu gebrauchen ist. Sehr fehleranfällig sobald du mal etwas mehr Baudraten brauchst. Um 1200 Baud geht das alles. Die AltSoftSerial ist da deutlisch stärker, aber da hast du festgeschriebene Pins und Pin 10 wird zusätzlich belegt.

Okay, dann mach ich dafür doch kein eigenes Thema auf:

Das Steuergerät hat wie gesagt zwei Verbindungen: 1) zu den Untergeräten. Zu jedem einzelnem Gerät findet ein AUstausch von nur wneiger Geräten statt und das nicht dauernt, sondern nur auf Tastenbefehl (senden wie empfangen). 2) eine Verbindung zu einem PC oder Router. Es geht dabei darum, Daten mit einem localhost auszutauschen (MySQL). Dabei weiß ich noch nicht, ob es geschickter ist, wenn ich noch ein extra Prozessing-Programm dafür schreibe und dann einen USb Typ B an das Board häng und damit die Daten übertrag, oder ob ich einen Ethernetanschluss anbringe, diesen dann an einen Router oder dem PC direkt koppel und dann die Daten zum senden per Links (Broswerähnlich) sende und die Daten ebenso über die Inhalte der Seiten auslese.

Die Ethernetlösung würde ich bevorzugen, aus folgendem Grund: Das Projekt, das ich da bau wird eine Hardwareergänzung zu einer von mir schon geschriebenen und veröffentlichen Software auf Webserverbasis (Webserverbasis deshalb, um Systemunabhängigkeit zu erreichen). Verwendet wird eine MySQL-Datenbank. Damit die Hardware überhaupt etwas bringt, muss der Server und die andere auf dem Server befindende Software sowieso installiert werden. Würde ich über das Prozessing eine weitere Software schreiben müssen, so würde diese nochmals extra installiert werden müssen und zudem verlier ich dann auch wieder die Systemunabhängigkeit.

Zeitprobleme wird es nicht so sehr geben:

Pro Datentausch zwischen Server und der Hardware (ja, ich weiß, das ist auch sehr Serverabhängig) dürfen schon 20 Sekunden vergehen, das wäre kein Beinbruch. Die Daten bestehen aus einer zweistelligen Scheibennummer, und dann folgende Bezifferungen jeweils 4 mal: eine 3-stellige Zahl und zwei zweistellige Zahlen. Also es werden nur Zahlenwerte mit insgesamt 30 Ziffern übertragen (Ich meine, dass das ja irgendwie so "getrennt" geht, dass es wie ein Array geschickt wird? Glaube, das irgendwo schon gelesen zu haben).

Was genau ich da jetzt für Serial-Typen brauch, hab ich ehrlich gesagt keine Ahnung, so genau hab ich das noch nicht angeschaut.

LG

Fipsi

Der Arduino UNO hat 1 serielle Hardwareschnittstelle und man kann eine Zweite mittels Software emulieren. Der Arduino MEGA hat 4 serielle Hardwareschnittstellen.

Grüße Uwe

Wenn du eine Platine selbst basteln kannst/willst, kommt auch der Atmega644P in Frage. Der hat zwei Schnittstellen: http://www.atmel.com/devices/ATMEGA644P.aspx?tab=parameters http://www.atmel.com/Images/Atmel-8272-8-bit-AVR-microcontroller-ATmega164A_PA-324A_PA-644A_PA-1284_P_summary.pdf

Oder der Atmega1284P http://www.atmel.com/devices/ATMEGA1284P.aspx?tab=parameters

Im Prinzip das gleiche aber mit mehr Flash und RAM. Hat sogar mehr RAM als der Atmega2560 auf dem Arduino Mega :o

Muss halt auf eine Lochraster Platine und über einen Uno oder ein Programmiergerät geflasht werden.

Wobei Ethernet schon vernünftiger wäre was du da so sagst.

uwefed: Der Arduino UNO hat 1 serielle Hardwareschnittstelle und man kann eine Zweite mittels Software emulieren. Der Arduino MEGA hat 4 serielle Hardwareschnittstellen.

Ah, super, danke.. dann muss ich mich da noch bisschen einlesen. Danke dir :)

Serenifly: Wenn du eine Platine selbst basteln kannst/willst, kommt auch der Atmega644P in Frage. Der hat zwei Schnittstellen: http://www.atmel.com/devices/ATMEGA644P.aspx?tab=parameters http://www.atmel.com/Images/Atmel-8272-8-bit-AVR-microcontroller-ATmega164A_PA-324A_PA-644A_PA-1284_P_summary.pdf

Oder der Atmega1284P http://www.atmel.com/devices/ATMEGA1284P.aspx?tab=parameters

Im Prinzip das gleiche aber mit mehr Flash und RAM. Hat sogar mehr RAM als der Atmega2560 auf dem Arduino Mega :o

Muss halt auf eine Lochraster Platine und über einen Uno oder ein Programmiergerät geflasht werden.

Wobei Ethernet schon vernünftiger wäre was du da so sagst.

Ja, ich bau mir die Boards selber. Hab mir am Wochenende für n Prototypen die Bauteile bestellt, da heißts jetzt basteln^^

Ob ich mir den von dir genannten IC hol wäre mir eine Überlegung wert, da ich noch nicht weiß, ob ich erst alle Dazen vom Server lad und dann verschick oder für jeden Empfänger einzelnd die Daten lade (umgekehrt genauso), denn bei ersterem bräuchte ich ja mehr RAM.

Ja, wie ich die dann zusammenbauen muss, hab ich schon in Erfahrung gebracht, danke ;)

Und ich glaub fast, es is besser, wenn ich ausprobier, ob es mit Ethernet oder USB schneller und besser funktioniert.

LG Fipsi

Der Atmega1284 wird übrigens besser unterstützt was Bootloader für den Arduino betrifft. Der Atmega644 Bootloader scheint da etwas veraltet und vernachlässigt zu sein.

Ich arbeite nicht mit Bootleader, ich mach's rein mit dem ISP-Programmer.. und mach dazu auch gleich nen Thread, weil ich grad graue Haare krieg..

Aber Danke.

LG

Fipsi