Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
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?
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!
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.
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...
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...
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.
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.
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...
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.
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.
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...
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.
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....
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar