Serial zwischen Serial und NewSoftSerial

Moin,

ich habe 2 Arduinos, die über die Serielle Schnittstelle kommunizieren sollen. Der eine soll über die NewSoftSerial Lib mit den Pins 2,3 und der andere über die normale Serielle Schnittstelle kommunizieren.
Ich habe jetzt Pin 2 mit dem TX Pin des anderen Arduinos verbunden, und Pin 3 mit dem RX. Da beide arduinos an einer Stromversorgung hängen, haben sie auch dieselbe Masse.
Hier der Code, nachdem einer was gesendet hat, soll der andere die LEDs an und aus machen, und nach 1sek das gleich zurücksenden.
Hier der Code für den mit der normalen Seriellen Schnittstelle:

void setup(){
  Serial.begin(115200);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
}

void loop(){
  if(Serial.available()){
    digitalWrite(8,HIGH);
    digitalWrite(9,HIGH);
    delay(100);
    char c = Serial.read();
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    delay(1000);
    Serial.print(c);
  }
}

Hier der mit der NewSoftSerial Lib:

#include <NewSoftSerial.h>

NewSoftSerial nss(2,3);

void setup(){
  nss.begin(115200);
  Serial.begin(115200);
  nss.print("a");
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
}

void loop(){
  if(nss.available()){
    char c = nss.read();
    Serial.println(c);
    digitalWrite(8,HIGH);
    digitalWrite(9,HIGH);
    delay(100);
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    delay(500);
    nss.print("a");
  }
}

Das erste Problem ist, dass die LEDs beider Boards immer gleichzeitig tun, obwohl sie das nicht sollten. Das andere, wenn ich die Empfangenen Daten ausgeben lasse, kommen nur komische Zeichen bei raus.

Ich habe mir die beiden Platinen mit den 328 Megas selber gelötet, und alles getestet, keine Kurzen, oder andere Verbindungen, die nicht sein sollten. Auch die Verkabelung passt.

Die Verbindung zwischen den Megas ist fast 35-40cm lang, könnte da vielleicht das Problem liegen? Kann ich da irgendwelche Pullup oder Pulldown Widerstände setzten?

Ich hoffe ihr könnt mir helfen.

MfG
Philipp

P.s. Die Megas kann man ohne Probleme über den 5V FTDI Adapter programmieren, und funtzten auch.

Betreibe die Schnittstelle mit 9600 Baud. Wenn Die beiden Selbstbau-Arduinos die serial-arduinos sind dann ist die RS232 Interfaceschaltung für so hohe Geschwindigkiten nicht geeignet. Es braucht keine Pull up/pulldown Widerstände.
Erhöhe die Delay-Zeiten, damit Du besser die Verzögerungen siehst.
Grüße Uwe

Hi,

Danke geht, aber warum sind sie für so hohe Bauds nicht geeignet? Zu langes Kabel? Wenn ich das gleiche mit 2 Duemilanoves Probiert habe, hat alles gefuntzt? Aber die Selbstbau-Arduinos sind genauso aufgebaut, von der Schaltung her, wie die normalen Arduinos.

MfG
Philipp

An deiner stelle würde ich mich jetzt langsam hocharbeiten, vielleicht mal 19200 baud testen und so weiter.
Der Takt für die serielle Schnittstelle resultiert ja aus der Quarzfrequenz, wobei ich die verwendeten 16MHz-Quarze bei der Arduino-Plattform für ungünstig gewählt halte: Nur durch Quarze mit 3,6864 MHz, 7,3728 MHz, 9,216 MHz etc. kann man Standard-Baudraten wie 9600, 19200, 38400 und 115200 fehlerfrei (oder sagen wir lieber weniger fehleranfällig) generieren.Und je größer die Baudrate, desto größer die Chance auf Abweichungen zwischen zwei Geräte und daraus resultieren dann Verbindungsprobleme. Mehr dazu findet man hier:
http://www.mikrocontroller.net/articles/Baudratenquarz

Hallo Philipp Maricek

Entschuldige Die Frage. Du hast 2 Selbstbau-Arduinos. Welchen Schaltplan hast Du verwendet; den für den Seriellen Arduino?

Grüße Uwe

Hi,

die Grundschaltung habe ich hiernach gemacht:
Arduino – Schaltung mit 8 Bauteilen at Arduino Praxis Blog Und für den "FTDI Basic" habe ich mir aus dem Schaltplan vom Mini Pro die Pins der Namen rausgelesen, an die der ProgrammierAdapter angeschlossen werden muss.

MfG
Philipp