Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Pointer-Hantierung Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Laika - 24.09.2024 12:30)
Laika nutzt:  Open-Macro
Liebe Kommunity,

ich will einen Umlaufpuffer programmieren. Das ist eine Liste mit 6 Einträgen. Ein Zeiger wird beim Start auf den Anfang der Liste gesetzt. Bei einem neuen Eintrag in die Liste wird der Zeiger weiter geschaltet. Geht er über das Ende der Liste hinaus, wird auf den Anfang zurück geschaltet. das schien mir die günstigste Lösung gegenüber einem Index für die Liste, da es dafür keine richtigen Sprachmittel gibt.
Nun habe ich ein Problem: Mein großes Programm, in dem ich das realisiert hatte, verschwand nach dem Start im Nirwana. Ein Testprogramm nur mit der Pointerhantierung zeigte seltsame Daten.
Hier mein Testprogramm. Ich habe die Kommentare mal drin gelassen.

'Einzelwerte für den gleitenden Mittelwert
'Das ist speziell für das Lesen der Solarleisatung
'Sie wird alle 10 sek gelesen und daraus ein "gleitender Mittelwert"
'über eine Minute gemacht, d.h. es werden immer 6 Werte gelesen
'aufsummiert und durch 6 geteilt
define gleitwert      word[24]  'Mittelwert der vergangenen Minute
define gleitwert_1    word[25]
define gleitwert_2    word[26]
define gleitwert_3    word[27]
define gleitwert_4    word[28]
define gleitwert_5    word[29]
define gleitwert_6    word[30]
define floatwert      word[31]
   :
define ^p_gleitwert   word[41]
  'Der wird einmal bei Anlauf auf den ersten Wert der obigen Liste gesetzt,
  'rotiert dann immer vom ersten bis letzten Wert, dann wieder zurück auf den ersten
   :
   :
p_gleitwert = ^gleitwert_1
   :
#sekunden_zyklus
   :
   if second mod 10 = 0 then
      floatwert = floatwert + 1   'Das ist nur ein Hilfswert zur Kontrolle des Abspeicherns
      print
      print "10 sec Zählerwerte lesen"
      gosub gleitwert_aktualisiern
   end if
   :
   :
goto sekunden_zyklus

'----------------------------------------------------------------------
#gleitwert_aktualisiern

'Ein: floatwert: neuer Eintrag in die Liste

      'Der Zeiger p_gleitwert zeigt noch auf den letzten Eintrag,
      'muss also vor dem Eintragen eins weiter geschaltet werden
      p_gleitwert = p_gleitwert + 1
      if p_gleitwert > ^gleitwert_6 then
         p_gleitwert = ^gleitwert_1
      end if

      @p_gleitwert = floatwert
      gleitwert = (gleitwert_1 + gleitwert_2 + gleitwert_3 + gleitwert_4 + gleitwert_5 + gleitwert_6) / 6

return

Ich habe die Werte von p_gleitwert ausgegeben, er ist nach dem Programmstart 20 statt der erwarteten 24. Auch wird er in der Routine #gleitwert_aktualisiern mal weiter geschaltet, mal nicht.

Frage: Was ist da faul? Ist die Anweisung if p_gleitwert > ^gleitwert_6 then erlaubt?

Danke und Gruß in die Runde
Laika

PS: Ich weiß, dass Du, Dietmar, die absolute Definition von Variablen nich empfiehlst. Aber nimm es einfach mal hin.

 Antwort schreiben

Bisherige Antworten:

Re: Pointer-Hantierung (von Dietmar - 24.09.2024 16:02)
    Re: Pointer-Hantierung (von Laika - 24.09.2024 18:53)
        Re: Pointer-Hantierung (von Dietmar - 24.09.2024 18:57)
            Re: Pointer-Hantierung (von Laika - 24.09.2024 21:27)
                Re: Pointer-Hantierung (von Dietmar - 24.09.2024 22:05)
                    Re: Pointer-Hantierung (von Laika - 29.09.2024 21:39)
                       Re: Pointer-Hantierung (von Dietmar - 29.09.2024 21:54)
                          Re: Pointer-Hantierung (von Laika - 1.10.2024 18:37)
                             Re: Pointer-Hantierung (von Dietmar - 1.10.2024 18:44)
                                Re: Pointer-Hantierung (von Laika - 1.10.2024 18:59)
                                   Re: Pointer-Hantierung (von Dietmar - 1.10.2024 19:21)
                                     Re: Pointer-Hantierung (von Laika - 4.10.2024 11:25)
                                     Re: Pointer-Hantierung (von Christian - 1.10.2024 23:26)
                                       Re: Pointer-Hantierung (von Dietmar - 1.10.2024 23:54)
                                         Re: Pointer-Hantierung (von Laika - 4.10.2024 11:18)
                                           Re: Pointer-Hantierung (von Dietmar - 4.10.2024 14:34)
                                             Re: Pointer-Hantierung (von Laika - 4.10.2024 15:28)
                                               Re: Pointer-Hantierung (von Dietmar - 4.10.2024 15:32)