Forum: Compiler & IDEs pgm_read_byte 8bit nach 32 bit


von Karl K. (leluno)


Lesenswert?

Original U.Radig /8bit:
1
char b;
2
b = pgm_read_byte(http_entry[index].new_page_pointer++);

meine Änderung /32bit:
1
char pgm_read_bytex(uint8_t *x){
2
return *x;
3
}
4
5
...
6
unsigned char b[5];
7
http_entry[1].new_page_pointer=Page1;
8
b[0] = pgm_read_bytex(http_entry[1].new_page_pointer++);
9
b[1] = pgm_read_bytex(http_entry[1].new_page_pointer++);
10
b[2] = pgm_read_bytex(http_entry[1].new_page_pointer++);
11
b[3] = pgm_read_bytex(http_entry[1].new_page_pointer++);
12
b[4] = '\0';
13
lgw(10,1,b);

Der code funktioniert, es kommt aber sowohl bem Original wie bei der 
Änderung die Warnung "makes pointer from integer without a cast". Wieso 
die Warnung und wie bekomme ich sie weg?

von Karl H. (kbuchegg)


Lesenswert?

Wenn mich mein Gedächtnis nicht trügt, dann ist der new_page_pointer in 
der Struktur kein Pointer sondern ein int (also ein Index).

von Karl K. (leluno)


Lesenswert?

Glückwunsch zu Deinem Gedächtnis:
1
  struct   http_table
2
  {
3
//    PGM_P old_page_pointer          ;
4
//    PGM_P new_page_pointer          ;
5
    uint32_t old_page_pointer        ;
6
    uint32_t new_page_pointer        ;
7
    unsigned char *auth_ptr         ;
8
...

So macht das Sinn, bei progmem wird mit dem Integer das Feld eines 
arrays bezeichnet, nicht eine Adresse.

Ich muss also die Structur ändern, weil ich bei arm eine Speicheradresse 
brauche.

Danke

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

karl k. schrieb:
> Original U.Radig /8bit:
> b = pgm_read_byte(http_entry[index].new_page_pointer++);
>
> meine Änderung /32bit:
>
> char pgm_read_bytex(uint8_t *x){
> return *x;
> }

Glückwunsch, das Rad ist bereits erfunden und heißt pgm_read_dword.

von Karl H. (kbuchegg)


Lesenswert?

Johann L. schrieb:

> Glückwunsch, das Rad ist bereits erfunden und heißt pgm_read_dword.

Wenn ich das richtig rausgelesen habe, dann versucht er den Radig-Code 
auf eine 32-Bit Maschine zu portieren. D.h. er baut sich Ersatz für die 
pgm_xxx Funktionen.

von leluno (Gast)


Lesenswert?

Karl Heinz schrieb:
> Ersatz für die
> pgm_xxx Funktionen

genau

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
Noch kein Account? Hier anmelden.