lange Liste bzw. Tabelle

Gast #2110547
Lesenswert?
• ▲
▼
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
Gast #2110557
Lesenswert?
• ▲
▼
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. :-)
Gast #2110609
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.