Go Down

Topic: [GELÖST] RFM12b wie kann ich ACK ausschalten (brauche Halbduplex) (Read 922 times) previous topic - next topic

windmis

Wenn sich bis dahin noch nichts ergeben hat, kann ichs heute Abend ja mal mit meinen Modulen testen.

@MaFu: ich wollte nur fragen ob du das schon ausprobiert hast ... ?

MaFu

Ja, habe ich.

Ich hab mir ein kleines Testprogramm geschrieben und auf zwei Arduinos geladen. Diese haben sich dann immer gegenseitig ein Byte zugesendet. Wichtig bei dem Beispielprogramm ist, dass für den einen Arduino die Konstante FIRST (siehe Anfang des Codes) gesetzt ist, bei dem anderen Arduino muss sie auskommentiert werden. Der Arduino mit der FIRST Konstante startet im Sendemodus, der Andere im Empfangsmodus. Da im Beispiel erst nach einem Datenempfang in den Sendemodus umgeschaltet wird, muss zwingend der sendende Arduino als letzter gestartet werden.
Ist jetzt nur ein schnell zusammengeschustertes Beispiel. Aber man sieht, dass es geht, und kann darauf aufbauen.
Code: [Select]
#include <JeeLib.h>

#define FIRST

byte outData;
bool sendMode;

void setup()
{
    Serial.begin(38400);
    Serial.println("Start");

    outData = 0;

#ifdef FIRST
    rf12_initialize('T', RF12_433MHZ);
    sendMode = true;
#else
    rf12_initialize('R', RF12_433MHZ);
    sendMode = false;
#endif
}

void loop()
{
    if (sendMode)
    {
        delay(100);

        rf12_recvDone();

        ++outData;

        if (rf12_canSend())
        {
            Serial.print("Sende ");
            Serial.println(outData);

#ifdef FIRST
            rf12_sendStart('R', &outData, sizeof outData);
#else
            rf12_sendStart('T', &outData, sizeof outData);
#endif
            rf12_sendWait(0);
        }
        else
            Serial.println("Kann nicht senden!");

        sendMode = false;
    }
    else
    {
        if (rf12_recvDone() && rf12_crc == 0 && rf12_len == 1)
        {
            Serial.print("Empfangen: ");
            Serial.println(rf12_data[0]);

            sendMode = true;
        }
    }
}
_______
Manfred

windmis


Ja, habe ich.

Ich hab mir ein kleines Testprogramm geschrieben ...

Danke für Deine Hilfe, ich werde das heute Abend ausprobieren...

windman

Das Problem wurde gelöst.
Ich habe meine Module mit einem Arduino-UNO und einem Arduino-Ethernet getestet.
Bei dem zweiten gibt es Probleme mit SPI... die RFM12-Lib muss entsprechend angepasst werden, mehr Info:
http://thebillplease.net/play/fixing-arduino-ethernet-rfm12-communication/

Danke für Eure Hilfe!

Go Up