Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: И всётаки она работает. Нужен совет.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Sholkin
Здравствуйте участники конференции.
Наверно участники abc , SaSaVitebsk подумают опять этот ….. пишет. Которого отбрили в апреле со своей программой. Да это опять я. И программа моя, заработала , и ошибку я нашёл сам , без кого либо. Я против них ни чего не имею. Но мне тогда обидно стало . я её отложил и забыл. Но как то в июне сел заново . .Нашёл ошибку (как находил и как бился опущу). Переделал немного и теперь её , как бы улучшаю.
Я это написал , чтоб не было разговоров . Типа тебе сказали …, а ты опять здесь …. (Кому нужно тот поймёт)

Извиняюсь за флуд , просто ….

Теперь по существу .
Совет нужен вот в каком плане. У меня данные записываются в память проца в EEPROM.
При зашивании программы , туда записываются FF. Как сделать , что бы данные заносились отдельно от программы? (сначала данные туда , потом прога ) или не как ?
Если вопрос не понятен сформулирую по другому , примером.
prm
А в чем сложность сначала прошить EEPROM, а затем FLASH? Чем прошиваете контроллер, какие ключи используете?
Tiny
Цитата(Sholkin @ Jul 9 2008, 06:29) *
Как сделать , что бы данные заносились отдельно от программы? (сначала данные туда , потом прога ) или не как ?

В программаторе можно отдельно записать EEPROM, отдельно Flash. Можно записать только EEPROM, можно только Flash. Или я вопроса не понял.
psw
Цитата(Tiny @ Jul 9 2008, 09:04) *
В программаторе можно отдельно записать EEPROM, отдельно Flash. Можно записать только EEPROM, можно только Flash. Или я вопроса не понял.

а еще можно что бы программа (которая во Flash) записывала то что нужно в EEPROM. Вариантов много - выбирай
Sholkin
Цитата
а еще можно что бы программа (которая во Flash) записывала то что нужно в EEPROM. Вариантов много - выбирай

не так нельзя. Если так сделать . Когда проц зависнет или питание пропадёт, то оно переписываетсь на изначальное, так как уходит на программы настроек всех. Пробовал так . смысл . Если питания снято, или завис , (вачдок на перезагрузку отправил проц) в еепром остались данные те которые последниими туда записал. А при зашытии проги ( когда в устроиство только его вставляем , нак сказать начало работы устройсва) там нули были.
Смысл , нужно эти данные отдельно от проги записать в EEPROM.
Цитата
В программаторе можно отдельно записать EEPROM, отдельно Flash. Можно записать только EEPROM, можно только Flash. Или я вопроса не понял.

Вопрос правильно понял. Сегодня в программаторе по капаюсь . Посмотрю как он это может делать или нет.
Спасибо за ответ
adc
Цитата(Sholkin @ Jul 9 2008, 07:29) *
Здравствуйте участники конференции.
Наверно участники abc , SaSaVitebsk подумают опять этот ….. пишет. Которого отбрили в апреле со

Если Вы меня имели в виду, то ник несколько другой smile.gif adc (это как команда сложения с переносом biggrin.gif )
Теперь по существу .
Цитата(Sholkin @ Jul 9 2008, 07:29) *
Как сделать , что бы данные заносились отдельно от программы? (сначала данные туда , потом прога ) или не как ?

К примеру пони (PonyProg) может прошивать отдельно как flash так и EEPROM.
Но! Зачем прошивать константы в EEPROM? Их можно определить во Flash и инициализировать EEPROM в начале программы.
swisst
Цитата(Sholkin @ Jul 9 2008, 08:54) *
не так нельзя. Если так сделать . Когда проц зависнет или питание пропадёт, то оно переписываетсь на изначальное, так как уходит на программы настроек всех. Пробовал так . смысл . Если питания снято, или завис , (вачдок на перезагрузку отправил проц) в еепром остались данные те которые последниими туда записал. А при зашытии проги ( когда в устроиство только его вставляем , нак сказать начало работы устройсва) там нули были.
Смысл , нужно эти данные отдельно от проги записать в EEPROM.


инициализируете параметры один раз и защищаете контрольной суммой (какой придумаете). При следующем запуске проца - пересчитываете контрольную сумму параметров в EEPROM и сверяете с ее значением, сохраненным в EEPROM. Если параметры не повреждены - загружаете их в RAM и вперед...если контрольная сумма не совпала - параметры настройки повреждены и использовать их нельзя - инициализируете их дэфолтными значениями из памяти программы.

ЗЫ а фьюз EESAVE можно еще запрограммировать...
Kuzmi4
2 swisst
на счёт CRC
+1
Очень полезная вещь кстати.
От многих геморов позволяет избавится если дЫвайс работает в стрёмных условиях..
defunct
Цитата(swisst @ Jul 9 2008, 09:17) *
инициализируете параметры один раз и защищаете контрольной суммой (какой придумаете). При следующем запуске проца - пересчитываете контрольную сумму параметров в EEPROM и сверяете с ее значением, сохраненным в EEPROM.

Хороший совет но боюсь не по адресу.
Цитата
не так нельзя. Если так сделать . Когда проц зависнет или питание пропадёт, то оно переписываетсь на изначальное

Контрольная сумма - это еще года на 2 работы smile.gif
domowoj
Можно и без контр. суммы.
После первой инициализации в ЕЕпром записать байт-признак и при последующих
инициализациях опрашивать его и если он установлен - иниц. не производить.
Sholkin
Цитата
Если Вы меня имели в виду, то ник несколько другой adc (это как команда сложения с переносом )

Здравствуйте. Именно вас имел введу. Извиняюсь , что ник перепутал.
Но я уже забыл всё проехали.
По существу.
adc у меня какой прогромматор не знаю . Может он это и может. Я его сам паял . Схему дали . Инструкции нет. Человека , который дал тоже нет.
Цитата
Но! Зачем прошивать константы в EEPROM? Их можно определить во Flash и инициализировать EEPROM в начале программы.

Немного не понял как это зделать, подумаю сегодня. У меня там не константы, а данные . Они не должны быть потерены , а изначально , как устроиство запустили (первый пуск ) там должны 0. Потом они только туда записываются , но не переписываються на изначальные , первого пуска.
Цитата
инициализируете параметры один раз и защищаете контрольной суммой (какой придумаете).

Это для меня пока сложно.
Цитата
Контрольная сумма - это еще года на 2 работы

Может быть . Пока учимся. Эту пишу пока не два . С перерывом пол года. Первоя большая прога . Те были маленькие , пипеточные.
Цитата
Можно и без контр. суммы.
После первой инициализации в ЕЕпром записать байт-признак и при последующих
инициализациях опрашивать его и если он установлен - иниц. не производить.

Вот этот вариан немного понял поппробую реализовать.
Спасибо всем кто ответил.
IgorKossak
Цитата(Sholkin @ Jul 10 2008, 05:14) *
... у меня какой прогромматор не знаю . Может он это и может. Я его сам паял . Схему дали . Инструкции нет. Человека , который дал тоже нет.

Под словом "программатор" имелась в виду программа на компьютере, а не спаянная железяка.
Кроме этого интересен способ программирования, я подозреваю, что у Вас внутрисхемно последовательно.
adc
Не сразу понял задачу, по этому с константами несколько не то сказал.
Как уже правильно сказали записать байт признак в EEPROM при инициализации.
Контрольную сумму можно сделать и без использования навороченных алгоритмов и полиномов.
Суммируйте все данные с округлением до байта и записывайте этот байт суммы в одну из ячеек EEPROM.
Sholkin
Парни спасибо за ответы.
Не совсем понял про контрольную сумму. Но зделал сначала так. Стал записывать в EEPROM типа флага , что была произведена запись данных и при сбросе или первым включением его проверяю . Если флаг , то читаю с EEPROM если нет , то забиваю нулями.
Потом зделал проще , если записи у меня не было , то в EEPROM (в ячейках куда данные записываю или когда только запрогроммировал) FF . А когда данные записываю, то там значение не превышающее 9 . Вот я зделал проверку старшей ячеики . Если там больше 9 то обнуляем , если меньше, то была запись.
Пока работает 3 дня с таким алгоритмом , сбоя нет.
Позднее хочу зделать запись данных , через ком порт (по ком порту забивать данные. Пока только индификационный номер посылаю).
Тупа пока но . Про баит признак понял так , как делал с флагом. Или имелось что то другое ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.