Ankündigung

Einklappen
Keine Ankündigung bisher.

Entwicklungsblog Beta5/Final 1.0.0

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

    damit hast du natürlich recht.
    Aber die Baudrate ist 9600bit/s und nicht byte, und damit braucht ein bit so Pi mal Daumen 1ms. => An sich ausreichend.

    Allerdings ist die Frage ob das überhaupt was bringt, denn ob ein Byte empfangen wurde liegt ja schon bei kleinen 8bit AVRs in einem Register und lässt sich damit theoretisch schneller abfragen als die Überprüfung ob genug Zeit vergangen ist.

    Puffer komplett leer räumen wäre für neuere Controller vermutlich besser, aber ob die kleinen 8bitter das schon immer schaffen? Durch den externen Aufruf des KNX Tasks hat man hier etwas mehr Spielraum bei der Programmierung.

    Kommentar


      Zitat von Uwe! Beitrag anzeigen
      9.600bits/s
      stimmt natürlich. kbaud ist ja die Symbolrate. Peinlich.


      Zitat von andi11 Beitrag anzeigen
      rdings ist die Frage ob das überhaupt was bringt, denn ob ein Byte empfangen wurde liegt ja schon bei kleinen 8bit AVRs in einem Register und lässt sich damit theoretisch schneller abfragen als die Überprüfung ob genug Zeit vergangen ist.

      Puffer komplett leer räumen wäre für neuere Controller vermutlich besser, aber ob die kleinen 8bitter das schon immer schaffen? Durch den externen Aufruf des KNX Tasks ha
      Also die AVRs haben einen Empfangspuffer in der Serial-Klasse. Da schreibt ohne zutun des User eine ISR die bytes in den RAM. Größe lässt sich über Ringbuffer.h steuern.
      Bei den kleinen AVRs muss man nattülich mit RAM aufpassen.
      Aber die sind eh nicht mehr unser Fokus, mit V1.0.0 denke ich sowieso deprecated.

      SAMDs haben ja nach Core-Version einen RAM-Buffer oder eben nicht. Das wurde erst nachträglich eingebaut und Adafruit etc.. haben es ggf. übernommen oder auch eben nicht. Somit sind es beim SAMD ggf. nur ein Byte Hardware Buffer. (korrigiert mich, so verstehe ich das Datasheet).
      mumpf du hattest doch damit mal gekämpft bzgl extended frames.


      Der RP2040 hat 32byte rx buffer in hardware. Das reicht wohl für das langsame KNX.


      Ich denke halt an die Situation, wo der Controller mal ggf. nicht alle 400µs gerufen wurde sondern ggf. etwas länger braucht. Somit staut sich dann etwas im rx buffer, wird dann aber nur sehr zögerlich verarbeitet, weil maximal 1 byte pro 400µs gelesen wird, obwohl ggf. schon das ganze Telegramm im Buffer liegt.
      D.h. ich könnte es eigetlich SOFORT verarbeiten, warte aber 0,4 *23 ca. 10ms.
      Das ist doch wenig sinnvoll ?
      KNX Transceiver für Arduino&Co: MicroBCU2 --- NanoBCU aktuell verfügbar

      Kommentar


        Wenn du meinst, dass es besser ist nicht zu warten, dann nur zu. Wir haben ja damals eine existierende Lib genommen und da war es so implementiert.
        Es ist ja ganz einfach zu testen, setze 400 auf 1 oder 0 und schaue was passiert

        Kommentar


          Na klar, ich hatte aber auch irgendwie im Kopf, das du dich mal damit beschäftigt und was optimiert hast.
          Und weiterhin findet sich ein Kommentar

          Code:
          // TODO: check for rx_state in tpuart and call rxtask repeatedly until telegram is received?!
          Daher wollte ich vorher mal fragen welche Erkentnisse ihr da schon habt. man muss ja nicht alles doppelt machen.
          KNX Transceiver für Arduino&Co: MicroBCU2 --- NanoBCU aktuell verfügbar

          Kommentar


            Mit beta 4b habe ich eigentlich genau diesen Kommentar erledigt... es wird aus dem Buffer alles auf einmal gelesen, so, dass 400us für Task() nicht mehr zwingend sind. Aber, wenn Task sehr selten ausgeführt wird, dann wird ACK nicht rechtzeitig gesendet

            Kommentar


              stimm, durch das do-while wird alles aus dem buffer gelesen. Aber sehr langsam - 1byte pro 400µs. Wenn da 10 Byte im buffer hängen blockiert task() für 4ms, oder?

              KNX Transceiver für Arduino&Co: MicroBCU2 --- NanoBCU aktuell verfügbar

              Kommentar

              Lädt...
              X