Hallo zusammen,
ich möchte über die UART Schnittstellte (Pin 0 und 1) eines Leonardo
Boards Daten an einen Slave schicken beziehungsweise auch empfangen. Das
Senden funktioniert auch schon super, nur habe ich ein bisschen Probleme
mit dem Empfangen. Mein Programmausschnitt sieht wie folgt aus:
Serial.begin(BAUDRATE, SERIAL_8N1);
if (Serial.available()) {
// read the incoming byte:
rx = Serial.read();
Serial.print("received: ");
Serial.println(rx, HEX);
}
/*
Serial.end();
delayMicroseconds(2000);
Serial.print("received: ");
Serial.println(rx, HEX);*/
Es macht komischerweise keinen Unterschied ob ich Serial1 oder
Serial.read()... verwende. Für das Schreiben verwende ich z.B.
Serial1.write(). Ich sehe, dass die gewünschten Daten auch am RX Pin
anliegen, nur möchte ich diese zur Kontrollte am Seriellen Monitor der
Entwicklungsumgebung auch anzeigen lassen. Es funktioniert bislang weder
mit den nicht auskommentierten Zeilen, noch mit den auskommentierten.
Mit dem unteren Teil empfange ich auch gar keine Daten am RX Pin, dies
scheint also der falsche Weg zu sein. Womöglich habe ich auch noch nicht
zu 100% verstanden, wie es richtig programmiert werden muss.
Wie bereits geschrieben, sende ich eine Art Aufforderung an den Slave
und erwarte in diesem Beispiel 2 Byte an Daten zurück. Wie würde hierfür
der richtige Code aussehen? Was ich mich vor allem Frage, wie kann ich
die beiden Bytes der Reihe nach aufrufen bzw. aus dem Buffer holen und
dann weiter verarbeiten?
Des Weiteren weis ich nicht, ob es mit dem Leonardo überhaupt möglich
ist, mit den Pins 0 und 1 zu arbeiten und anschließend auch mit
Serial.println() etwas über den Seriellen Monitor darstellen zu lassen.
Hier wäre auch etwas Erklärungsbedarf :-)
Vielen Dank schon mal im Voraus für eure Hilfe.