Große Arrays

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2024  04:35:09      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Große Arrays

    







BID = 89340

Magni

Gelegenheitsposter



Beiträge: 91
Wohnort: Edewecht
ICQ Status  
 

  


Moin,

ich benutze den ATMega16 und versuche in einem großen Array Bildinformationen abzuspeichern.

Mein Array sieht wie folgt aus:

unsigned char yamanetbildH[2900]={3, 27, 4, 27, 4, 28, 4, 29, 5, 27, 5 ... };

Kompilieren mit dem GnuC-Kompiler geht dann wunderbar, übertragen mit PonyP. auch. Jedoch macht der ATMega dann Probleme, er scheint irgendwie mit dem großen Array was zu überschreiben oder der Kompiler tut das, jedenfalls funktioniert der Rest vom Code nicht wirklich. Wenn ich das Array kleiner anlege, etwa yamanetbildH[600], dann gehts wieder.

Hat jemand eine Ahnung woran das liegen könnte? Oder wir kann ich solch "große" Arrays abspeichern?

gr
Magni

BID = 89369

Henne02

Stammposter

Beiträge: 493
Wohnort: Aachen
Zur Homepage von Henne02

 

  

Vielleicht möchte das Array im SRAM abgelegt werden, aber Deine mcu hat davon nicht genug?

BID = 89377

Magni

Gelegenheitsposter



Beiträge: 91
Wohnort: Edewecht
ICQ Status  

Hm, wie kann ich das steuern?
Also die Variable selbst sollte sich im FlashRom des Atmegas befinden, aber zum lesen könnte der Kompiler wirklich auf die Idee kommen sie vorher in den SRam zu laden. Aber das ist gar nicht nötig.... denn ich lese die Variable Stück für Stück aus:

for(i=0; i<2900; i+=2){
lcdpixel_an (yamanetbildA[i],yamanetbildA[i+1]);
}


BID = 89420

Benedikt

Inventar

Beiträge: 6241

Dann versuchs mal mit const vor dem Array:
const unsigned char yamanetbildH[2900]={3, 27, 4, 27, 4, 28, 4, 29, 5, 27, 5 ... };

BID = 89568

Magni

Gelegenheitsposter



Beiträge: 91
Wohnort: Edewecht
ICQ Status  


Zitat :
Benedikt hat am  6 Aug 2004 19:40 geschrieben :

Dann versuchs mal mit const vor dem Array:
const unsigned char yamanetbildH[2900]={3, 27, 4, 27, 4, 28, 4, 29, 5, 27, 5 ... };


Hilft leider auch nix ...

Hier noch mal der gesamte Code:


Code :


/************************************************
** AVR-Testprogramm **
** ============ **
** (c)Adrian Macha **
** **
** **
*************************************************/
#include <avr/io.h>
#include <avr/pgmspace.h>

//#include "lcd2x16.h"
#include "tools.h"
#include "lcd.h"

typedef unsigned char u08;
typedef unsigned short u16;
typedef unsigned long u32;

const unsigned char yamanetbildA[600]={3, 27, 4, 27, 4, 28, 4, 29, 5, 27, 5, 28, 5, 29, 5, 30, 5, 52, 6, 27,
6, 28, 6, 29, 6, 30, 6, 31, 6, 32, 6, 50, 6, 51, 6, 52, 7, 28, 7, 29,
7, 30, 7, 31, 7, 32, 7, 33, 7, 34, 7, 48, 7, 49, 7, 50, 7, 51, 7, 52,
8, 29, 8, 30, 8, 31, 8, 32, 8, 33, 8, 34, 8, 35, 8, 36, 8, 46, 8, 47,
8, 48, 8, 49, 8, 50, 8, 51, 8, 52, 9, 31, 9, 32, 9, 33, 9, 34, 9, 35,
9, 36, 9, 37, 9, 38, 9, 44, 9, 45, 9, 46, 9, 47, 9, 48, 9, 49, 9, 50,
10, 33, 10, 34, 10, 35, 10, 36, 10, 37, 10, 38, 10, 39, 10, 40, 10, 43, 10, 44,
10, 45, 10, 46, 10, 47, 10, 48, 11, 35, 11, 36, 11, 37, 11, 38, 11, 39, 11, 40,
11, 41, 11, 42, 11, 43, 11, 44, 11, 45, 11, 46, 12, 37, 12, 38, 12, 39, 12, 40,
12, 41, 12, 42, 12, 43, 12, 44, 12, 45, 13, 37, 13, 38, 13, 39, 13, 40, 13, 41,
13, 42, 13, 43, 14, 35, 14, 36, 14, 37, 14, 38, 14, 39, 14, 40, 14, 41, 14, 51,
14, 52, 15, 33, 15, 34, 15, 35, 15, 36, 15, 37, 15, 38, 15, 39, 15, 49, 15, 50,



15, 51, 15, 52, 16, 31, 16, 32, 16, 33, 16, 34, 16, 35, 16, 36, 16, 37, 16, 48,
16, 49, 16, 50, 16, 51, 16, 52, 17, 30, 17, 31, 17, 32, 17, 33, 17, 34, 17, 35,
17, 36, 17, 46, 17, 47, 17, 48, 17, 49, 17, 50, 17, 51, 17, 52, 18, 28, 18, 29,
18, 30, 18, 31, 18, 32, 18, 33, 18, 34, 18, 44, 18, 45, 18, 46, 18, 47, 18, 48,
18, 49, 18, 50, 19, 27, 19, 28, 19, 29, 19, 30, 19, 31, 19, 32, 19, 42, 19, 43,
19, 44, 19, 45, 19, 46, 19, 47, 19, 48, 19, 49, 20, 27, 20, 28, 20, 29, 20, 30,
20, 40, 20, 41, 20, 42, 20, 43, 20, 44, 20, 45, 20, 46, 20, 47, 21, 27, 21, 28,
21, 29, 21, 38, 21, 39, 21, 40, 21, 41, 21, 42, 21, 43, 21, 44, 21, 45, 22, 27,
22, 37, 22, 38, 22, 39, 22, 40, 22, 41, 22, 42, 22, 43, 22, 44, 22, 45, 23, 35,
23, 36, 23, 37, 23, 38, 23, 39, 23, 40, 23, 41, 23, 42, 23, 43, 23, 44, 23, 45,
24, 33, 24, 34, 24, 35, 24, 36, 24, 37, 24, 38, 24, 39, 24, 42, 24, 43, 24, 44,
24, 45, 25, 31, 25, 32, 25, 33, 25, 34, 25, 35, 25, 36, 25, 37, 25, 38, 25, 42,



25, 43, 25, 44, 25, 45, 26, 29, 26, 30, 26, 31, 26, 32, 26, 33, 26, 34, 26, 35,
26, 36, 26, 42, 26, 43, 26, 44, 26, 45, 27, 27, 27, 28, 27, 29, 27, 30, 27, 31,
27, 32, 27, 33, 27, 34, 27, 35, 27, 42, 27, 43, 27, 44, 27, 45, 28, 27, 28, 28,
28, 29, 28, 30, 28, 31, 28, 32, 28, 33, 28, 42, 28, 43, 28, 44, 28, 45, 29, 27,
29, 28, 29, 29, 29, 30, 29, 31, 29, 32, 29, 33, 29, 34, 29, 35, 29, 36, 29, 37,
29, 38, 29, 39, 29, 40, 29, 41, 29, 42, 29, 43, 29, 44, 29, 45, 30, 27, 30, 28,
30, 29, 30, 30, 30, 31, 30, 32, 30, 33, 30, 34, 30, 35, 30, 36, 30, 37, 30, 38,
30, 39, 30, 40, 30, 41, 30, 42, 30, 43, 30, 44, 30, 45, 30, 46, 30, 47, 30, 48,
30, 49, 30, 50, 30, 51, 30, 52, 31, 30, 31, 31, 31, 32, 31, 33, 31, 34, 31, 35,
31, 36, 31, 37, 31, 38, 31, 39, 31, 40, 31, 41, 31, 42, 31, 43, 31, 44, 31, 45,
31, 46, 31, 47, 31, 48, 31, 49, 31, 50, 31, 51, 31, 52, 32, 42, 32, 43, 32, 44,
32, 45, 32, 46, 32, 47, 32, 48, 32, 49, 32, 50, 32, 51, 32, 52, 33, 51, 33, 52,



35, 49, 35, 50, 35, 51, 35, 52, 36, 44, 36, 45, 36, 46, 36, 47, 36, 48, 36, 49,
36, 50, 36, 51, 36, 52, 37, 40, 37, 41, 37, 42, 37, 43, 37, 44, 37, 45, 37, 46,
37, 47, 37, 48, 37, 49, 37, 50, 37, 51, 37, 52, 38, 35, 38, 36, 38, 37, 38, 38,
38, 39, 38, 40, 38, 41, 38, 42, 38, 43, 38, 44, 38, 45, 38, 46, 38, 47, 38, 48,
38, 49, 38, 50, 39, 31, 39, 32, 39, 33, 39, 34, 39, 35, 39, 36, 39, 37, 39, 38,
39, 39, 39, 40, 39, 41, 39, 42, 39, 43, 39, 44, 39, 45, 39, 46, 39, 47, 40, 27,
40, 28, 40, 29, 40, 30, 40, 31, 40, 32, 40, 33, 40, 34, 40, 35, 40, 36, 40, 37,
40, 38, 40, 39, 40, 40, 40, 41, 40, 42, 40, 43, 40, 44, 41, 27, 41, 28, 41, 29,
41, 30, 41, 31, 41, 32, 41, 33, 41, 34, 41, 35, 41, 36, 41, 37, 41, 38, 41, 39,
42, 27, 42, 28, 42, 29, 42, 30, 42, 31, 42, 32, 42, 33, 42, 34, 43, 27, 43, 28,
43, 29, 43, 30, 43, 31, 43, 32, 43, 33, 43, 34, 43, 35, 43, 36, 43, 37, 43, 38,
43, 39, 43, 40, 43, 41, 43, 42, 43, 43, 43, 44, 43, 45, 43, 46, 43, 47, 43, 48,



43, 49, 43, 50, 43, 51, 43, 52, 44, 27, 44, 28, 44, 29, 44, 30, 44, 31, 44, 32,
44, 33, 44, 34, 44, 35, 44, 36, 44, 37, 44, 38, 44, 39, 44, 40, 44, 41, 44, 42,
44, 43, 44, 44, 44, 45, 44, 46, 44, 47, 44, 48, 44, 49, 44, 50, 44, 51, 44, 52,
45, 30, 45, 31, 45, 32, 45, 33, 45, 34, 45, 35, 45, 36, 45, 37, 45, 38, 45, 39,
45, 40, 45, 41, 45, 42, 45, 43, 45, 44, 45, 45, 45, 46, 45, 47, 45, 48, 45, 49,
45, 50, 45, 51, 45, 52, 46, 45, 46, 46, 46, 47, 46, 48, 46, 49, 46, 50, 46, 51,
47, 43, 47, 44, 47, 45, 47, 46, 47, 47, 47, 48, 47, 49, 48, 42, 48, 43, 48, 44,
48, 45, 48, 46, 48, 47, 48, 48, 49, 41, 49, 42, 49, 43, 49, 44, 49, 45, 50, 39,
50, 40, 50, 41, 50, 42, 50, 43, 51, 37, 51, 38, 51, 39, 51, 40, 51, 41, 51, 49,
51, 50, 51, 51, 51, 52, 52, 35, 52, 36, 52, 37, 52, 38, 52, 39, 52, 46, 52, 47,
52, 48, 52, 49, 52, 50, 52, 51, 52, 52, 53, 31, 53, 32, 53, 33, 53, 34, 53, 35,
53, 36, 53, 37, 53, 41, 53, 42, 53, 43, 53, 44, 53, 45, 53, 46, 53, 47, 53, 48,



53, 49, 53, 50, 53, 51, 53, 52, 54, 28, 54, 29, 54, 30, 54, 31, 54, 32, 54, 33,
54, 34, 54, 35, 54, 36, 54, 37, 54, 38, 54, 39, 54, 40, 54, 41, 54, 42, 54, 43,
54, 44, 54, 45, 54, 46, 54, 47, 54, 48, 54, 49, 54, 50, 54, 51, 54, 52, 55, 27,
55, 28, 55, 29, 55, 30, 55, 31, 55, 32, 55, 33, 55, 34, 55, 35, 55, 36, 55, 37,
55, 38, 55, 39, 55, 40, 55, 41, 55, 42, 55, 43, 55, 44, 55, 45, 55, 46, 56, 28,
56, 29, 56, 30, 56, 31, 56, 32, 56, 33, 56, 34, 56, 35, 56, 36, 56, 37, 56, 38,
56, 39, 56, 40, 56, 41, 56, 42, 56, 49, 56, 50, 56, 51, 56, 52, 57, 29, 57, 30,
57, 31, 57, 32, 57, 33, 57, 34, 57, 35, 57, 46, 57, 47, 57, 48, 57, 49, 57, 50,
57, 51, 57, 52, 58, 31, 58, 32, 58, 43, 58, 44, 58, 45, 58, 46, 58, 47, 58, 48,
58, 49, 58, 50, 58, 51, 58, 52, 59, 40, 59, 41, 59, 42, 59, 43, 59, 44, 59, 45,
59, 46, 59, 47, 59, 48, 59, 49, 59, 50, 59, 51, 59, 52, 60, 37, 60, 38, 60, 39,
60, 40, 60, 41, 60, 42, 60, 43, 60, 44, 60, 45, 60, 46, 60, 47, 60, 48, 61, 34,



61, 35, 61, 36, 61, 37, 61, 38, 61, 39, 61, 40, 61, 41, 61, 42, 61, 43, 61, 44,
61, 45, 62, 31, 62, 32, 62, 33, 62, 34, 62, 35, 62, 36, 62, 37, 62, 38, 62, 39,
62, 40, 62, 41, 62, 42, 62, 43, 63, 28, 63, 29, 63, 30, 63, 31, 63, 32, 63, 33,
63, 34, 63, 35, 63, 36, 63, 37, 63, 38, 63, 39, 63, 40, 63, 41, 63, 42, 63, 43,
64, 27, 64, 28, 64, 29, 64, 30, 64, 31, 64, 32, 64, 33, 64, 34, 64, 35, 64, 36,
64, 40, 64, 41, 64, 42, 64, 43, 65, 26, 65, 27, 65, 28, 65, 29, 65, 30, 65, 31,
65, 32, 65, 33, 65, 40, 65, 41, 65, 42, 65, 43, 66, 25, 66, 26, 66, 27, 66, 28,
66, 29, 66, 30, 66, 40, 66, 41, 66, 42, 67, 24, 67, 25, 67, 26, 67, 27, 67, 28,
67, 40, 67, 41, 67, 42, 68, 25, 68, 26, 68, 27, 68, 28, 68, 29, 68, 30, 68, 40,
68, 41, 68, 42, 69, 26, 69, 27, 69, 28, 69, 29, 69, 30, 69, 31, 69, 32, 69, 33,
69, 40, 69, 41, 69, 42, 69, 43, 70, 27, 70, 28, 70, 29, 70, 30, 70, 31, 70, 32,
70, 33, 70, 34, 70, 35, 70, 36, 70, 40, 70, 41, 70, 42, 70, 43, 71, 28, 71, 29,



71, 30, 71, 31, 71, 32, 71, 33, 71, 34, 71, 35, 71, 36, 71, 37, 71, 38, 71, 39,
71, 40, 71, 41, 71, 42, 71, 43, 72, 31, 72, 32, 72, 33, 72, 34, 72, 35, 72, 36,
72, 37, 72, 38, 72, 39, 72, 40, 72, 41, 72, 42, 72, 43, 73, 34, 73, 35, 73, 36,
73, 37, 73, 38, 73, 39, 73, 40, 73, 41, 73, 42, 73, 43, 73, 44, 73, 45, 74, 37,
74, 38, 74, 39, 74, 40, 74, 41, 74, 42, 74, 43, 74, 44, 74, 45, 74, 46, 74, 47,
74, 48, 75, 28, 75, 40, 75, 41, 75, 42, 75, 43, 75, 44, 75, 45, 75, 46, 75, 47,
75, 48, 75, 49, 75, 50, 75, 51, 75, 52, 76, 28, 76, 29, 76, 30, 76, 31, 76, 32,
76, 33, 76, 34, 76, 43, 76, 44, 76, 45, 76, 46, 76, 47, 76, 48, 76, 49, 76, 50,
76, 51, 76, 52, 77, 28, 77, 29, 77, 30, 77, 31, 77, 32, 77, 33, 77, 34, 77, 35,
77, 36, 77, 37, 77, 38, 77, 46, 77, 47, 77, 48, 77, 49, 77, 50, 77, 51, 77, 52,
78, 28, 78, 29, 78, 30, 78, 31, 78, 32, 78, 33, 78, 34, 78, 35, 78, 36, 78, 37,
78, 38, 78, 39, 78, 40, 78, 41, 78, 42, 78, 43, 78, 49, 78, 50, 78, 51, 78, 52,



79, 29, 79, 30, 79, 31, 79, 32, 79, 33, 79, 34, 79, 36, 79, 37, 79, 38, 79, 39,
79, 40, 79, 41, 79, 42, 79, 43, 79, 44, 79, 45, 79, 46, 79, 47, 80, 30, 80, 31,
80, 32, 80, 33, 80, 34, 80, 35, 80, 40, 80, 41, 80, 42, 80, 43, 80, 44, 80, 45,
80, 46, 80, 47, 80, 48, 80, 49, 80, 50, 80, 51, 80, 52, 81, 32, 81, 33, 81, 34,
81, 35, 81, 36, 81, 44, 81, 45, 81, 46, 81, 47, 81, 48, 81, 49, 81, 50, 81, 51,
81, 52, 82, 33, 82, 34, 82, 35, 82, 36, 82, 37, 82, 47, 82, 48, 82, 49, 82, 50,
82, 51, 82, 52, 83, 34, 83, 35, 83, 36, 83, 37, 83, 38, 83, 51, 83, 52, 84, 36,
84, 37, 84, 38, 84, 39, 84, 40, 84, 41, 85, 37, 85, 38, 85, 39, 85, 40, 85, 41,
85, 42, 85, 43, 86, 38, 86, 39, 86, 40, 86, 41, 86, 42, 86, 43, 86, 44, 87, 39,
87, 40, 87, 41, 87, 42, 87, 43, 87, 44, 87, 45, 87, 46, 88, 28, 88, 40, 88, 41,
88, 42, 88, 43, 88, 44, 88, 45, 88, 46, 88, 47, 89, 28, 89, 29, 89, 30, 89, 31,
89, 32, 89, 33, 89, 42, 89, 43, 89, 44, 89, 45, 89, 46, 89, 47, 89, 48, 90, 28,



90, 29, 90, 30, 90, 31, 90, 32, 90, 33, 90, 34, 90, 35, 90, 36, 90, 37, 90, 45,
90, 46, 90, 47, 90, 48, 90, 49, 90, 50, 91, 28, 91, 29, 91, 30, 91, 31, 91, 32,
91, 33, 91, 34, 91, 35, 91, 36, 91, 37, 91, 38, 91, 39, 91, 40, 91, 41, 91, 42,
91, 43, 91, 46, 91, 47, 91, 48, 91, 49, 91, 50, 91, 51, 91, 52, 92, 34, 92, 35,
92, 36, 92, 37, 92, 38, 92, 39, 92, 40, 92, 41, 92, 42, 92, 43, 92, 44, 92, 45,
92, 46, 92, 47, 92, 48, 92, 49, 92, 50, 92, 51, 92, 52, 93, 41, 93, 42, 93, 43,
93, 44, 93, 45, 93, 46, 93, 47, 93, 48, 93, 49, 93, 50, 93, 51, 93, 52, 94, 28,
94, 48, 94, 49, 94, 50, 94, 51, 94, 52, 95, 28, 95, 29, 95, 30, 95, 31, 95, 32,
95, 33, 96, 28, 96, 29, 96, 30, 96, 31, 96, 32, 96, 33, 96, 34, 96, 35, 96, 36,
96, 37, 96, 38, 96, 39, 96, 40, 97, 28, 97, 29, 97, 30, 97, 31, 97, 32, 97, 33,
97, 34, 97, 35, 97, 36, 97, 37, 97, 38, 97, 39, 97, 40, 97, 41, 97, 42, 97, 43,
97, 44, 97, 45, 97, 46, 97, 47, 98, 28, 98, 29, 98, 30, 98, 31, 98, 34, 98, 35};

int main (void)
{

lcd_init();
lcd_clear_full();
lcd_clear_text();


int i;
for(i=0; i<240; i+=2){
lcd_pixel_on (yamanetbildA[i],yamanetbildA[i+1]);
}

for(;;)
{
}
}




Das interesannte ist nun, dass er Kompiler ab zeile 55
das hier ausgibt:
main.c:55: warning: excess elements in array initializer
main.c:55: warning: (near initialization for `yamanetbildA')

BID = 89675

Benedikt

Inventar

Beiträge: 6241

Bei mir gehts, aber ist ein anderer Compiler.
Schau doch mal in der Anleitung zum Compiler nach, da müsste stehen wie es geht.

Soviel zum Thema Standart ANSI C...

BID = 89706

Magni

Gelegenheitsposter



Beiträge: 91
Wohnort: Edewecht
ICQ Status  

Jemand hatte mit dem gnuC Compiler anscheinend das gleiche Problem (http://www.avr1.org/pipermail/avr-gcc-list/2002-October/002904.html).
Aber bei mir hilfts auch nicht, wenn ich es in mehrere Arrays teile.


Zitat :
Benedikt hat am  7 Aug 2004 16:35 geschrieben :

Bei mir gehts, aber ist ein anderer Compiler..

Welchen Compiler benutzt du denn?
Ist er gut? Vielleicht werd ich den dann benutzen.

Gr
M

BID = 89730

Benedikt

Inventar

Beiträge: 6241

Der Compiler ist für einen anderen uC, aber eigentlich sollte es bei deinem auch so gehen, denn ANSI C ist (eigentlich) ANSI C.

Schau doch mal im Handbuch nach, irgendein Schlüsselwort muss es geben, damit es geht. Irgenwas wie far, extern usw.

BID = 90222

Harry22

Gerade angekommen


Beiträge: 2

Hallo,

die Warnungen in Zeile 55 besagen, daß die Anzahl im Array [600] nicht mit der Anzahl der Initialisierungen (sind wohl 2400) übereinstimmen. Evtl. hilft es.

BID = 90246

Magni

Gelegenheitsposter



Beiträge: 91
Wohnort: Edewecht
ICQ Status  

Harry22, das kanns wirklich sein, denn wenn ich das ArrayFeld lehr lasse, also Array[], dann gibts die Warnung nicht mehr. Die Probleme bleiben jedoch immer noch. Der µC spinnt weiter.

Aber ich habs inzwischen aufgegeben, da das Bild eh nur zum Testen da war.
Trotzdem danke für die Hilfen!

Gr
Magni


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182400772   Heute : 546    Gestern : 7426    Online : 329        26.11.2024    4:35
0 Besucher in den letzten 60 Sekunden         ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0580759048462