hallo ich möchte eine Tabelle mit 365 Tagen jeweils einem int Wert in C schreiben. mit unsigned int A[365]; oben nach den #defines wird der RAM überfüllt das hab ich dazu gefunden http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_flashstrings versteh ich nicht aber ziemlich nix und das: http://www.roboternetz.de/community/showthread.php?51536-PROGMEM kann ich das auch irgendwie für int statt char umbauen? wie speichert man am besten eine große Tabelle voll mit festen Werten? vielen dank mario
mario schrieb: > wie speichert man am besten eine große Tabelle voll mit festen Werten? Wie groß sind diese Daten? Wenn 8 Bit reichen, kannst du char oder besser unsigned / signed char nehmen (um zu verduetlichen, dass es keine Zeichen sind). So würde dein Speicherbedarf halbiert, du brauchst nur noch 365 Byte RAM für die Tabelle. Notfalls kannste dir noch das EEPROM anschauen. :-)
4-stellige zahlen sind das ah ja: int entspricht 2byte char entspricht 1byte 1byte entsprechen 8bit bei attiny ? toll super tipp! danke 365 bytes im RAM, sind immernoch zu viel. zur Not würde ich mir auch einen größeren controller holen, doch sehr ungern. die 365 Werte werden nicht verändert, sind also Konstanten! Was hat der Ram fürn Vorteil? Das speicher ich doch besser im Flash, wo ich viel Platz habe ... ? mit dieser Tabelle hier: //... #define blabla bla unsigned int tag; unsigned char A[365]; //... int main (void) { //... A[1]=5130; A[2]=5325; //... A[365]=9864; //... } kann ich ja z.B. so if (a[tag] >= 5302) { // mach was } ganz einfach auf die Tabelle zugreifen und Werte vergleichen. aber das ist garkeine echte Tabelle mehr, oder? da kann ich garnicht so einfach drin nachgucken, oder? #define bla bla const char a1[] PROGMEM = "9833"; const char a2[] PROGMEM = "1425"; const char a3[] PROGMEM = "5894"; const char a4[] PROGMEM = "6500"; //... const char a365[] PROGMEM = "2140"; danke! mario
mario schrieb: > die 365 Werte werden nicht verändert, sind also Konstanten! Das hast du vorher mit keinem Wort erwähnt. Dann eignet sich dafür direkt eine Tabelle im Programmcode, also PROGMEM. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29 :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.