roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 дек 2024, 15:03

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 21:52 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
Всем здравствовать!

Назрел вопрос сохранения нескольких параметров программы между включениями МК. Как писать в флеш на асме знаю, а что на Си делать? просто обьявить переменную
flash uint8_t var;
достаточно? как задать исходное значение параметра (которое сразу после перепрошивки будет)?
if(var==0) var=33;
Чтото может красивше есть?
Писать в эту переменную также как и в обычную, значение автоматически в память прошьется и восстановится после рестарта?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 22:13 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
эта переменная будет константой...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 22:15 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
ну теоретически её можно будет обновлять при каждом старте из бутлодера...но на время выполнения основной проги да, константа.

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 22:18 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
executer писал(а):
как задать исходное значение параметра (которое сразу после перепрошивки будет)?

flash uint8_t var = 33;

executer писал(а):
Писать в эту переменную также как и в обычную


Эта var будет константой и будет в памяти программ лежать.

Переменные можно в EEPROM хранить. в CVAVR модификатор

eeprom

"Язык Си для микроконтроллеров" - http://avr123.nm.ru/05.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 22:19 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
если нужно изменять можно использовать EEPROM
блин авр апередил


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 22:44 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
Спасибо за советы. Я думал что flash и eeprom - одно и тоже :pardon: . Теперь есть что искать.
А для WinAVR не подскажете?


Последний раз редактировалось executer 11 июл 2009, 22:59, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 22:49 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Цитата:
Я думал что flash и eeprom - одно и тоже


На самом деле обе эти памяти являются EEPROM - просто есть некоторые нюансы и потому так называют, т.е. в МК это разные памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 23:12 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
если хочется можно и flah оставить только придётся использовать функцию самопрограмирования...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 23:15 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
вот тут нашел решение. всем сэнкс :good:
http://www.scienceprog.com/easy-start-w ... ng-winavr/

Добавлено спустя 1 минуту 8 секунд:
ALHIMIK писал(а):
если хочется можно и flah оставить только придётся использовать функцию самопрограмирования...


Это типа как бутлоадер сам инфу с COM порта в память шьет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 11 июл 2009, 23:24 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
угу. 3-е сообщение темы :D

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 12 июл 2009, 08:40 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
avr123.nm.ru писал(а):
Цитата:
Я думал что flash и eeprom - одно и тоже

На самом деле обе эти памяти являются EEPROM - просто есть некоторые нюансы


подобные нюансы разделают человека и обезъяну (утрированно)

флеша может и родом с того же семейства но вперед шагнула...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 12 июл 2009, 12:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Кудаб она ни шагнула она EEPROM и есть. Т.е. дословно - электрически стираемая перманентная ( не забывающая без питания ) ROM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 12 июл 2009, 14:09 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
однако обе памяти действительно одинаковы и могут считаться EEPROM. Просто кусочек именуемый "EEPROM" спецом предназначен для длительного хранения констант и чтения/записи их из другой части - flash, где находится сама программа.
Цитата:
как задать исходное значение параметра (которое сразу после перепрошивки будет)?

просто
var=33;
это пропишется в flash и будет стартовым значением переменной. А если это значение изменилось и его нужно сохранить и использовать при новом старте программы, то понадобится хранение в EEPROM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 12 июл 2009, 14:31 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
Для потомков:
(код из статьи по ссылке)
Код:
#include <inttypes.h>
#include <avr/io.h>
#include <avr/eeprom.h>

//store initial byte to eeprom
uint8_t EEMEM eeprombyte=0x10;
//store initial word to eeprom
uint16_t EEMEM eepromword=0x5555;
//store string to eeprom
uint8_t EEMEM eepromstring[5]={"Test\0"};
int main(void)
{
   
//RAM byte variable
uint8_t RAMbyte;
//RAM word variable
uint16_t RAMword;
//RAM array of bytes
uint8_t RAMstring[5];
//read byte from EEPROm and store to RAM
RAMbyte = eeprom_read_byte(&eeprombyte); // обратная функция - запись eeprom_write_byte (uint8_t *__p, uint8_t __value)
//read word from EEPROM and store to RAM
RAMword = eeprom_read_word(&eepromword); // подробная инфа в хелпе к ВинАВР "file://localhost/C:/Program%20Files/WinAVR/doc/avr-libc/avr-libc-user-manual/group__avr__eeprom.html" (без кавычек)
//copy string fro mEEPROM to RAM
eeprom_read_block ((void *)&RAMstring, (const void *)&eepromstring,5);
return (0);
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хранение в флеш (Си)
СообщениеДобавлено: 12 июл 2009, 14:48 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
contr писал(а):
однако обе памяти действительно одинаковы


тому кто читал обложку даташит очевидно что эти памяти далеко не одинаковы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO