Kérdés:
Tárolja az úszókat és villanásból olvassa le őket
fuenfundachtzig
2015-06-14 13:46:48 UTC
view on stackexchange narkive permalink

Hogyan tárolhatom az úszókat villámgyorsan, és hogyan tudom onnan kiolvasni őket? (Szükségem van egy keresőtáblára a lebegő értékpárokhoz.)

Úgy tűnik, hogy a tárolási rész nem olyan nehéz, mert ez lefordítja:

  PROGMEM float value1 = 1.23456;  

De hogyan olvassam el őket? Kell-e bájtról bájtra másolni őket egy lebegő változóba, vagy van jobb módszer? (Arduino ATmega 328p-t használok 4 bájtos lebegőkkel.)

Kettő válaszokat:
Majenko
2015-06-14 14:40:31 UTC
view on stackexchange narkive permalink

Az avr-libc fájlban található egy erre a célra tervezett segítő makró:

  #define pgm_read_float_near (address_short) __LPM_float ((uint16_t) (address_short)) Olvasson el egy úszt a programterület 16 bites (közeli) címmel. Megjegyzés A cím bájtos cím. A cím a programtérben van. 

Használja így:

  PROGMEM float pi = 3.141592653; // állandó érték a lobogó átmérőjében = 24,332154; // változó felhasználó valuefloat kerülete = átmérő * pgm_read_float_near (&pi);  
dlchambers
2016-12-02 22:22:42 UTC
view on stackexchange narkive permalink

Tudomásul veszem, hogy az OP egyetlen értékről kérdezett, de úgy gondoltam, hogy hozzáadok egy információt egy tömbből való lekéréshez.

  const float pmdata [] PROGMEM = {1.0, 2.0, 3.0};  

majd így keresse meg:

  float val = pgm_read_float (&pmdata [idx]);  


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...