Ankündigung

Einklappen
Keine Ankündigung bisher.

Speicher und Wiederherstellen von Chartdaten?

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

    #16
    Das delay() soll bei schnellen Änderungen die durch slider o.ä. in der Visu bedingt sind sicherstellen, das das Flash nicht zu häufig beschrieben wird. Leider gibt es derzeit keine Funktion die bei Beendigung der Firmware aufgerufen wird, sonst könnte man da noch mal sicherstellen, das alles im Flash ist bevor ein Neustart passiert.

    Gruß,
    Bernd

    Kommentar


      #17
      In meinem Testprogramm war es umgekehrt, ich musste ein
      if delay(change(String1),xxxu64) then {......
      einfügen, um sicherzustellen, dass String1 durch "stringset" auch verändert war bevor ich String1 in den Flashspeicher geschrieben habe. "stringset" wird offensichtlich "asynchron" ausgeführt und dauert länger als ein Zyklus. Trotzdem hat mich das delay() in deinem Makro in richtige Richtung gelenkt.

      Gruß Rüdiger

      Kommentar


        #18
        Zitat von rehell Beitrag anzeigen
        In meinem Testprogramm war es umgekehrt, ich musste ein
        if delay(change(String1),xxxu64) then {......
        einfügen, um sicherzustellen, dass String1 durch "stringset" auch verändert war bevor ich String1 in den Flashspeicher geschrieben habe. "stringset" wird offensichtlich "asynchron" ausgeführt und dauert länger als ein Zyklus.
        Ich denke das ist eher das change() und das einen Zyklus braucht (siehe Handbuch). Oder meinst Du was anderes?
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #19
          Ich denke das ist eher das change() und das einen Zyklus braucht (siehe Handbuch). Oder meinst Du was anderes?
          Ich meine etwas anderes. In meinem Testprogram (siehe mein post vom 3.7) habe ich folgenden Programmteil ausgeführt
          Code:
          if change(Starttest) and Starttest==EIN then {
              stringset(String1,insert1,0u16);
              stringset(String1,insert2,4u16);
              writestatus=writeflash(String1,1u16);
          }endif
          Das "writeflash" hat erst dann den veränderten "String1" geschrieben nachdem ich mit "if delay(change(String1),xxxu64)" auf Fertigstellung gewartet habe. Ich gehe davon aus, dass change() ohne das delay() auch funktioniert hätte.

          Gruß Rüdiger

          Kommentar


            #20
            Zitat von rehell Beitrag anzeigen
            Ich meine etwas anderes. In meinem Testprogram (siehe mein post vom 3.7) habe ich folgenden Programmteil ausgeführt
            Es ist nicht die stringset Funktion an sich, sondern die Reihenfolge bei der Verarbeitung. Offenbar wird die Queue der Flashbearbeitung vor der stringset abgearbeitet. Ich werde mal prüfen, was man mit dem Compiler fixen kann.
            Siehe hier:
            [highlight=epc]
            a='1/2/3'c14
            Starttest=AUS
            String1=$aaa$
            String2=$$
            insert1=0x11223344u32
            insert2=0x55667788u32
            if after(systemstart(),1000u64) then {
            String1=$r$+$hj$;
            stringset(String1,insert1,0u16);
            stringset(String1,insert2,4u16);
            write('1/2/3'c14,convert(String1,$$c14));
            writeflash(String1,50u16)
            }endif
            if after(systemstart(),2000u64) then {
            readflash(String2,50u16);
            write('1/2/3'c14,convert(String2,$$c14))
            }endif
            [/highlight]
            Hier ist deutlich, dass die Stringzuweisung/Verkettung noch vor dem writeflash ausgeführt wurde, aber die stringset-Funtlion erst danach (also während einer Verarbeitung).
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #21
              Es ist nicht die stringset Funktion an sich, sondern die Reihenfolge bei der Verarbeitung.
              Genau das meinte ich als ich einem meiner früheren posts von "asynchron" sprach.
              Die Kombination "stringset" und "writeflash" scheint aber nicht die einzige Kombination zu sein, bei der dieses Phänomen auftritt. Ich habe mit einer Folge von "stringcasts" und "mpchart" gerade das Problem, dass mpchart nicht alles darstellt was "stringcast" offensichtlich übergibt. Ich bin aber überzeugt, dass ich die Probleme mit change(), after(), delay() irgendwie lösen kann. Bin nur noch nicht dazu gekommen.

              Gruß Rüdiger

              Kommentar


                #22
                Zitat von rehell Beitrag anzeigen
                Genau das meinte ich als ich einem meiner früheren posts von "asynchron" sprach. Die Kombination "stringset" und "writeflash" scheint aber nicht die einzige Kombination zu sein, bei der dieses Phänomen auftritt.
                Genau betrachtet versuchen wir diese "Seiteneffekte" des Unterbaus des EibPC vor dem Anwender zu verbergen. Aber man findet da immer wieder mal eine Lücke.
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #23
                  Zitat von rehell Beitrag anzeigen
                  Ich meine etwas anderes. In meinem Testprogram (siehe mein post vom 3.7) habe ich folgenden Programmteil ausgeführt
                  Code:
                  if change(Starttest) and Starttest==EIN then {
                      stringset(String1,insert1,0u16);
                      stringset(String1,insert2,4u16);
                      writestatus=writeflash(String1,1u16);
                  }endif
                  Das "writeflash" hat erst dann den veränderten "String1" geschrieben nachdem ich mit "if delay(change(String1),xxxu64)" auf Fertigstellung gewartet habe. Ich gehe davon aus, dass change() ohne das delay() auch funktioniert hätte.
                  Zur Info:
                  Ich hab das Verhalten eben durch einen Umbau im Compiler verändert. Im nächsten Release wird das dann wohl so wie ursprünglich gedacht gehen.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar

                  Lädt...
                  X