Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    187

    По умолчанию Работа с PROGMEM

    А нельзя так сохранять значения и на время отключения питания? В какой момент они уничтожаются во флеше?

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    53
    Сообщений
    13,367
    Вес репутации
    10

    По умолчанию Re: Работа с PROGMEM

    Пример

    Следующий фрагмент кода иллюстрируют, как читать и писать данные в PROGMEM

    #include <avr/pgmspace.h>

    // save some unsigned ints
    const PROGMEM uint16_t charSet[]={65000,32796,16843,10,11234};

    // save some chars
    const char signMessage[] PROGMEM ={"I AM PREDATOR, UNSEEN COMBATANT. CREATED BY THE UNITED STATES DEPART"};

    unsignedint displayInt;
    int k;// counter variable
    char myChar;


    voidsetup(){
    Serial.begin(9600);
    while(!Serial);

    // put your setup code here, to run once:
    // read back a 2-byte int
    for(k =0; k <5; k++)
    {
    displayInt = pgm_read_word_near(charSet + k);
    Serial.println(displayInt);
    }
    Serial.println();

    // read back a char
    int len = strlen_P(signMessage);
    for(k =0; k < len; k++)
    {
    myChar = pgm_read_byte_near(signMessage + k);
    Serial.print(myChar);
    }

    Serial.println();
    }

    voidloop(){
    // put your main code here, to run repeatedly:

    }
    Последний раз редактировалось Chip; 01.11.2015 в 07:25.

  3. #3
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    187

    По умолчанию Re: Работа с PROGMEM

    Это я знаю. Вопрос мой вот в чём: поскольку тут идет размещение значений "во флеш памяти", то, возможно, что они там сохраняются и после отключения питания? МОжет можно использовать как более ёмкий и простой вариант вместо EEPROM?

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    53
    Сообщений
    13,367
    Вес репутации
    10

    По умолчанию Re: Работа с PROGMEM

    Получается что можно. Я на maple mini так и делал, у нее него нет EEPROM
    Последний раз редактировалось Chip; 19.03.2017 в 02:56.

  5. #5
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    187

    По умолчанию Re: Работа с PROGMEM

    Цитата Сообщение от Chip Посмотреть сообщение
    Получается что можно. Я на maple mini так и делал, у нее него нет EEPROM
    Может поэтому там это стандартная функция? А как обращались к сохранённым значениям после перезагрузки? По прямому адресу или как?

    (офф А почему по Вашей ссылке stm32 дешевле чем Нано?)
    Последний раз редактировалось edw123; 03.11.2015 в 16:15.

  6. #6
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    53
    Сообщений
    13,367
    Вес репутации
    10

    По умолчанию Re: Работа с PROGMEM

    Такие вот цены, на сегодняшний день. У наны кроме контроллера еще куча обвеса, включая дорогой FTDI чип
    Последний раз редактировалось Chip; 03.11.2015 в 16:23.

  7. #7
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    187

    По умолчанию Re: Работа с PROGMEM

    Ясно по стм32.

    А по поводу обращения к старым, сохранённым во флеше значениям - как? Я же так понимаю, что по имени переменной уже нельзя будет обратиться - попадёт в другое место флеша?

  8. #8
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    53
    Сообщений
    13,367
    Вес репутации
    10

    По умолчанию Re: Работа с PROGMEM

    Имя это для компилятора, он автоматически, везде где встретит в коде эту запись, подставит вместо нее физический адрес
    Последний раз редактировалось Chip; 03.11.2015 в 18:50.

  9. #9
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    187

    По умолчанию Re: Работа с PROGMEM

    Цитата Сообщение от Chip Посмотреть сообщение
    Имя это для компилятора, он автоматически, везде где встретит в коде эту запись, подставит вместо нее физический адрес
    Т.е. есть уверенность, что отработав на объекте и записав значения массива в PROGMEM я, запустив дома ардуинку, смогу обратиться к записанным на объекте во флеш данным как к тем же самым элементам массива и получить в результате ранее записанные данные? Не получится, что массив будет создан уже по другому физическому адресу и, соответственно, он будет нулевым, а не со старыми значениями?
    Последний раз редактировалось edw123; 05.11.2015 в 15:33.

  10. #10
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    53
    Сообщений
    13,367
    Вес репутации
    10

    По умолчанию Re: Работа с PROGMEM

    Не получится, что массив будет создан уже по другому физическому адресу
    С чего бы? Объяснение есть?

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •