Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Пишете 'flash'(или 'eeprom') перед типом переменной, а потом просто помните что она у вас не в ОЗУ (задержки там при чтении и т.п.) т.е. в прерывании лучше их не писать.
Отправлено
GDI
(195.131.9.34)
27 мая 2010, г. 11:14
В ответ на:
Как в CV AVR сохранить переменные во флэш? Переменные типа uchar, int, float. Может кто подскажет...
отправлено
dshabrov
27 мая 2010, г. 10:43
Составить ответ
|
Вернуться на конференцию
Ответы
Ответ: Но они обновляются раз в секунду. Какая ж флэш столько выдержет? Время выполнения тоже выростет.
-
dshabrov
(27.05.2010, 11:19:4
84.21.231.242
,
пустое
)
тогда делаете обновление в ОЗУ, а по событию выключения питания сохраняете во флеше ( в ЦВАВР путем простого присваивания). Я делал такое с ЕЕПРОМ все прекрасно работало, выключение питания следил по встроенному компаратору.
-
GDI
(27.05.2010, 11:26:9
195.131.9.34
,
пустое
)
Ответ: Вот это я и пытаюсь сделать. Только пока не знаю как...
-
dshabrov
(27.05.2010, 11:30:28
84.21.231.242
,
пустое
)
Да там все просто, настраиваете компаратор, делаете соответствующие подключения (я брал напряжение до 5в стабилизатора, так что времени с разряда емкости хватало за глаза), потом в прерывании компаратора просто ставите строки с вашими переменными var_in_eeprom = var_in_ram; и всё, всё остальное компилятор сделает за вас. Вам останется только проверить что времени на падение напряжения до уровня BOR достаточно для записи в ЕЕПРОМ.
-
GDI
(27.05.2010, 12:24:7
195.131.9.34
,
пустое
)
Да какой компаратор! Я с программой пытаюсь разобраться! Union это хорошо, но каким образом ее во флэш - то запихнуть. А выпихнуть как?
-
dshabrov
(27.05.2010, 12:29:52
84.21.231.242
,
пустое
)
Так Flash всё-таки или ЕЕПРОМ?
-
GDI
(27.05.2010, 12:34:8
195.131.9.34
,
пустое
)
и не надо юнионов никаких, просто пишете eeprom float var_in_eeprom; компилятор сам все разрулит. Юнион вам нужен если вы сами будете писать процедуры записи в еепром, но зачем, если это уже встроено в компилятор?
-
GDI
(27.05.2010, 12:36:50
195.131.9.34
,
пустое
)
А затем, что это компиляторозависимо. А еще затем, что сделав так один раз, тупой програмер в следующий раз устроит счетчик циклов в еепроме. Со всеми вытекающими. Ибо не понимает физической сущности. А чо, память же...
-
Doppler
(27.05.2010, 12:48:33
87.213.66.226
,
пустое
)
Не аргумент, ибо тогда, если утрировать, то надо всем писать в машинных кодах, потому что ассемблер тоже "компиляторо зависим", я имею ввиду препроцессор конкретного ассемблера. Ну, а дурака, как известно, могила исправит.
-
GDI
(27.05.2010, 13:50:41
195.131.9.34
,
пустое
)
EEPROM. Я так понял это самый простой способ. Создать образы переменных в EEPROM и туда их писать.
-
dshabrov
(27.05.2010, 12:39:2
84.21.231.242
,
пустое
)
Да, именно так, в ЦВАВР это проще всего, в ИАР чуть посложнее, но тоже можно разобраться, вообще, вам уже говорили про хэлп на компилятор, там это все описано с примерами.
-
GDI
(27.05.2010, 12:42:29
195.131.9.34
,
пустое
)
Какого простите, хрена, у вас обновляется переменная в еепроме раз в секунду?! Обновляйте ее в ОЗУ. А в еепром сохраняйте раз в 10 минут (зависит), да еще в два разных места. И потом считывайте оба и сравнивайте. Так же полезно иметь монитор питания с упреждением и электролит по питанию. По событию "питание пропало" срочно сохраняем переменную в еепром (дважды, в разные места) и стопорим процессор. При следующем включении вычитываем обе переменные и сравниваем. Принимаем решение "сбой был\не было" и поступаем как хотим. Ну кто так строит....(с)
-
Doppler
(27.05.2010, 11:24:29
87.213.66.226
,
пустое
)
Блин, да нет у меня переменных пока во флэш. Я и пытаюсь сделать то, что Вы написали. В этом вопрос и состоит - как сохранить переменные разного типа sj флэш по команде.
-
dshabrov
(27.05.2010, 11:32:46
84.21.231.242
,
пустое
)
Так в EEPROM или FLASH нужно писать???
-
Michael_75
(27.05.2010, 11:36:21
80.249.236.234
,
пустое
)
Это моя ошибка - в ЕЕПРОМ конечно.
-
dshabrov
(27.05.2010, 11:40:21
84.21.231.242
,
пустое
)
Ну так union для этого и нужен! Возьми любой учебник по C там всё написано. Если надо могу свой...{+}
-
Michael_75
(27.05.2010, 11:44:55
80.249.236.234
, 206 байт)
Ответ: Кинте, пожалуйста. Не сочтите за труд. dshabroff@mail.ru
-
dshabrov
(27.05.2010, 11:54:20
84.21.231.242
,
пустое
)
Читайте выше. Ключ к пониманию: переменные разных типов приводятся к массиву байтов, а уж массив байтов тупо пишется в еепром.
-
Doppler
(27.05.2010, 11:35:10
87.213.66.226
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 34:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru