pgmspace.h mehrere dateien speichern.

OP #2370807
Lesenswert?
• ▲
▼
Hallo! Ich spiele hier gerade mit einem Grafikdisplay und probiere 
gerade aus mit der pgmspace.h zwei verschiedene bilder in den flash zu 
schreiben.
Aber aus irgend einem Grund wird mir immer nur das erste bild 
ausgegeben. Warum? Ich habs schonmal probiert das erste bild im programm 
auszukommentieren und nur das zweite zu brennen aber es kommt immer nur 
das erste bild.

Ausschnitt:

const prog_uint8_t  bild [] = {0x00,0x02,0x03........};
const prog_uint8_t  bild_2 [] = {0x04,0x05,0x06.........};


GLCD_Write_String2(bild_2,0x0C00);
_delay_ms(5000);
GLCD_Display_Clear(0x0C00,graphic_mode,0xff);
_delay_ms(5000);
GLCD_Write_String2(bild,0x0C00);



void GLCD_Write(prog_uint8_t *string, uint16_t ram_adr)
{
GLCD_Write_Data(ram_adr & 0xFF);
GLCD_Write_Data(ram_adr >> 8);
GLCD_Write_Command(0x24);
for(uint16_t i=0; pgm_read_byte_near(&bild[i]) != 2560; i++)
{
//string[i]-=0x20;
GLCD_Write_Data(pgm_read_byte(&bild[i]));
GLCD_Write_Command(0xC0);
if(i>=2560)
break;
}
}
#2370820
Lesenswert?
• ▲
▼
?

Was'n das?
if(i>=2560)
break;


Schreib doch erst mal die Funktion ordentlich. So richtig mit 
Einrückungen, einer sauberen Struktur und allem drum und drann. Dann 
hast du auch nicht so blödsinnige Fehler.
Und da in einem Bild wohl so ziemlich alle Bytewerte vorkommen werden, 
wird es eine gute Idee sein, wenn der Aufrufer der Funktion die 
Bildgröße bekannt gibt, weil die Funktion die selber nicht ermitteln 
kann.
#2370823
Lesenswert?
• ▲
▼
Eugen L. schrieb:
> Es sind 2560 Bytes 20x128 Bytes = 2560 Bytes (Horizontal 8bits)
> Dislplay 160x128 pixel

Mag alles sein.
Wenn der Aufrufer der Funktion das weiß, ist das in Ordnung. Aber die 
Funktion soll dann doch ja wohl jede beliebige Bildgröße ausgeben 
können. Von daher hat diese Zahl in der Funktion nix verloren. Genau 
dafür gibt es Funktionsargumente, damit ein Aufrufer einer Funktion die 
Funktion mit 'Wissen' versorgen kann.

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.