Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX mit RP2040 / Pi Pico

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Falls es um die TP Examples aus dem Thelsing GitHub Projekt geht.

    Dort fehlt eventuell die Angabe z.B. der UART Port Pins ..

    Original steht dort z.B.:
    Serial2.begin(19200); // KNX, pin 16,17 on EPS32

    Ich musste dort noch zumindest die Portpins sowie die Parity mit angeben damit es funktioniert:
    Serial2.begin(19200, SERIAL_8E1, 16, 17); // KNX, pin 16,17 on EPS32

    Kommentar


      #32
      Bei funktioniert ja der Stack, ich empfange über rx gültige frames, die über TX mit ack bestätigt werden. Nur die Physikalische Adresse läßt sich nicht programmieren (Prog Modus wird aber gesetzt, LED leuchtet).
      Mir fehlt hier leider das Verständnis, wie das Protokoll aussieht, bzw. welche Funktionen im KNX Stack aufgerufen werden. Hilfreich wäre auch die Information welche Versionen aktuell funktionieren. Ich verwende die aktuelle Version vom thesing knx staclk, sowie die aktuell version von der earlephilhower Bibliothek. Wird eventuell noch ein Patch o.ä. benötigt?
      Viele Grüße
      Markus

      Kommentar


        #33
        Ohne das Setzen der I/O Pins für die UART hatte ich eben ein sehr ähnliches Verhalten.
        Konnte den ProgMod setzen, auch die LED hat geleuchtet, jedoch konnte ich über die ETS nichts machen, auch keine Physikalische Adresse setzen.
        Wenn du aber über irgendwelche Debug Infos sehen kannst, daß der Stack über den UART etwas empfängt und valide darauf am Uart antwortet, dann liegt das Problem wohl wo anders.
        Dann hast du wohl wirklich ein anderes Problem.

        Kommentar


          #34
          brainmine: Bist Du sicher, dass Du ein ACK auf dem Bus siehst? Sonst würden Deine Symptome auch passen, wenn RX funktioniert und TX nicht. Nur als Punkt, wo man noch suchen könnte.

          Ansonsten handled der KNX-Stack die Vergabe der PA, deswegen weiß ich nicht auf Anhieb, wo man noch schauen könnte.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #35
            Zitat von brainmine Beitrag anzeigen
            ich empfange über rx gültige frames, die über TX mit ack bestätigt werden.
            das bezweifle ich. der stack acked keine telegramme, wenn er nicht configured ist (woher soll er auch wissen, welche).
            OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

            Kommentar


              #36
              Zitat von brainmine Beitrag anzeigen
              Bei funktioniert ja der Stack, ich empfange über rx gültige frames, die über TX mit ack bestätigt werden.
              woher denkst du das zu wissen?
              Kannst du den progmode per ets aktivieren?

              Zitat von brainmine Beitrag anzeigen
              Hilfreich wäre auch die Information welche Versionen aktuell funktionieren. Ich verwende die aktuelle Version vom thesing knx staclk, sowie die aktuell version von der earlephilhower Bibliothek. Wird eventuell noch ein Patch o.ä. benötigt?
              zum thelsing stack kannn ich dir nichts sagen, wir haben vor einige Zeit geforked.
              https://github.com/OpenKNX/knx/releases/tag/V2.1.1 knx-demo sollte funktionieren
              OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

              Kommentar


                #37
                Ing-Dom
                Du hast recht, ich habe die ACK nur auf der TX Leitung zum TP-Uart Baustein, auf RX empfange ich das Broadcast frame, Ob der Broadcast auf dem Bus Acknowleded wird kann ich nicht sagen, es sieht so aus als ob nur der broadcast auf dem bus ist.

                Ich habe KNX Stack modifiziert für debug Ausgaben:

                size_tArduinoPlatform::writeUart(constuint8_tdata)
                {
                printHex("<p", &data, 1);
                return_knxSerial->write(data);
                }

                intArduinoPlatform::readUart()
                {
                intval = _knxSerial->read();
                if(val > 0)
                printHex("p>", (uint8_t*)&val, 1);
                returnval;
                }

                Und
                voidTpUartDataLinkLayer

                voidTpUartDataLinkLayer::processRxFrame(TpFrame*tpFrame)
                {
                if (_monitoring)
                {
                print("Monitor: ");
                printFrame(tpFrame);
                println();
                }
                elseif (tpFrame->flags() & TP_FRAME_FLAG_INVALID)
                {
                //print("\x1B[");
                //print(31);
                //print("m");
                print("Invalid: ");
                printFrame(tpFrame);
                //print("\x1B[");
                //print(0);
                println("m");
                }
                elseif ( (tpFrame->flags() & TP_FRAME_FLAG_INVALID)==0)
                {
                print("Valid: ");
                printFrame(tpFrame);
                println("");
                }
                elseif (tpFrame->flags() & TP_FRAME_FLAG_ADDRESSED)
                {
                #ifdefDEBUG_TP_FRAMES
                print("Inbound: ");
                printFrame(tpFrame);
                println();
                #endif
                if (!(tpFrame->flags() & TP_FRAME_FLAG_ECHO))
                rxFrameReceived(tpFrame);
                }
                }

                ​ETS Broadcast:

                ETS_Broadcast.jpg
                Broadcast_Raw_Data.jpg


                Arduino Printf Debug Ausgabe:
                Arduino printf.jpg
                Angehängte Dateien

                Kommentar


                  #38
                  Ing-Dom
                  Den Prog Mode kann ich per ETS nur setzen wenn die Physikalische Adresse gesetzt oder nicht?
                  Gruß

                  Kommentar


                    #39
                    ach stimmt da ist ja auch schon der neue DL drin..

                    sieht so aus als würde der stack den physAddrReadResponse senden, er kommt aber nicht am KNX an.
                    Ist das eine BCU bzw ein Aufbau dessen grundsätzliche KNX-Funktion schonmal irgendwie "bewiesen" ist?

                    zB PiPico + BCU + Logikmodul-FW..
                    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                    Kommentar


                      #40
                      An den debug prints kann es nicht eventuell liegen ?
                      Jedes einzelne Byte welches über die debug serial raus geht könnte theoretisch eine Verzögerung von ca. 0,09ms (bei 115200) einfügen.
                      Bei dem "Valid: ..." wären das über 6,5ms (wenn ich mich nicht verzählt habe)




                      Kommentar


                        #41
                        Techni Guter Hinweis, aber das gleiche Problem hatte ich bereits ohne printf (deswegen enabled)

                        Ing-Dom ich verwende eine BCU mit NCN5121 den ich schon mehrfach erfolgreich eingesetzt habe, Ich habe alternative ein EVAL-Board von NCN direkt an den RP2040 TX/RX Pins angeschlossen - exakt gleiches verhalten. Ich habe mir mal einen RP2040 pico bestellt und werde mal mit EVAL BCU testen - ich hatte die Hoffnung, dass jemand eien einfache Lösung hat...
                        Ich werdemit auch mal die TP-Uart State-Machine anschauen (hier sind die RX TX command dokumentiert)
                        Aber vielen Dank für die Tipps

                        Kommentar


                          #42
                          Ich habe KNX_Master Bibliothek nochmal manuel installiert (meine Libs sind im Sketch Verzeichnis im Folder /libraries), jetzt geht alles! Fragt mich nicht warum...

                          Kommentar

                          Lädt...
                          X