Я бы не морочился - умножил бы на 10/100/1000 и - в еепром. Главное не забыть разделить "взад". Плавающая арифметика дофига жрет памяти. А больше двух знаков после запятой - оно и редко надо.
по идее флоат это просто 4 байта. можно его преобразовать в 4 байта и записать как отдельные 4 байта в еепром, а после считывания обратно преобразовать во флоат но если количество знаков после запятой четко определено, то конечно лучше тупо умножить на нужное количество порядков и орудовать как с целыми
Может, я подробностей не знаю. Там с EEPROM была ещё одна проблема (она описана в ERRATA многих даташитов). Если использовать для записи бита EERE команды STS или ST, то возникает левое прерывание (см, например даташит на ATMEGA32A или просто поищи по фразе "Reading EEPROM by using ST or STS to set EERE bit triggers unexpected interrupt request" - там куча даташитов вылезет). Ошибка не исправлена до сих пор. ERRATA советует использовать команды OUT и SBI, но тут засада - в библиотеке от производителя долгое время использовалась именно ST, потом поменяли, но старые библиотеки гуляют везде и проблема целиком не ушла.
Посмотрел. Спасибо! Да это в общем то вопрос был к @parovoZZ, он же у нас только учебник и даташит считает правильным источником, а тут инфа из интернета. Как то не серьезно. Но именно про нулевую ячейку, нигде ничего нет. То, о чем я и говорил. Пишут о возможности порчи данных EEPROM в принципе. Большая часть сообщений описывает проблему при отключении/подключении питания. Посмотрел фьюзы на двух оригинальных платах, Мега2560 и Леонарда ETH. BODLEVEL установлен на 2,7В и 2,6В соответственно. Причем у обеих плат частота 16МГц. При такой частоте питание должно быть в диапазоне 4,5-5,5В. Корректно ли будут выбираться команды из памяти программ при 16МГц и питании 2,7В - неизвестно. Если команды будут читаться с ошибками, возможно, процессор, молотя по некорректно считанным командам, может испортить и данные в EEPROM. Мы в свое время на 8051 с внешней памятью с этим сталкивались. Приходилось ставить супервайзеры питания отслеживающие рабочий диапазон напряжения и формирующие Reset процессора. Это было еще до AVR. В AVR появился встроенный BOD. Я Ардуино ИДЕ первый раз поставил только в 2015-ом году, до этого для AVR писал под ICC, Atmel Studio. Всегда включал BOD и ни разу не сталкивался с проблемой порчи данных в EEPROM.
Речь не про нулевую ячейку, а про то, что указатель необходимо парковать на свободной ячейке. Это может быть и десятая, и сотая или последняя. Запись в EEPROM происходит при напряжении на затворах в 12 вольт. Такое напряжение формирует контроллер EEPROM. И где-то я видел рекомендацию, что при работе с EEPROM желательно обеспечить уровень напряжения не ниже определённого. Но вот никак не вспомню, где это я видел.
float то еше г"""о кстати может поможет что записать чисто 9999 в еепром надо (32 чеек еепром примерно) но если записать числа по оддельности 9в одну 9 в другую и так далее то понадобиться всего 4 ячейки
я в принципе не понимаю, зачем использовать float на 8-ми битках, если можно прекрасно обойтись и без него.
32 ячейки??? - это в каком же формате 9999 требует 32х ячеек? чтобы записать 9999: как uint16_t - достаточно двух ячеек как float - 4х ячеек как строку "9999" - 4х или пяти в зависмости от наличия терминатора Молодой человек, похоже вам еще рано выступать на взрослом форуме