Hallo,
Ich bräuchte mal ein wenig Hilfe und zwar würde ich gerne ein
mehrdimensionales Array das ich per PROGMEM im Flash abgelegt habe an
eine Funktion übergeben:
Mein Array wird wie flogt im Flash abgelegt:
1
constuint8_timage_1[128][6]PROGMEM={
2
{0x00,0x00,0x3F,0x00,0x00,0x00},
3
...
4
}
soweit auch erstmal kein problem.
Wenn ich das jetzt richtig verstanden ist image_1 jetzt ein Array aus
Zeigern die auf den Flash zeigen? Auf deren Inhalt ich per
1
pgm_read_byte(&image_1[0][0])
zugreifen kann. Das funktioniert soweit auch...
Aber wie bekomme ich jetzt mein image_1 an eine Funktion übergeben? So
das ich aus der Funktion per pgm_read_byte auf den Inhalt von image_1
zugreifen kann?
Ich komm einfach nicht drauf...
Neo schrieb:> Aber wie bekomme ich jetzt mein image_1 an eine Funktion übergeben?
Im Normalfall übergibt man der Funktion den Zeiger auf den ersten Wert
(hier image_1) und die Dimensionen des Arrays, falls im Unterprogramm
benötigt.
So wollte ich's auch machen... klappt nur leider nicht:
Bekomme da erstmal eine Warnung bei der Übergabe:
warning: passing arg 1 of `G_DRAW_IMAGE' makes integer from pointer
without a cast
und dann in der Funktion folgenden Error:
error: subscripted value is neither array nor pointer
So schaut meine Funktion aus an die ich das gange gerne übergeben würde:
Floh schrieb:> Im Normalfall übergibt man der Funktion den Zeiger auf den ersten Wert> (hier image_1) und die Dimensionen des Arrays, falls im Unterprogramm> benötigt.
Also würde ich meiner Funktion einfach image_1[0][0] übergeben und dann,
innerhalb der Dimensionen, image_1[x][y] hochzählen?
werd ich gleich mal probieren :)
Neo schrieb:> Also würde ich meiner Funktion einfach image_1[0][0] übergeben und dann,> innerhalb der Dimensionen, image_1[x][y] hochzählen?
Ne. image[0][0] ist ein uint8_t.
Du brauchst die Adresse des Arrays, also entweder &image_1[0][0] oder
image_1 .
allerdings doch uint16_t sonst bekomm ich nur 1/4 des bildes und der
Rest ist naja... nenen wir es mal "rauschen"...
bekomme allerdings immernoch folgende Warnung:
main.c:153: warning: passing arg 1 of `G_DRAW_IMAGE' makes integer from
pointer without a cast
wie bekomm ich die jetzt noch weg?
> main.c:153: warning: passing arg 1 of `G_DRAW_IMAGE' makes integer from> pointer without a cast
wie schon geschrubt (und oben inzwischen auch im Beispielcode
vorgeschrubt): der formale Parameter 'image' ist ein POINTER, kein
uint16_t (bzw. hat es der Einfachheit halber zu sein).