Он не просто замысловатый он и логически неправильный, я же говорил, умные люди поправят )))
Как говорил Штирлиц, важно умение не только правильно зайти, но и выйти, добавил одну строку в Ваш код для улучшения эстетического восприятия )))
#include <EEPROM.h>
void setup() {
Serial.begin(115200);
for (uint16_t i = 0; i < EEPROM.length(); i++) { //Определяем диапазон EEPROM памяти
if (0x00 == (i % 0x10)) { // В начале каждой строки из 16 ячеек дампа выводим адрес блока
Serial.println();
if (i < 0x0F) { Serial.print("0"); }
if (i < 0xFF) { Serial.print("0"); }
Serial.print(i, HEX); Serial.print(" ");
}
uint8_t val = EEPROM.read(i);
if (val < 0x0F) { Serial.print("0"); }
Serial.print(val, HEX); Serial.print(" ");
}
Serial.println();
}
void loop() { }
В начале программы поставили проверку. Если неиспользуемая программой ячейка EEPROM содержит 0 - то далее идет запуск основной программы. Если в этой ячейка 255 то сначала EEPROM прописывается нулями, а потом уже запускается программа. Все прекрасно работает независимо от способа заливки кода.
И вопрос напоследок, чтобы съэкономить время. Сможет ли Атмега 8 заменить без шаманства Атмга 328 при условии, что памяти у Атмега 8 хватит для программы?
Если в этой ячейка 255 то сначала EEPROM прописывается нулями, а потом уже запускается программа.
Это неправильно.
Aleksandr1968 пишет:
И вопрос напоследок, чтобы съэкономить время. Сможет ли Атмега 8 заменить без шаманства Атмга 328 при условии, что памяти у Атмега 8 хватит для программы?
Если не используются специфические для 328 возможности, то будет работать. По ногам они совпадают
потому что "чистый" EEPROM всегда забит единицами, это его традиционно нормальное состояние, и забивать его нулями чистое извращение и снижение ресурса. Я бы наоборот, проверял на старте, если ПЗУ забита единицами, значит его стёрли, и соответственно НЕ читать из него нужное значение, а использовать дефолтное какрас для такого случая.
Ресурс охрененный, но зачем, если можно сделать по человечески?
Проверили 2-5-10 ячеек, если везде FF, прописываем дефолтные значения и работаем. ИМХО.
В начале программы поставили проверку. Если неиспользуемая программой ячейка EEPROM содержит 0 - то далее идет запуск основной программы. Если в этой ячейка 255 то сначала EEPROM прописывается нулями, а потом уже запускается программа. Все прекрасно работает независимо от способа заливки кода.
И вопрос напоследок, чтобы съэкономить время. Сможет ли Атмега 8 заменить без шаманства Атмга 328 при условии, что памяти у Атмега 8 хватит для программы?
обалдеть решение, а то что вам примеры неделю назад давали аналогичные вы благополучно игнорировали.....да вы реально тролль :)
Да что вы заладиль тролль не тролль. Была попытка не использовать такого решения, но нехватка времени и знаний заставила сделать так. Просто отписался о результате.
Да что вы заладиль тролль не тролль. Была попытка не использовать такого решения, но нехватка времени и знаний заставила сделать так. Просто отписался о результате.
Ну что за бред, а? Какая "попытка не использовать"? Что сложного при обнаружении в памяти 255 ПРОСТО НИЧЕГО НЕ ДЕЛАТЬ?
Вы реально тролль. который не читает ответов на форуме. Нафига тогда спрашивать и у людей время отнимать?
Он не просто замысловатый он и логически неправильный, я же говорил, умные люди поправят )))
Как говорил Штирлиц, важно умение не только правильно зайти, но и выйти, добавил одну строку в Ваш код для улучшения эстетического восприятия )))
В итоге решили проблему.
В начале программы поставили проверку. Если неиспользуемая программой ячейка EEPROM содержит 0 - то далее идет запуск основной программы. Если в этой ячейка 255 то сначала EEPROM прописывается нулями, а потом уже запускается программа. Все прекрасно работает независимо от способа заливки кода.
И вопрос напоследок, чтобы съэкономить время. Сможет ли Атмега 8 заменить без шаманства Атмга 328 при условии, что памяти у Атмега 8 хватит для программы?
Это неправильно.
И вопрос напоследок, чтобы съэкономить время. Сможет ли Атмега 8 заменить без шаманства Атмга 328 при условии, что памяти у Атмега 8 хватит для программы?
Если не используются специфические для 328 возможности, то будет работать. По ногам они совпадают
ок спасибо попробую
Это неправильно.
Дед, а "бить нельзя, а не вникнут - объяснять" почему неправильно???
Это неправильно.
Дед, а "бить нельзя, а не вникнут - объяснять" почему неправильно???
1. "Пустой" ячейке соответствкет 255, а не 0.
2. Лишняя операция записи в устройство с ограниченным ресурсом.
3. Лишний код в программе.
потому что "чистый" EEPROM всегда забит единицами, это его традиционно нормальное состояние, и забивать его нулями чистое извращение и снижение ресурса. Я бы наоборот, проверял на старте, если ПЗУ забита единицами, значит его стёрли, и соответственно НЕ читать из него нужное значение, а использовать дефолтное какрас для такого случая.
1) считать 255 нулём и не париться
2) найти наконец в конфигурационных файлах это прописывание FF-ками и выключить его нахрен?
Евгений, согласен с вами конечно. Поэтому этот блок проверки назвали в программе Костылем. Не самое изящное решение.
Вопрос, а насколько критична такая разовая "шлифовка" постоянной памяти. какой у нее ресурс перезаписи?
Ресурс охрененный, но зачем, если можно сделать по человечески?
Проверили 2-5-10 ячеек, если везде FF, прописываем дефолтные значения и работаем. ИМХО.
Да я знаю, и даже почему при форматировании прописывается F6 )))
В итоге решили проблему.
В начале программы поставили проверку. Если неиспользуемая программой ячейка EEPROM содержит 0 - то далее идет запуск основной программы. Если в этой ячейка 255 то сначала EEPROM прописывается нулями, а потом уже запускается программа. Все прекрасно работает независимо от способа заливки кода.
И вопрос напоследок, чтобы съэкономить время. Сможет ли Атмега 8 заменить без шаманства Атмга 328 при условии, что памяти у Атмега 8 хватит для программы?
обалдеть решение, а то что вам примеры неделю назад давали аналогичные вы благополучно игнорировали.....да вы реально тролль :)
Да что вы заладиль тролль не тролль. Была попытка не использовать такого решения, но нехватка времени и знаний заставила сделать так. Просто отписался о результате.
Да что вы заладиль тролль не тролль. Была попытка не использовать такого решения, но нехватка времени и знаний заставила сделать так. Просто отписался о результате.
Ну что за бред, а? Какая "попытка не использовать"? Что сложного при обнаружении в памяти 255 ПРОСТО НИЧЕГО НЕ ДЕЛАТЬ?
Вы реально тролль. который не читает ответов на форуме. Нафига тогда спрашивать и у людей время отнимать?