Pages: [1]   Go Down
Author Topic: NewSoftSerial / SoftwareSerial Probleme mit Pins  (Read 309 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
este es la leche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusamen,
ich versuche auf einem Duemilanove (ATMega328) per NewSoftSerial (IDE0023), bzw. mit SoftwareSerial (IDE0104), zwei zusätzliche Serielle Ports zum laufen zu bringen, leider ohne Erfolg. Hier der Code (IDE0023):
Code:
#include <NewSoftSerial.h>
NewSoftSerial nss1(2, 3);
NewSoftSerial nss2(4, 5);
void setup()
{
  Serial.begin(9600);
  nss1.begin(9600);
  nss2.begin(9600);
}
void loop()
{
  if (nss1.available() >0)
  {
    Serial.print((char)nss1.read());
  } 
  if (nss2.available() >0)
  {
    Serial.print((char)nss2.read());
  }
}
Ich bekomme immer nur von einem der angeschlossenen RFID-Leser eine Rückmeldung (je nachdem, ob im Code zuerst "nss1.begin(9600)" oder "nss2.begin(9600) steht. Der zweite wird nicht ausgelesen. Auch wenn ich die PINs z.b. auf (2,3) und (6,7 oder 10 und 11) ändere. Die PINs 0 und 1 kann ich nicht verwenden (hier ist der XBee angeschlossen), auch der ATMega2560 fällt hier aus Platzproblemen weg. Wenn ich in der IDE0104 NewSoftSerial durch SoftwareSerial ersetze ändert sich auch nichts. Hat jemand nen Rat?
Danke
Logged

Germany S-H
Offline Offline
Edison Member
*
Karma: 117
Posts: 2448
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Ich bekomme immer nur von einem der angeschlossenen RFID-Leser eine Rückmeldung (je nachdem, ob im Code zuerst "nss1.begin(9600)" oder "nss2.begin(9600) steht. Der zweite wird nicht ausgelesen.

Das enspricht exakt dem dokumentierten Verhalten von http://arduino.cc/de/Reference/SoftwareSerialRead
Ich lese da:
Note that only one SoftwareSerial instance can receive incoming data
at a time (select which one with the listen() function).


Von mehreren SoftwareSerial kannst Du immer nur an einer zur Zeit empfangen.
Welche das jeweils sein soll, muss mit der listen() Funktion eingestellt werden.

Wenn Du zwei serielle Schnittstellen gleichzeitig für die Rfid-Leser brauchst, die beide gleichzeitig empfangen sollen, nimmst Du dafür besser eine HardwareSerial und eine SoftwareSerial.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20218
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oder Du nimmst einen Arduino MEGA; der hat 4 Hardwareschnittstellen.
Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
este es la leche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

erstmal Danke für die Infos,
das mit der listen() Funktion werde ich mal ausprobieren. Den Mega kann ich hier leider aus verschiedenen Gründen nicht verwenden. Die beiden Leser müssen nicht zugleich zur Verfügung stehen und auf dem Hardware Serial ist bereits der XBee angeschlossen. Das ganze sollte in etwa so funktionieren: Im Grundzustand wird am ersten Leser ein Transponder eingelesen, die Daten werden per XBee an die Basis gesendet, dort geprüft und bei Erfolg zurückgesendet. Wenn die Daten ok sind soll der zweite Leser freigeschaltet und der erste abgeschaltet werden und die Anlage soll in den Betriebszustand wechseln (resp. eben auch anders herum). Das Ganze wird etwas komplexer, da ca. 5-6 "Satelliten" an die Basis senden. Habe mir überlegt, ob das evtl. auch über Serial.begin() und Serial.end() in der void loop() geht, muss ich mal ausprobieren. 
Gruß Arduinokiller
Logged

Pages: [1]   Go Up
Jump to: