Forum: Mikrocontroller und Digitale Elektronik ATTiny85 serielle Kommunikation 2 Eingänge


von Lukas Dierks (Gast)


Lesenswert?

Hallo!

Wir versuchen gerade schon seit einer ganzen Weile die Kommunikation 
zwischen 3 Attiny85-Mikrokontrollern hinzubekommen.

Der erste Attiny soll auf einem Pin vom 2. Attiny einlesen und auf einem 
anderen Pin von dem 3. Attiny (so dass wir wissen welcher String von 
welchem Eingang kam).

Für die Kommunikation benutzen wir bisher SoftwareSerial und 
programmieren die Attinys mit einem Arduino UNO.

Unser Problem ist, dass wir es nicht schaffen seriell über zwei Inputs 
einzulesen, bzw. von einem auf den anderen zu wechseln. Unser Code für 
den 1. Attiny sieht bisher wie folgt aus:

#include <SoftwareSerial.h>
const int rx=4;
const int rx2=1;
const int tx=3;
const int tx2=3;

SoftwareSerial mySerial(rx,tx);
SoftwareSerial mySerial2(rx2,tx2);

void setup()
{
  pinMode(rx,INPUT);
  pinMode(rx2,INPUT);
  pinMode(tx,OUTPUT);

  mySerial.begin(9600);
  mySerial2.begin(9600);
}

void loop()
{
  mySerial.listen();

  if (mySerial.isListening()) {
    mySerial.println("Port One is listening!");
    mySerial.println(mySerial.read());
  }
  else{
    mySerial.println("Port One is not listening!");
  }

  mySerial2.listen();
  if (mySerial2.isListening()) {
    mySerial2.println("Port Two is listening!");
    mySerial2.println(mySerial2.read());
  }
  else{
    mySerial2.println("Port Two is not listening!");
  }

  delay(500);

}

Der 1. Attiny soll also abwechselnd von zwei Ports einlesen und das 
ganze dann über die serielle Schnittstelle weiterschicken. Das klappt 
aber nicht.

Im Arduino-Monitor bekommen wir:

Port One is listening!
-1
Port Two is listening!
-1
...

Wenn wir den Port nicht zwischendurch wechseln, funktioniert es. Machen 
wir was falsch? Wie kann man während des loops den Port wechseln?

Bin für jeden Tipp dankbar!

von Peter D. (peda)


Lesenswert?

Beitrag "mehrere MC seriell über Datenbus verbinden (1Draht)"

Ist zwar keine UART, kommt aber mit der Genauigkeit des internen 
RC-Oszillators aus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.