• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
STRINGI z FLASH'a
#1
Witam,

Napisałem spory program do obsługi GSM'a.
Wysyłam z telefonu SMS'ami polecenia, a Arduino coś tam wykonuje
i mi równiez SMS'em odpowiada.

Wykorzystuję dosyć sporo tekstów zapisanych w STRING'ach,
które są przechowywane w pamięci operacyjnej SRAM (2kB).

Chciałbym zapisać te teksty do pamięci FLASH (32kB), i stamtąd je odczytywać w programie.

Macie jakieś sprawdzone metody?

Pozdr.
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
#2
Przecież wszystko masz ładnie opisane: https://www.arduino.cc/en/Reference/PROGMEM
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
Dziękuję 'namok' za naprowadzenie...

Dla potomnych przedstawiam krótki kod w którym chyba wszystko jest już jasne.
Dzięki niemu zrozumiałem jak zrobić aby STRINGI nie zajmowały już pamięci SRAM,
a zostały zapisane w pamięci FLASH.

Pozdr.

Kod:
// ------------------------
// Zdefiniowanie biblioteki
// ------------------------
#include <avr/pgmspace.h>

// -------------------------------------
// Zdefiniowanie tekstów w pamięci FLASH
// -------------------------------------
const char tekst_0 [] PROGMEM = "Tekst 0";
const char tekst_1 [] PROGMEM = "Tekst 1";

const char* const tablica [] PROGMEM = {
 tekst_0, tekst_1};

// -----------------------
// Zdefiniowanie zmiennych
// -----------------------
char bufor [30];
byte poz;

// -------------------
// Ustawienia programu
// -------------------
void setup ()
{
 Serial.begin (9600);
 while (!Serial);
}

// ---------------------
// Pętla główna programu
// ---------------------
void loop ()
{
 poz = 0;
 STRING ();
 delay (1000);

 poz = 1;
 STRING ();
 delay (1000);
}

// ----------------------------------------------
// Funkcja wyświetlająca STRING'a z pamięci FLASH
// ----------------------------------------------
void STRING ()
{
 strcpy_P (bufor, (char*) pgm_read_word (& (tablica [poz])));
 Serial.println (bufor);
}
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości