Arduino a PROGMEM

Odpovědět
Uživatelský avatar
fulda
Příspěvky: 1359
Registrován: 04 led 2016, 17:18

Arduino a PROGMEM

Příspěvek od fulda »

Ahoj,

mám program (Arduino nano), kterej zoufale šetří RAMkou, takže má řetězce v progmem. Ale někde mi něco uniká a kus programu čmáře do paměti kam nemá.
Izoloval jsem to na tuto konstrukci:

Kód: Vybrat vše

void LnPrint(const uint32_t c,const char* mystr) {
...
}

int SomeInt=6;

void PrintTexts(const byte fin) {
  char mytext[6];
  static const char TextPM[] PROGMEM = "12345";
  ...
          strcpy_P(mytext,TextPM);
          LnPrint(0x100000,mytext);
          sprintf(mytext,"%d",SomeInt); // Hodnota je 6
          LnPrint(0x0A0A00,mytext);
Poslední co mne napadlo je, že třeba při definici TextPM není na konci znak '0', jinak už moc nevím co by se mohlo vymknout :(
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Arduino a PROGMEM

Příspěvek od DavidO »

Jestli tak krutě bojuješ o RAM, nepřepíšeš si to náhodou zásobníkem? Při volání LnPrint nebo sprintf třeba - kdoví jak hluboko vedou a kolik toho samy naládujou na zásobník?
Ten kus kódu vypadá neškodně, ale was heißt das "čmáře do paměti kam nemá"? Jak se to projevuje? Kde je to ještě OK a pak už ne?
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Arduino a PROGMEM

Příspěvek od DavidO »

Ideálně si to připojit k debuggeru, ale ten asi nemáš, PICkaři jeden zarytá, tak bych zkusil si to celý natáhnout do Studia a tam to pustit v simulátoru a koukat co se děje v paměti tam? Interakce se světem (vstupy/výstupy) žádná, ale něco málo se tomu podvrhnout dá a zbytek vidíš v registrech a paměti.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Odpovědět