ins eprom vom avr.
mfg pebisoft
Hallo,
ich hab hier ein 256 Felder grosses unsigned char Array, welches als const deklariert ist.Diese Tabelle benötige ich nur in einer Funktion, die ungefähr alle 5ms aufgerufen wird und nur einen Wert daraus ausliest.Code:const unsigned char adresse[256] = { ... };
Wie bringe ich diese Tabelle in meinem Mega8 möglichst Platz- und Ressourcenschonend unter?
Gruss,
Philip
ins eprom vom avr.
mfg pebisoft
Dauert das Auslesen des EPROMS nicht zu lange? (Wie lange überhaupt?) Ich hab noch nie etwas mit dem EPROM im AVR gemacht.
Gruß,
Philip
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.
Also, 4 Cycles bei 16MHz wären ja gerade mal 0,25ms, richtig?
Wie rechnet man da ?
1 / 16 000 000 * 4 ?
da sagt mein calculator 0,00000025 s ?
aber egal, sollte doch noch schnell genug sein !?
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...
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.
@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.
Lesezeichen