Arduino a PROGMEM

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

Arduino a PROGMEM

Příspěvek od fulda » 12 lis 2020, 09:39

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: 956
Registrován: 01 kvě 2013, 21:27

Re: Arduino a PROGMEM

Příspěvek od DavidO » 12 lis 2020, 15:19

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?

DavidO
Příspěvky: 956
Registrován: 01 kvě 2013, 21:27

Re: Arduino a PROGMEM

Příspěvek od DavidO » 12 lis 2020, 15:26

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.


Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host