Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 KNX mit ETS

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

    Zitat von mumpf Beitrag anzeigen
    und es funktioniert bei mir, ich hab die FlashAsEEPROM Lib gar nicht auf meinem Rechner drauf.
    Sicher?! Ganz sicher ?

    https://github.com/mumpf/knx/blob/ma...latform.cpp#L7
    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

    Kommentar


      Zitat von SirSydom Beitrag anzeigen
      Sicher?! Ganz sicher ?
      Ja, meine samd_platform.h sieht so aus: https://github.com/mumpf/knx/blob/43832c0957d65dd1d434a4ee53ecce2edd39ad6d/src/samd_platform.h#L1

      Wie gesagt, ich hab das nicht verfolgt (leider), empfinde es aber als Rückschritt.


      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        ahhh, jetzt. Ich hab die ganze History der samd_plattform.h durchsucht, aber kein Hinweise auf NVMemory gefunden.
        Aber es gibt zwei branches, die sich des Themas angenommen haben, die es aber wohl bisher nicht in den master geschafft haben.

        Es wäre interessant, warum.. ich seh schon, ich muss ich durch die 20 Seiten quälen
        Wird über den Stack noch an andere Stelle diskutiert?
        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

        Kommentar


          Ah, das kann natürlich sein, dass ich auch auf einen Branch gegangen bin. Wie gesagt, ist schon 1,5 Jahre her...

          Zitat von SirSydom Beitrag anzeigen
          Wird über den Stack noch an andere Stelle diskutiert?
          Nicht dass ich wüsste.

          Zitat von SirSydom Beitrag anzeigen
          Sehr viel gewinnen kann man hier wenn man binär sucht, dafür muss die Liste halt sortiert vorliegen.
          Klar, ich muss aber erstmal sicher sein, dass es daran liegt.

          Gruß, Waldemar
          ​​​​​​​
          OpenKNX www.openknx.de

          Kommentar


            Das Sortieren wäre doch kein Problem, einmal zur Instanziierung müsste doch reichen. Je nach Algorithmus bräuchte man halt noch genug freien Speicher zum Rumschieben. Sobald ich mal etwas Zeit habe ist eines der Projekte, die ich mir unbedingt genauer anschauen möchte, dieses Stack. Echt tolle Arbeit!

            Kommentar


              Zitat von jayem0 Beitrag anzeigen
              Das Sortieren wäre doch kein Problem, einmal zur Instanziierung müsste doch reichen. Je nach Algorithmus bräuchte man halt noch genug freien Speicher zum Rumschieben.
              Grundsätzlich natürlich nicht.
              Ich weiß ehrlich gesagt überhaupt nicht, wie die Tabellen aufgebaut sind, aber:
              wenn bisher eine Zuordnung der GA zum KO implizit über seine Position in einem Array geschah, dann verliert man diese Information bei einer Sortierung. D.h., mann muss dann jeder GA noch einen Zeiger auf "ihr" KO mitgeben, was wieder Speicher frisst.
              Wie meistens ist es also ein Tradeoff.. Speicher vs. Laufzeit.

              Mal was anders - hat bei euch mit SAMD die Debugserial ohne weiteres funktioniert? Ich musste ein while(!Serial); einfügen, damit er im Setup auf die Serial wartet, sonst kam da gar nichts.
              OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

              Kommentar


                Zitat von SirSydom Beitrag anzeigen
                Mal was anders - hat bei euch mit SAMD die Debugserial ohne weiteres funktioniert? Ich musste ein while(!Serial); einfügen, damit er im Setup auf die Serial wartet, sonst kam da gar nichts.
                Ich habe nicht direkt mit Serial getestet aber mit SERIALUSB und da hatte ich auch ein while(!Serial); einbauen müssen sonst kam nichts auf der Schnittstelle an...

                Kommentar


                  gut zu wissen. Bei meinem Board (ItsyBitsy) heißt die USB Serial "Serial". Kann am SAMD21 Mini anders sein.
                  Aber ich denke dass mit dem warten haben alle SAMD21 Arduino-Boards gemein. Evtl sollte man das mit in das Beispiel aufnehmen...
                  OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                  Kommentar


                    Hi,

                    ich weiß nicht, ob das von der Entwicklungsumgebung abhängt, ich nutze PlatformIO. Da kommt was auf Serial an, sobald man ein Serial-Terminal öffnet. Das Problem mit dem while war bei mir, dass das Device auch dann wartet, wenn keine USB-Verbindung zum PC da ist. Da es aber ein KNX-Gerät ist, soll das auch ohne USB funktionieren . Zumindest teste ich auch das immer wieder...

                    Ich hab das bei mir mit einem delay(5000) beim Start gelöst, in der Zeit schaffe ich es, das Terminal zu starten, um alle Serial-Ausgaben zu bekommen (von Anfang an). Und wenn ich es mal ohne USB teste (oder das Gerät sich einfach nach dem Programmieren neu startet), gibt es keinen "hänger", weil man vergessen hat, das while auszukommentieren.

                    Ob das mit der Arduino-IDE genau so geht, weiß ich allerdings nicht.

                    Zitat von SirSydom Beitrag anzeigen
                    Evtl sollte man das mit in das Beispiel aufnehmen...
                    Wegen des "Hängers" würde ich das nicht in das Beispiel aufnehmen. Oder nur in Kombination mit einer Maximalwartezeit...

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      Hi,

                      Zitat von jayem0 Beitrag anzeigen
                      Das Sortieren wäre doch kein Problem, einmal zur Instanziierung müsste doch reichen.
                      ein paar Probleme gibt es schon... Die Tabelle selbst kommt von der ETS (über den Aufbau weiß ich auch nichts genaueres), derzeit wird sei (bei mir) einfach beim Programmieren in den Flash geschrieben. Um die restliche Funktion nicht zu stören, könnte man redundant auch eine sortierte Liste wegschreiben und dann binär suchen. Kostet zwar den doppelten Speicher, da es aber "nur" Flash ist, wäre das unkritisch. Und da während des Programmierens nur der KNX-Stack läuft und nicht die drauf aufsetzende Firmware, sollte man auch genug RAM haben, um erstmal zu sortieren.

                      Zitat von SirSydom Beitrag anzeigen
                      wenn bisher eine Zuordnung der GA zum KO implizit über seine Position in einem Array geschah,
                      Es gibt auf jeden Fall noch eine weitere Tabelle, in der die Relation von KO und GA beschrieben wird, ich würde auch darauf Tippen, dass diese Zuordnungen indexbasiert sind (weiß es aber nicht). Das alles sauber zu verwalten, oder Daten redundant abzulegen, dürfte schon aufwändig sein. Vor allem, weil die ETS beim partiellen programmieren auch mal nur Einzelne Tabellen schickt und nicht immer alle. Aber auch da weiß ich nicht, wie das genau abgeht...

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        ich hatte das Problem, dass ich ohne while(!Serial) gar nichts mehr bekommen habe, wenn ich später erst dem COM Port geöffnet habe am PC.
                        Ich kann das aber aktuell nicht reproduzieren, nun gehts ? Komisch.

                        Natürlich sollte es ohne USB gehen! Aber es spricht ja nichts gegen eine Debug-Konfiguartion bei der das while drin ist. Aber du hast recht, dass kan jeder selbst in sein Programm aufnehmen.
                        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                        Kommentar


                          Hi,

                          noch eine Anmerkung: Wahrscheinlich werden bei der Version mit FlashAsEEPROM-Lib immer noch alle Parameter zur Laufzeit im RAM vorgehalten. Und alle KO, GA und KO-GA-Zuordnungen. Damit sind aufwändige Applikationen schwieriger zu realisieren, je nachdem, was man machen will. Ich hatte damals mit ca. 100 KO und ca. 3.3kB Parametern so ziemlich die Grenze erreicht. Nur so als Anmerkung, hängt davon ab, was man machen will.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            Zitat von mumpf Beitrag anzeigen
                            Kostet zwar den doppelten Speicher, da es aber "nur" Flash ist, wäre das unkritisch. Und da während des Programmierens nur der KNX-Stack läuft und nicht die drauf aufsetzende Firmware, sollte man auch genug RAM haben, um erstmal zu sortieren.
                            ich würde nicht auf die Idee kommen, die GA-Tabelle im Interrupt im Flash zu durchsuchen.
                            Ehrlich gesagt weiß ich nicht, wie schnell oder langsam der Zugriff aufs Flash ist, vermute aber dass es deutlich langsamer ist als im RAM.
                            Erst recht, wenn man ein externens SPI Flash nutzt, wie ich es vorhabe.


                            wenn du mal Zeit hast, könntest du ja mal die Zeit ermitteln die für solche GA-Suchen drauf gehen, bei vielen GAs.
                            Ist ja kein Hexenwerk, micros() merken und dann abziehen und ausgeben...
                            OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                            Kommentar


                              Zitat von mumpf Beitrag anzeigen
                              Ich hatte damals mit ca. 100 KO und ca. 3.3kB Parametern so ziemlich die Grenze erreicht. Nur so als Anmerkung, hängt davon ab, was man machen will.
                              Ich hadere da auch grade mit mir - ob es das wert ist. Entwicklungskoten (zeit) vs. Stückkosten.

                              Bei meinem 24ch led dimmer (den ich wohl auf diesen Stack umbauen wollen würde) brauche ich > 200KOs. Das wäre erstmal nicht drin, ich könnte jedoch ohne weiteres auf den pinkompatiblem SAMD51 gehen.. und dann ist ram kein thema mehr (512k).
                              Der kostet auch nur 2-3€ mehr, bei einem Dimmer mit Materialpreis um die 100€ (je nach FETs) ist das auch kein Thema mehr.
                              Und für kleine Geräte mit wenigen Kanälen tut es dann auch der SAMD21.
                              OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                              Kommentar


                                Hi,

                                warum geht man bei dem SAMD21 nicht auf in i2c EEprom für die Paramter? Das würde flash freigeben....
                                Weil es die existierende HArdware nicht hergibt? Ich fände das sehr interessant. Es würde auch das Problem
                                lösen wenn man neu programmiert dass die Parameter wieder weg sind....

                                Kommentar

                                Lädt...
                                X