- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: mehrere "Dateien" auf atmega speichern

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Anzeige

    E-Bike
    Bei deinen tabellen, da sitze ich irgendwie auf der leitung. Da habe ich noch nicht verstanden, wo dein Problem ist.
    Nehmen wir mal an, du hättest eine solche Tabelle mit 256 Werten:

    Crc8_daten:
    Data 0 , 94 , 188 , 226 , 97 , 63 , 221 , 131 , 194 , 156
    Data 126 , 32 , 163 , 253 , 31 , 65 , 157 , 195 , 33 , 127
    Data 252 , 162 , 64 , 30 , 95 , 1 , 227 , 189 , 62 , 96
    Data 130 , 220 , 35 , 125 , 159 , 193 , 66 , 28 , 254 , 160
    Data 225 , 191 , 93 , 3 , 128 , 222 , 60 , 98 , 190 , 224
    Data 2 , 92 , 223 , 129 , 99 , 61 , 124 , 34 , 192 , 158
    Data 29 , 67 , 161 , 255 , 70 , 24 , 250 , 164 , 39 , 121
    Data 155 , 197 , 132 , 218 , 56 , 102 , 229 , 187 , 89 , 7
    Data 219 , 133 , 103 , 57 , 186 , 228 , 6 , 88 , 25 , 71
    Data 165 , 251 , 120 , 38 , 196 , 154 , 101 , 59 , 217 , 135
    Data 4 , 90 , 184 , 230 , 167 , 249 , 27 , 69 , 198 , 152
    Data 122 , 36 , 248 , 166 , 68 , 26 , 153 , 199 , 37 , 123
    Data 58 , 100 , 134 , 216 , 91 , 5 , 231 , 185 , 140 , 210
    Data 48 , 110 , 237 , 179 , 81 , 15 , 78 , 16 , 242 , 172
    Data 47 , 113 , 147 , 205 , 17 , 79 , 173 , 243 , 112 , 46
    Data 204 , 146 , 211 , 141 , 111 , 49 , 178 , 236 , 14 , 80
    Data 175 , 241 , 19 , 77 , 206 , 144 , 114 , 44 , 109 , 51
    Data 209 , 143 , 12 , 82 , 176 , 238 , 50 , 108 , 142 , 208
    Data 83 , 13 , 239 , 177 , 240 , 174 , 76 , 18 , 145 , 207
    Data 45 , 115 , 202 , 148 , 118 , 40 , 171 , 245 , 23 , 73
    Data 8 , 86 , 180 , 234 , 105 , 55 , 213 , 139 , 87 , 9
    Data 235 , 181 , 54 , 104 , 138 , 212 , 149 , 203 , 41 , 119
    Data 244 , 170 , 72 , 22 , 233 , 183 , 85 , 11 , 136 , 214
    Data 52 , 106 , 43 , 117 , 151 , 201 , 74 , 20 , 246 , 168
    Data 116 , 42 , 200 , 150 , 21 , 75 , 169 , 247 , 182 , 232
    Data 10 , 84 , 215 , 137 , 107 , 53

    Von diesen hast du jetzt 4 Stück im Flash liegen.
    Also

    Crc8_daten:
    ...
    Crc8_daten1:
    ...
    Crc8_daten2:
    ...
    Crc8_daten3:
    ...

    Dein Programm soll jetzt mal die eine mal die andere Tabelle für die Bearbeitung benutzt werden.
    Die tabellen können natürlich auch in Include Files stehen. Im Programm sähe das dann so aus:

    $include "Crc8_daten.inc"
    $include "Crc8_daten1.inc"
    $include "Crc8_daten2.inc"
    $include "Crc8_daten3.inc"

    In jedem File steht dann ein Label und ein Satz von 256 Daten.

    Ist dies soweit korrekt?

  2. #12
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    32
    Beiträge
    125
    genau ich habe 4 Tabellen die per Include reingeschrieben werden.
    Die Anzahl der Daten in der Tabelle sind aber variabel.

    Nun müsste ich sowas wie

    Mein Problem ist, dass ich ja im Lookup Aufruf keine Variable sondern direkt ein Label angeben muss.

    Aber um die Frage ob deine bisherige Aufführung korrekt ist kurz zu beantworten: Ja bis auf die Tatsache, dass die Anzahl der Daten variieren kann.

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Wenn du die daten per Lookup holen willst, ist es sehr lästig, wenn du 4 verschiedene Label hast. Es hindert dich aber niemand, einfach alles über das erste Label zu machen. Dann sehe ich zwei Möglichkeiten, wie du an die nötigen Offsets kommst:
    1. Du weißt, wieviele Werte bei jedem Label abgespeichert sind und kannst die Anzahl in einem Array abspeichern.

    Anzahl(1) = 100
    Anzahl(2) = 200
    Anzahl(3) = 300
    Anzahl(4) = 400

    Dann würde ich mir noch die Start Offsets abspeichern, damit du zwischendrin nicht soviel rechnen musst:

    Offset(1) = 0
    Offset(2) = Anzahl(1)
    Offset(3) = Offset(2) + Anzahl(2)
    Offset(4) = Offset(3) = Anzahl(3)

    Das 97. Element der tabelle 4 bekommst du dann mit:

    Aktuelle_tabelle = 4 'wird irgendwo in deinem Programm gesetzt
    Aktuelles_Element = 97 'wird in einer Schleife hochgezählt
    Index = Offset(aktuelle_Tabelle) + aktuelles_element
    Wert=Lookup(Index,Label1)

    2. Wenn du die Anzahl der Elemente nicht kennst, kannst du sie zur Compilezeit berechnen lassen. Das geht über Loadlabel(Label).

    Offset(1) = 0
    Offset(2) = Loadlabel(label2) - loadlabel(label1)
    Offset(3) = Loadlabel(label3) - loadlabel(label1)
    Offset(4) = Loadlabel(label4) - loadlabel(label1)

    Danach geht es genau so weiter wie oben.

  4. #14
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    32
    Beiträge
    125
    Du sagtest dass es über Lookup sehr lästig wäre. Das sagt mir, dass es 'ne andere Möglichkeit gibt welche vielleicht leichter ist. Welche wäre das denn?
    Denn Lookup habe ich nur benutzt da ich keine gute/besser Alternative kannte bzw. kenne.

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Ich würde Lookup() nur benutzen, wenn ich wahlfrei auf die Daten zugreifen möchte. Also an beliebige Stellen, nicht die Daten einen nach dem anderen so wie sie gespeichert wurden.
    Ich habe es mir zwar noch nicht anzeigen lassen, aber ich denke, dass ein Restore mit anschliessendem Read schneller sein sollte. Das geht aber nur sequentiell durch alle Daten.

  6. #16
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    32
    Beiträge
    125
    Es ist gewissermaßen sequentiell und zwar wie folgt:

    Portd = Lookup(offset , Schema)
    Offset = Offset + 1
    Porta = Lookup(offset , Schema)

    Dann kommt der nächste Datensatz. Tabelle sieht bspw. so aus:
    Data &B00000100 , &B00000000
    Data &B00001000 , &B00000000
    Data &B00010000 , &B00010000

    Data &B00000100 , &B00000000
    Data &B00001000 , &B00010000
    Data &B10010000 , &B11111111

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests