AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

papa

Das sieht jetzt besser aus. Nun müssen wir mal warten, bis es stehen bleibt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Das ist eine Ausgabe bis zum Stehenbleiben.
Hab mir extra ne kleine Abfrage in den loop gebaut die auf serielle Eingaben wartet und dann einfach was ausgibt.
So kann ich prüfen, ob die Serielleverbindung noch steht.

papa

Ups - hm - da ist auch nicht viel zuerkennen.
Ich habe mich mal von der a-culfw inspirieren lassen und ein paar Änderungen gemacht. Kannst Du das bitte mal Testen ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

#408
Moin,
auch mit den Änderungen klappts leider nicht:
*
RX FIFO: 0D
Start Packet: 0A
CRC OK
RAW -> F0 4C 2A 41 2D 78 C4 B2 BA 80
ignore 0A 86 80 02 473071 901234 00  - 2034
RX FIFO: 00
RAW ->
*
RX FIFO: 10
Start Packet: 0D
CRC OK
RAW -> 9F DD A9 CA 35 F9 92 5E 4B 21 FC 78 A6
ignore 0D E9 A6 10 4F93E8 473071 06 01 A0 00  - 2131
RX FIFO: 00
RAW ->
*
RX FIFO: 14
Start Packet: 11
CRC OK
RAW -> 9F DB B5 D6 82 2F 44 B3 67 47 42 3E 86 55 46 7A A6
ignore 11 E9 A0 02 473071 4F93E8 04 61 20 9C 37 77 58 06  - 2164
RX FIFO: 00
RAW ->
*
RX FIFO: 1C
Start Packet: 19
CRC OK
RAW -> 9F DB B4 DF 28 EC 8F 5B 46 D9 7E 0C 4A 96 9F 58 94 14 7D 8E 06 4C 52 59 D0
ignore 19 E9 A0 03 4F93E8 473071 FB CB 56 A2 B0 ED 23 A0 64 8D D7 6C AE 7A 77 70  - 2204
RX FIFO: 00
RAW ->
*
RX FIFO: 11
Start Packet: 0E
CRC OK
RAW -> 9F FB D5 F6 E2 CF E4 53 C7 A3 AC BF 29 71
ignore 0E E9 80 02 473071 4F93E8 00 D3 37 B2 F1  - 2234
RX FIFO: 00
RAW ->
*
RX FIFO: 19
Start Packet: 16
CRC OK
RAW -> DC 3E 49 6E 96 1F FB D7 B3 8F 2A 07 56 70 4C 9D 3A 17 F3 8B 98 86
ignore 16 AA 86 53 4BDC6D 000000 00 41 01 B5 42 00 B5 43 01 00 44 FF 00  - 2375
RX FIFO: 00
RAW ->


EDIT:
Habe jetzt mal eingebaut, dass der Status des CC1101 ausgegeben wird, wenn ich was per Seriell schicke.
Vielleicht bekommt man so infos in welchem Zustand er hängt.

papa

Habe gerade was gefunden, dass PacketLength immer auf 61 byte gesetzt werden muss, da es sonst zu einem internen Fehler im CC1101 kommen kann und keine Interrupts mehr kommen.

Habe es gerade eingecheckt. Vielleicht hilft das ja wirklich weiter.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

#410
Ok, Test läuft.
Als er gerade wieder hängen geblieben ist, war er noch im RX Modus.

EDIT:
hat leider nichts gebracht:
*
RX FIFO: 0D
Start Packet: 0A
CRC OK
RAW -> 3C 98 76 03 7C 5C 6E E5 7B 80
ignore 0A 4A 80 02 51A304 56AFBA 00  - 9906
RX FIFO: 00
RAW ->
*
RX FIFO: 0F
Start Packet: 0C
CRC OK
RAW -> 3D BF DA E0 13 55 76 62 4F 2A 8C A6
ignore 0C 4B A6 41 56AFBA 473071 01 8A 00  - 9932
RX FIFO: 00
RAW ->
*
RX FIFO: 14
Start Packet: 11
CRC OK
RAW -> 3D B9 97 34 20 8D 3F B4 2A 02 02 C8 A3 C1 31 25 A6
ignore 11 4B A0 02 473071 56AFBA 04 DC 16 07 BE AC 28 06  - 9965
RX FIFO: 00
RAW ->

papa

 >:(

Kannst Du rcvData wieder zurückbauen auf:


  uint8_t rcvData(uint8_t *buf, uint8_t size) {
    uint8_t packetBytes = 0;
    uint8_t rxBytes = 0;
    uint8_t fifoBytes = spi.readReg(CC1101_RXBYTES, CC1101_STATUS);             // how many bytes are in the buffer
    // DPRINT("RX FIFO: ");DHEXLN(fifoBytes);
    // overflow detected - flush the FIFO
    if( fifoBytes > 0 && (fifoBytes & 0x80) != 0x80 ) {
      packetBytes = spi.readReg(CC1101_RXFIFO, CC1101_CONFIG); // read packet length
      // DPRINT("Start Packet: ");DHEXLN(packetBytes);
      // check that packet fits into the buffer
      if (packetBytes <= size) {
        spi.readBurst(buf, CC1101_RXFIFO, packetBytes);          // read data packet
        rss = spi.readReg(CC1101_RXFIFO, CC1101_CONFIG);         // read RSSI
        if (rss >= 128) rss = 255 - rss;
        rss /= 2; rss += 72;
        uint8_t val = spi.readReg(CC1101_RXFIFO, CC1101_CONFIG); // read LQI and CRC_OK
        lqi = val & 0x7F;
        if( (val & 0x80) == 0x80 ) { // check crc_ok
          // DPRINTLN("CRC OK");
          rxBytes = packetBytes;
        }
        else {
          DPRINTLN("CRC Failed");
        }
      }
      else {
        DPRINT("Packet too big: ");DDECLN(packetBytes);
      }
    }
  //  DPRINT("-> ");
  //  DHEX(buf,buf[0]);
    flushrx();
    return rxBytes; // return number of byte in buffer
  }


Da steht ja auch, man muss immer den FIFO löschen
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Also erstmal sieht es gut aus.
Zumindest ist er noch nicht wieder hängen geblieben.
Mal schauen, wie es morgen früh aussieht.

Ich musste allerdings noch einige Änderungen machen damit auch der Status bei der Zentrale wieder korrekt ankommt.

intread = 0;
Habe ich in beiden Funktionen wieder wie ursprünglich eingebaut

und
// Going from RX to TX does not work if there was a reception less than 0.5
    // sec ago. Due to CCA? Using IDLE helps to shorten this period(?)
    spi.strobe(CC1101_SIDLE);                               // go to idle mode
    spi.strobe(CC1101_SFTX );


Habe ich auch vor der Schleife für den TX Modus eingebaut.

Ohne diese Änderungen sieht es auf den Konsole zwar so aus alsob die Meldungen gesendet werden, aber sie kommen scheinbar nicht richtig an.

papa

Das hört sich ja schon mal gut an. Und geht es heute auch noch ?
Hab den Code schon mal entsprechend bei mir angepasst.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Ne leider wieder hängen geblieben ...

Habe jetzt noch eingebaut, das ich nen flushrx über die Konsole auslösen kann.
Danach werden wieder Nachrichten empfangen.
Vorher hab ich mir noch den Status und den Inhalt des RX Buffers ausgeben lassen.
Sah alles gut aus ...

papa

Lese doch mal den Status von GDO0 mit aus
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

#416
Hab ich jetzt mit eingebaut.
Habe jetzt die Empfangsroutine komplett der, der vom culf-a angepasst.
Funktionieren tut sie so, mal schauen obs was bringt.

EDIT:
Leider bringt das auch nichts ...
Ist echt zum verrückt werden.

RX FIFO: 00
Status: 0D
GDO: 00


Ich werd heut Nachmittag noch etwas rumbasteln.

papa

Ich verstehe es auch nicht. Bei mir tritt es auch nur sehr, sehr selten auf.

Eine weitere Quelle könnte noch der Code vom Panstamp sein
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Ich habe mal das "autoflush on invalid CRC" abgeschalten und alles eingecheckt. Vielleicht bringt das ja was.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Brachte auch alles nichts ...
Hab jetzt mal den Modus von GD0 geändert, dass er auf HIGH gesetzt wird, wenn ein Paket mit CRC Ok rein kommt.
Dazu hab ich noch den Trigger auf Rising geändert und natürlich den autoflush wieder aktiviert.