-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Arduino Flash: mit Sketch Speichern und Lesen "großer" 1-2-dim Arrays und Structures?

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452

    Arduino Flash: mit Sketch Speichern und Lesen "großer" 1-2-dim Arrays und Structures?

    Anzeige

    hallo,
    wie ist der beste und schnellste Weg zum schnellen Speichern und Lesen "großer" 1-2-dim Arrays und Structures im Flash per Arduino Sketch?
    Genau handelt es sich - für den Arduino Due - um entweder

    byte array2D[80][80]

    oder
    byte array[256]

    oder arrays von mehreren
    struc {
    int16_t i;
    int32_t j;
    int8_t b,c,d;
    int8_t str[50];
    } data;

    data darray[100];

    am besten wäre es sicher, alle Arrays als Block auf 1 Rutsch zu schreiben und zu lesen;

    beim Lesen der einfachen Arrays geht das auch, weil die Länge bekannt ist,

    aber bei den Datensatz-Arrays muss record-weise gelesen werden bis eof() , da die Menge an Datensätzen bei Programmstart noch nicht bekannt ist.


    ich möchte auf keinen Fall die Elemente immer nur einzeln lesen oder schreiben;
    was ich Suche (aber nicht gefunden habe) ist sowas wie
    setbuf ();
    fputs ();
    fflush ();

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    edit:
    las gerade, dass man hier sowieso nicht allzu oft schreiben darf (10k-100k).

    Das ist ja hundsmiserabel.

    Welche anderen Möglichkeiten zum einfachen Anschließen von externem Speicher (EEPROM oder SD etc) gibt es inkl. passende Schreib-/Lese-Software ?
    Geändert von HaWe (29.11.2014 um 09:58 Uhr)

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    Eine Lösung beim Due den Flash zu beschreiben habe ich noch nicht gesehen. Meines Wissens nach gibt es da auch kein Gegenstück zur EEPROM-Funktion der kleinen Arduinos.

    Wenn ich nur einfache Konfigurationsdaten speichern will, nehme ich bei den anderen Controllern EEPROMs von Microchip mit I2C-Anschluss, normalerweise den 24LC256. Die gibt es auch mit DIP-Gehäuse, dadurch kann man sie als steckbare Speichermodule verwenden. Es gibt auch größere, wie den 24LC1024 und schnellere mit SPI (25LC...).

    Ansonsten "füttere" ich den Due von einem anderem Board. Entweder vom Beaglebone, der kann über USB auch gleich die Stromversorgung vom Due erledigen. Oder von einem zweiten Controllerboard über UART. Das sind dann ein EA LPC4088 Quickstart Board (hat 32 MB SRAM und 8 MB Flash auf dem Board) oder das Freescale Freedom K64F mit Mikro-SD Steckplatz (bis 32 GB).

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    halo,
    inzwischen habe ich ein paar Lösungen für den Due gesehen, um seinen Flash zu beschreiben, aber es ist kein EEPROM und verträgt nicht viele Schreibzyklen.
    externes EEPROM müsste >> 1 Mio Schreibzyklen vertragen (sind oft auch nur >= 10k)
    interner Speicher vom Due wird beim Speichern einer neuen Programmversion auch gelöscht. Das geht nun gar nicht, dann sind nämlich alle bisher mühsam ermittelten Daten weg. Es darf daher der Daten-Teil NICHT gelöscht werden. Außerdem müsste man auch zum Kopieren der Daten Zugriff darauf haben (z.B. auf PC zwischenspeichern und dann auf anderen Arduino-Speicher kopieren).

    Also geht wohl beim Due nur externer Speicher, und ich denke fast, eine SD-Card wäre das beste.
    Kennt jemand SD-Card Harware mit Libs zum Schreiben und Lesen von Daten (Funktionsumfang etwa wie stdio.h, exakte Syntax ist ntl nicht so wichtig)?

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    Eine SD-Card Library gibt es doch bei Arduino.
    http://arduino.cc/en/Reference/SD

    Hardware wäre z.B. sowas
    http://www.watterott.com/de/mSD-Breakout

    Von der Library gibt es auch einen Fork mit
    Support soft SPI on any pins with Arduino Due
    https://github.com/adafruit/SD

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    ja klar, super, danke!
    Was bedeutet aber der Hinweis mit "soft SPI on Due" beim github-Link https://github.com/adafruit/SD?

    heißt das, die normale SPI-Lösung wie beim Mega (pins 50-53) im ersten Link http://arduino.cc/en/Reference/SD
    geht nicht?

    (ps, edit:
    50-53 kann ja nicht gehen, aber der Due hat auf dem SPI-Header ja stattdessen 74(MISO), 75(MOSI), 76(SCK).
    SS sehe ich gar nicht auf dem SPI-Header, CS auch nicht, nur RESET gegenüber GND.)
    Geändert von HaWe (30.11.2014 um 19:48 Uhr)

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    CS, also Chip Select kann bei meinen Boards ein beliebiger IO-Pin sein.

    Habe mir den Code auf github etwas angesehen. So richtig verstanden habe ich nicht, wie das konfiguriert wird. Ich denke aber Soft-SPI ist nur als (langsame) Alternative zur Hardwareversion gedacht. Übrigens ist SPI sowieso die langsamere Variante zum Zugriff auf eine SD, es gibt eine noch eine andere Schnittstelle mit vier Datenleitungen (MCI ?).

    Nach dem ich mir die Lib angesehen habe, bin ich ehrlich gesagt ganz froh, mit den anderen Boards zu arbeiten. Hier mal die Doku von deren SD-Lib
    http://developer.mbed.org/handbook/SDFileSystem
    Man gibt beim Anlegen des Dateisystem-Objektes einfach die Pin-Namen an, an denen die Karte hängt. Dann kann man ganz normal mit den Funktionen aus stdio.h arbeiten ...

    Ach ja:
    Noch eine Zusatzinfo zu den oben genannten EEPROMs. Da steht im Datenblatt "more than one million write cycles". Auch die Kommunikation ist dort schön mit Beispielen dargestellt. Sollte mit Wire eigentlich gehen.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    hi,
    1 Mio klingt ja absolut ok, und wire ist eigtl. auch ok, halt nicht ganz so gut wie stdio.h
    Verstehe auch nicht, wrum die Arduino-Leute da so einen Murks veranstalten.
    Aber welchen Speicher mit den EEPROMS meinst du jetzt, welchen Link genau? Meinst du den 24LC256 oder ein anderes Controllerboard?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    Ja, den 24LC256.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    habe jetzt mal schnell gegoogelt:

    - passt der auf ein Steckboard?
    http://www.ebay.de/itm/24LC256-I-P-E...item4852b565f9

    - wie kann man die Daten auf den PC kopieren (zum Bearbeiten) und auf andere Arduinos übertragen (duplizieren)?

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Bascom Bug in "Dim Variable as Eram Byte"
    Von raidy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 26.10.2011, 12:12
  2. LPC1114 (Cortex M0): "sei()" und "cli()"
    Von Jaecko im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 02.07.2010, 13:25
  3. "Soft-Reset?" und "Finger-Interrupt?"
    Von trapperjohn im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 11.06.2008, 00:02
  4. ASM: was machen "swap" und "cbr" genau?
    Von RHS im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 18.08.2004, 18:16
  5. C-Control und GRAFIK-EINHEIT 128X64 "Flash"
    Von farmerjo im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 21.02.2004, 18:38

Berechtigungen

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