Moin Ich will mit meinem ATmega128 auf einem GLCD große Buchstaben darstellen(softfonts). Sie sind im Flash der MC als zweidimensionales Array abgelegt: ////////////////////////////////// #include <avr/pgmspace.h> const unsigned char fontsbig[104][48] PROGMEM = { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ASCII = 032 SPACE 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, { 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00, // ASCII = 033 ! 0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00, ... 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; ////////////////////////////////// Zugreifen von der Grafikroutine möchte ich so ////////////////////////////////// currentbyte=pgm_read_byte(&fontsbig[sign][i]); ////////////////////////////////// Doch an der Stelle meckert mein Compiler(avr-gcc (GCC) 3.4.3) und schmeißt mir diese Fehlermeldung vor die Füße: ////////////////////////////////// lcd_fonts.c:58: error: invalid use of array with unspecified bounds ////////////////////////////////// Nach meinem Wissen hab ich hier nicht verkehrt gemacht, bei eindimensionalen Arrays klappt es auf diese Weise ja auch. Wo ist hier der Haken. Oder ist es gar ein Compilerfehler? Danke Schuddi
Zeig doch mal mehr Source Code. Aus dem was Du bisher preisgegeben hast, kann man noch nicht viel folgern. Einschub: Warum denken immer alle gleich an Compilerfehler? Klar haben Compiler auch Fehler, sind auch nur Programme. Aber 99.9% aller Fehler sind Programmierer-Fehler und keine Compilerfehler. Du kannst davon ausgehen, dass wenn ein Compiler einen Fehler hat, dann steckt der irgendwo in 'esoterischen' Bereichen der Sprache. Dass ein Durchscnittsprogrammierer einen Compilerfehler findet ist weniger wahrscheinlich wie 6 Richtige im Lotto.
Insbesondere sind alle Codestellen interessant wo fontsbig im Zusammenhang mit [] vorkommt.
Ne, is auch kein Compilerfehler. Ich muß da ganze anders deklarieren. "const unsigned char fontsbig[104][48] PROGMEM" ist in der Datei "fontsbig.c" abgelegt und in dem dazugehörigen Header mit "extern const unsigned char fontsbig[][] PROGMEM;" für andere c-Dateien zugänglich gemacht. Der Aufruf "currentbyte=pgm_read_byte(&fontsbig[sign][i]);" findet in der Datei "lcd_fonts.c" statt. Hier tritt der Fehler auf. Wenn ich die Daten von "const unsigned char fontsbig[104][48] PROGMEM" in der Datei "lcd_fonts.c" ablege, von woaus auch der Aufruf kommt, haut alles hin. Wie kann ich auf die Daten in der anderen Datei trotzdem zugreifen?
Bei der Deklaration von externen Arrays darf man nur den ersten Index weglassen. Versuchs mal mit: extern const unsigned char fontsbig[][48] PROGMEM;
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.