PROGMEM
Re: PROGMEM
Az & a címen levő memoria értéket adja vissza.
Re: PROGMEM
Próbáldmeg így beolvasni:

Kód: Egész kijelölése
data = pgm_read_byte_near(sinetable + szamlalo);
Re: PROGMEM
Bővebben akkor elmagyarázom.
Ha a neten keresed, egy paramétert kétféleképpen lehet átadni.
- átadod az értéket (pl. 123) -- érték szerinti paraméterátadás
- átadod az érték címét, ahol a memóriában elhelyezkedik -- cím szerinti paraméterátadás
A cím szerinti bonyolultabb, nehezebb megérteni.
Hogyan adhatod át egy tömb 23. elemét cím szerint:
Mutatók összeadogatását (második megoldás) lehetőleg elkerültem volna, mert nem a kezdő tananyag része, de ha tetszik nyugodtan használhatod. A két megoldás teljesen ekvivalens, azt használod, amelyik jólesik.
Ha a neten keresed, egy paramétert kétféleképpen lehet átadni.
- átadod az értéket (pl. 123) -- érték szerinti paraméterátadás
- átadod az érték címét, ahol a memóriában elhelyezkedik -- cím szerinti paraméterátadás
A cím szerinti bonyolultabb, nehezebb megérteni.
Kód: Egész kijelölése
void cimSzerintModosit( uint8_t * cim)
{
*cim = 13;
}
void setup()
{
Serial.begin(115200);
uint8_t par; // ez egy paraméter
cimSzerintModosit(&par); // átadod a címet, ahol 'par' paraméter van
// bele fog íródni 13
Serial.println(par); // itt már 13 lesz par-ban
}
Kód: Egész kijelölése
uint8_t * ertekCim = &tomb[23]; // ez az amit föntebb írtam, elég egyszerű, az & címet jelent
uint8_t * ertekCim = tomb + 23; // amit kapu48 mondott, háttértudást igényel, hogy megértsd
Re: PROGMEM
Köszönöm a segítséget, de az első példát nem teljesen értem. Miért van az unit8_t és a cím összeszorozva? És jól értelmezem, hogy akkor a flash memóriából egy tömb, egy bizonyos értékét csak cím szerint lehet átadni?
Re: PROGMEM
Itt a * mutatót jelent, nem szorzást. A "Mutatók" résznél érdemes átnézni a C könyvet.
A mutató egy címet tartalmaz, ami egy memória-rekeszre mutat. Enélkül elég nehéz cím szerinti paraméter-átadást megvalósítani.
A C könyv példákon keresztül jobban el tudja magyarázni, mint mi itt a fórumon.
A mutató egy címet tartalmaz, ami egy memória-rekeszre mutat. Enélkül elég nehéz cím szerinti paraméter-átadást megvalósítani.
A C könyv példákon keresztül jobban el tudja magyarázni, mint mi itt a fórumon.