-
        

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

Thema: Wohin mit grosen const-Tabellen?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2004
    Beiträge
    26

    Wohin mit grosen const-Tabellen?

    Anzeige

    Hallo,
    ich hab hier ein 256 Felder grosses unsigned char Array, welches als const deklariert ist.
    Code:
    const unsigned char adresse[256] = { ... };
    Diese Tabelle benötige ich nur in einer Funktion, die ungefähr alle 5ms aufgerufen wird und nur einen Wert daraus ausliest.
    Wie bringe ich diese Tabelle in meinem Mega8 möglichst Platz- und Ressourcenschonend unter?
    Gruss,
    Philip

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    ins eprom vom avr.
    mfg pebisoft

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2004
    Beiträge
    26
    Dauert das Auslesen des EPROMS nicht zu lange? (Wie lange überhaupt?) Ich hab noch nie etwas mit dem EPROM im AVR gemacht.
    Gruß,
    Philip

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    schau im datenblatt vom AVR nach. sind verschieden. wenn du den wert von 5ms angibst und dann in die tabelle vom AVR schaust, wirst du erkennen, das du mit der zeit massig hinkommst.
    mfg pebisoft

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Wenn ich das richtig interpretiere, läuft das EEprom immer mit 1MHz,
    das schreiben soll dann 8.5 ms dauern,
    vom lesen steht da:
    When the EEPROM is read, the CPU is
    halted for four cycles before the next instruction is executed.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2004
    Beiträge
    26
    Also, 4 Cycles bei 16MHz wären ja gerade mal 0,25ms, richtig?

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Wie rechnet man da ?
    1 / 16 000 000 * 4 ?

    da sagt mein calculator 0,00000025 s ?

    aber egal, sollte doch noch schnell genug sein !?

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2004
    Beiträge
    26
    Srimmt, vielen Dank.!

    Bloß wie kriege ich die Tabelle ins ERPOM? Zu Programmlaufzeit schreiben ist ja nicht so kompliziert, aber dann benötige ich die Tabelle ja auch wieder im Flash, und das ist ja nicht Sinn der Sache...

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    Ein vorweg: AFAIK verfügt kein AVR über EPROM. Wenn dann EEPROM. EPROM ist das mit Quarzfenster im Chip.

    Aber wofür sollte so eine Tabelle ins EEPROM, wo doch lesen und schreiben so aufwändig und langsam sind? Meiner Meinung nach sollte so eine Tabelle einfach in den Flash, also den Programmspeicher.

    Das geht bei AVR-gcc mit "PROGMEM const unsigned char[256]" (evtl. PROGMEM auch nach hinten), siehe Doku.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    @Goldfinger
    gedanken zur EEprom version:
    geschrieben werden muss die Tabelle ja nur einmal, entweder am Programmanfang einmal eine function aufrufen die das macht, oder evtl. sogar von einem anderen, denn die Daten bleiben ja drin.
    Zum auslesen benötigst Du jetzt auch einen Index um an einen bestimmten Wert zu kommen, diesen nachher einfach verwenden um die Speicheradresse des EEprom zu berechnen.

    weiter zu bedenken ist, das es 512 Bytes im EEprom gibt, (die Du jetzt garnicht nutzt),
    das SRam hat 1KB das dann 1/4 belegt wäre,
    also würde ich hier versuchen das EEProm zu verwenden, jenachdem was das Programm sonst machen muss.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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