Ich brauche einen neuen Denkanstoß. Während der Laufzeit soll ein großer SRAM-Bereich (ATmega) zur Datenzwischenspeicherung verwendet werden. Das Datenformat kann vom Benutzer im Menü eingestellt werden und unterscheidet sich vom Umfang her. Es kann immer nur eins verwendet werden. Im Prinip: struct tpr_sp1 { // belegt 8 Byte unsigned char tpr1; unsigned char tpr2; unsigned char tpr3; unsigned char status; unsigned long zeitstempel; }; struct tpr_sp1 tpr1[100]; // belegt 8 x 100 Byte = 800 Byte ODER struct tpr_sp2 { // belegt 4 Byte unsigned char tpr1; unsigned char tpr2; unsigned char tpr3; unsigned char status; }; struct tpr_sp2 tpr2[200]; // belegt 4 x 200 Byte = 800 Byte Ich brauche aber immer nur eine Struktur, praktisch im gleichen Speicherbereich. Da die 2. Struktur nur halb so groß ist, könnte ich doppelt so viel Datensätze bei gleichen RAM-Bedarf ablegen. Wenn ich es über eine Union zusammenlege, wird wie zu erwarten auch für sp2 8 Byte reserviert. union tpr_union { // belegt 8 Byte struct tpr_sp1 { unsigned char tpr1; unsigned char tpr2; unsigned char tpr3; unsigned char status; unsigned long zeitstempel; } sp1; struct tpr_sp2 { unsigned char tpr1; unsigned char tpr2; unsigned char tpr3; unsigned char status; } sp2; }; union tpr_union tpr[100]; // belegt 8 x 100 Byte = 800 Byte Wie löst man das am besten? Alternative wäre ein 800 Byte großes Universal-Array, welche mit unterschiedlichen Indexen un Offsetwerten verwaltet wird. Machbar, aber recht unübersichtlich.
union tpr_union { struct tpr_sp1 { unsigned char tpr1; unsigned char tpr2; unsigned char tpr3; unsigned char status; unsigned long zeitstempel; } sp1[100]; struct tpr_sp2 { unsigned char tpr1; unsigned char tpr2; unsigned char tpr3; unsigned char status; } sp2[200]; } tpr;
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.