- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 26

Thema: Array-Alternative

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Schade, dass Du Deinen letzten Weg (ver-)editiert hast. Darauf aufbauend wäre das meine Vorschlag:

    Code:
    typedef uint16_t Frame[9];
    typedef struct
    {
    uint16_t NumberOfFrames; // Anzahl der Frames
    Frame * PointerToAnimation; // Pointer zum FrameArray
    } Animationen;
    
    uint16_t Animation1[][9]={{0,2,3,4,5,6,7,8,9}, {1,2,3,4,5,6,7,8,9}};
    uint16_t Animation2[][9]={{3,2,3,4,5,6,7,8,9}};
    
    Animationen Animations[2] = {{2, &Animation1}, {1, &Animation2}};
    

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2011
    Beiträge
    16
    Zitat Zitat von rossir Beitrag anzeigen
    Schade, dass Du Deinen letzten Weg (ver-)editiert hast. Darauf aufbauend wäre das meine Vorschlag:
    Ahh, verdammt

    Ich bekomme bei deinem Vorschlag leider folgende Fehler:

    Code:
    cmd:30: error: cannot convert 'uint16_t (*)[2][9]' to 'uint16_t (*)[9]' in initialization
    cmd:30: error: cannot convert 'uint16_t (*)[1][9]' to 'uint16_t (*)[9]' in initialization
    Sieht ansonsten aber genau nach dem aus was ich versuche hinzukriegen!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Schade.

    Vielleicht müssen wir mal Compilerversionen austauschen. Zunächst, bei mir liegt der Code in einer C-Datei (nicht C++-Datei).
    1) Microsoft Visual C++ 2005.
    2) WinAVR-20100110

    a) bei mir funktioniert es mit beiden oben genannten Compilern.
    b) auch folgende Variante funktioniert damit:

    Code:
    uint16_t Animation1[2][9]={{0,2,3,4,5,6,7,8,9}, {1,2,3,4,5,6,7,8,9}};
    uint16_t Animation2[1][9]={{3,2,3,4,5,6,7,8,9}};
    
    Animationen Animations[2] = {{2, Animation1}, {1, Animation2}};
    

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2011
    Beiträge
    16
    Hmm, ich benutze das Standard Arduino-IDE (http://www.arduino.cc/en/Main/Software), welches laut http://www.arduino.cc/en/Hacking/BuildProcess mit dem avr-gcc compiled.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Ja drew, so war das gemeint. Folgender Code ist ungetestet, compiliert bei mir aber schon Mal:

    Code:
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <stdint.h>
    
    typedef uint16_t Frame_t[9];
    typedef struct {
        uint8_t frameCount;
        Frame_t * animation;
    } AnimationData_t;
    PROGMEM Frame_t Animation1[2] = { { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 11, 12, 13,
            14, 15, 16, 17, 18, 19 } };
    PROGMEM Frame_t Animation2[1] = { { 21, 22, 23, 24, 25, 26, 27, 28, 29 } };
    
    AnimationData_t animations[2] = { { sizeof(Animation1), Animation1 }, {
            sizeof(Animation2), Animation2 } };
    
    int main(void) {
        for (uint8_t i = 0; i < sizeof(animations); i++) {
            for (uint8_t j = 0; j < animations[i].frameCount; j++) {
                Frame_t * frames = animations[i].animation;
                for (uint8_t k = 0; k < 9; k++) {
                    uint16_t frameWord;
    
                    frameWord = pgm_read_word(&frames[j][k]);
                }
            }
        }
    }
    Später kann über animations zur Laufzeit fast wie auf ein Array zugegriffen werden, dieser Code legt die eigentlichen Bitmuster bereits im Flash ab.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    06.06.2011
    Beiträge
    16
    Danke, deine Lösung macht genau was ich gesucht habe

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Freut mich wenn es funktioniert, ich wollte den Code noch via Simulation überprüfen, musste aber feststellen dass Eclipse + avr-gdb + simulavr wohl nicht so meins ist und ich demnächst irgendwie AVR Studio über ne Windows-VM oder Wine zum laufen kriegen muss.
    Tiny ASURO Library: Thread und sf.net Seite

Ähnliche Themen

  1. LED Array
    Von filth im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 09.12.2008, 12:06
  2. Array
    Von infection im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 26.05.2008, 21:47
  3. Array auf zweidimensionale Array
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 25.05.2007, 12:48
  4. globales Array
    Von Baila_me im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 0
    Letzter Beitrag: 15.08.2006, 09:40
  5. Nur Nummern in Array / nur Variablentyp byte als Array?
    Von Crashmichl im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 27.04.2006, 23:15

Berechtigungen

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

LiFePO4 Speicher Test