-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Access Violation in 2D-Array-Berechnung

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461

    Access Violation in 2D-Array-Berechnung

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi!

    Ich habe hier ein problem, hinter das ich nicht so ohne weiteres komme:

    Code:
    Ycount = Ycount - 1                                'Muss um 1 verringert werden...
    
             Rda2 = Ycount * 16                                 'Berechnung für das 2D-Array.
             Rda2 = Rda2 + Xcount                               'Wir 'benutzen RDA2 (da WORD-Variable)
    
             Ycount = Ycount + 1
    
             Incr 2darea(rda2)
    Da Bascom keine 2D-Arrays unterstützt habe ich mir versucht, selber eins zu basteln 2Darea ist eine Bytevariable mit 256 Units.
    Xcount und Ycount werden maximal 16 groß.
    xerhöht sich immer um 16, danach wirds wieder auf 1 gesetzt und Ycount um 1 erhöht.
    Aber xcount kann sich so erhöhen wie's will, rda2 geht nicht nach oben.

    Kann das irgendwie am Stack liegen?
    Manchmal geibts auch eine Access Violation und der AVR stürzt ab.

    Danke schonmal!

    VLG Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich würde mal empfehlen, X u. Y mit den werten 0-15 zu belegen, das ist insgesamt einfach logischer und einfacher.
    Nur VOR DEM ZUGRIFF auf die Tabelle würd' ich den Wert RDA2 um 1 erhöhen, damit der Bascom friedlich bleibt.
    Sonst ist deine Berechnung richtig, das Problem muß woanders liegen (DIM ?)

    Was anderes: Hast du schon überlegt, EIN byte für den Zugriff zu verwenden, Hi-Nibble = X und Lo-Nibble = Y ?
    Für den fall 16 * 16 ist das einiges flotter
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    Hi!

    Ja, ist mir eigentlich auch schleierhaft.
    vor allem, weil die Variablen nicht zählen, wenn sie eigentlich sollten.

    Könnte das mit dem Stack zusammenhängen? Dass der irgendwie überlastet wird?
    Also ich denke, dass es irgendeine Zugriffsverletzung gibt, obwohl das eigentlich nicht sein kann.

    >>Hast du schon überlegt, EIN byte für den Zugriff zu verwenden, Hi-Nibble = X und Lo-Nibble = Y ?
    >>Für den fall 16 * 16 ist das einiges flotter
    Wie meinst du das?

    VLG Tobi

    EDIT:

    DAS IST DER 1000. BEITRAG!!!
    Ich gebe einen aus...

    Prost!
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    Hi!

    Ich habe mir da mal ein par Debugging-Ausgaben machen lassen.

    Code:
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>4 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>5 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>6 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>7 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>8 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>9 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>10 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>11 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>12 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>13 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>14 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>15 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>16 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>1 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>2 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0
    <\f>1
    <\f>3 , 0   //Hier fängt es plötzlich an zu funktionieren!
    <\f>3
    <\f>3 , 0
    <\f>3
    <\f>3 , 0
    <\f>3
    <\f>3 , 0
    <\f>3
    <\f>4 , 0
    <\f>4
    <\f>4 , 0
    <\f>4
    <\f>4 , 0
    //So geht das lustig weiter bis in alle Ewigkeit.
    Format:
    xcount , ycount
    rda2


    Was kann denn da nur falschlaufen?

    Danke!

    VLG Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    1 Den Stack kannst du nicht überlasten, der schreibt im Zweifelsfall einfach deine Daten nieder und wackelt mit keiner Borste dabei.
    Symptom---> Programm verhält sich wirr
    2 Zugriffsverletzungen kennt der AVR auch nicht wirklich, das ist irgendeine Spinnerei vom Simulator, nehm ich an.
    Vielleicht prüft er, ob den Tabellenindex irgendwannmal > als 256 ist (du hast ja ein Word definiert) ?

    In diese Bredouille kannst du kommen, wenn du in deiner Rechnung den Xcount von 1 - 16 nimmst , da gehört auch -1, also 0 - 15

    Ein Byte:
    Du hast 16 Elemente (0-15), die 16 Byte lang sind (0-15)
    Dein RDA2 = Y * 16 + X, dabei kann rauskommen 0-255
    na, das ist ja offensichtlich ein einzelnes Byte
    Zugiff natürlich dann BasCommäßig 1-256
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    Hi!

    Dim 2darea(256) As Byte
    So ist das gedimmt.

    Er zählt von 1-16, ich werde das mal kurz ändern.

    VLG Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Hallo Tobi,

    Ich habe mal Funktionen zu 2D-Array geschrieben, welche Du hier http://www.grote.net/bascom/msg18130.html.
    Vielleicht kannst Du etwas davon gebrauchen.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    HI!

    Du warst das? Na da hab ich's abgeschrieben...
    Naja, aber ich glaube, dass es noch an meiner etwas komplexen zählweise liegt.
    Ich weis nicht, obs mir was bringt, aber ich werd mal alle incrs durch x = x + 1 ersetzen, oder gleich in ASM schreiben.

    sehr ominös bis jetzt...

    VLG Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Vielleicht kannst Du mal soviel vom Code publizieren, dass ich das Problem bei mir nachvollziehen kann?
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    Hi!

    Ich kann euch verstehen, aber das problem ist, dass es sich bei den paar zeilen code, um die's geht um mein JuFo-Projekt geht.
    Das hat zwar damit nicht so viel zu tun, aber... !

    hm. Ich habe gerade was geändert, hm.
    mal sehen, ich mache nal einen test.
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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