По-моему, одного въедливого исследователя кодов Вы уже лишились (см. #54) из-за своей непомерной обидчивости :)
А какие, кстати, у Вас другие идеи? Наливайте :)
А этой же теме или другой? У меня есть реализация класса настроект в EEPROM (надеюсь не как у гивера). Основной функционал выполняет, но хочется сделать лучше
А этой же теме или другой? У меня есть реализация класса настроект в EEPROM (надеюсь не как у гивера). Основной функционал выполняет, но хочется сделать лучше
думаю, лучше в этой.
если обсуждение пойдет не так - проще будет одну ветку чистить, а не две :)
Hе, дида, наоборот - благодаря этому форуму N-ная часть разработчиков будет обкладываться скобками в макросах, считаю - это тот успех, за который боролся Великий Чма - просвещение ;)
Да что вы на меня напали то? Я написал чтобы критиковали код, а не меня
Ворота, это не ошибка... ну не грубая
Петрович уже с языка снял :(
Вот как раз для таких как ТЫ она и стоит
ого как мы заговорили? похоже, ТС надо только по шерстке гладить, критику оно не любит.
Деда, где там картинка с указателем? - положи поближе, похоже, скоро понадобится.
Критикуйте код, а не меня
Да что вы на меня напали то?
Ну, если ты считаешь. что я на тебя напал, тем что на ошибку указал, то извини. Больше не буду. Кстати, и реация на гивера похожая :)
Т.е. то, что специалированный класс таймера всегда врёт на 1мс - не ошибка? А что же тогда ошибка? Можете дать определение?
И, да, таже самая ошибка была у гивера, как я уже говорил.
согласен. Просто имел в виду, что это такая очевидная вещь, что может быть просто опечаткой... Но ответ ТС показывает. что для него - не очевидная.
Ворота, это не ошибка... ну не грубая
И, да, таже самая ошибка была у гивера, как я уже говорил.
Я тут в соседней теме не мог собрать long из байт, потому что забыл поставить преобразование. Тоже у гивера спросил как это делается?
Т.е. то, что специалированный класс таймера всегда врёт на 1мс - не ошибка? А что же тогда ошибка? Можете дать определение?
И, да, таже самая ошибка была у гивера, как я уже говорил.
согласен. Просто имел в виду, что это такая очевидная вещь, что может быть просто опечаткой... Но ответ ТС показывает. что для него - не очевидная.
Пока нет, потому что в МК иначе чем в прикладных программах
Я тут в соседней теме не мог собрать long из байт, потому что забыл поставить преобразование. Тоже у гивера спросил как это делается?
ну вы же там ответ получили? и никто вас не троллил.
А здесь вас троллят, потому что ведетесь. Реагируйте как взрослый. а не как 15-летний подросток
Кстати, тогда гиверу на это тоже Владимир указал (см. #3).
Я тут в соседней теме не мог собрать long из байт, потому что забыл поставить преобразование. Тоже у гивера спросил как это делается?
ну вы же там ответ получили? и никто вас не троллил.
А здесь вас троллят, потому что ведетесь. Реагируйте как взрослый. а не как 15-летний подросток
Я никогда не сидел на форумах, вживую все проиходит иначе
Кстати, тогда гиверу на это тоже Владимир указал (см. #3).
И за это спасибо. Надеюсь получить советы по поводу других идей
А какие, кстати, у Вас другие идеи? Наливайте :)
Да что вы на меня напали то?
Ну, если ты считаешь. что я на тебя напал, тем что на ошибку указал, то извини. Больше не буду. Кстати, и реация на гивера похожая :)
Нет, продолжайте. Вы даете очень дельные советы
А какие, кстати, у Вас другие идеи? Наливайте :)
А этой же теме или другой? У меня есть реализация класса настроект в EEPROM (надеюсь не как у гивера). Основной функционал выполняет, но хочется сделать лучше
А этой же теме или другой? У меня есть реализация класса настроект в EEPROM (надеюсь не как у гивера). Основной функционал выполняет, но хочется сделать лучше
думаю, лучше в этой.
если обсуждение пойдет не так - проще будет одну ветку чистить, а не две :)
если обсуждение пойдет не так - проще будет одну ветку чистить, а не две :)
:-)))
Ложи своими классами прямо здесь.
#define minutes(x) (x*60000ul) #define seconds(x) (x*1000ul) enum params { is_empty = 0, pc_shutdown_timeout, batt_critical }; class Settings { public: Settings(); void setParam(uint par, ul val); ul getParam(params par); void resetSettings(); private: void initDefault(); }; Settings::Settings() { bool isEmpty = getParam(is_empty); if (isEmpty) initDefault(); } void Settings::setParam(uint par, ul val) { #ifdef DEBUG Serial.println("EEPROM write val: " + String(val)); #endif const int addr = par * 4; byte value[4]; value[0] = val & 0xFF; value[1] = (val >> 8) & 0xFF; value[2] = (val >> 16) & 0xFF; value[3] = (val >> 24) & 0xFF; for (int i = 0; i < 4; i++) { EEPROM[addr + i] = value[i]; #ifdef DEBUG Serial.println("Addr: " + String(addr + i) + " byte: " + String(value[i])); #endif } } ul Settings::getParam(params par) { const int addr = par * 4; const ul val = (long)EEPROM.read(addr) | (long)EEPROM.read(addr + 1) << 8 | (long)EEPROM.read(addr + 2) << 16 | (long)EEPROM.read(addr + 3) << 24; #ifdef DEBUG char str[20]; Serial.println("EEPROM read addr: " + String(addr / 4) + " val: " + val); #endif return val; } void Settings::resetSettings() { setParam(is_empty, 1); initDefault(); Serial.println("Settings reseted"); } void Settings::initDefault() { if (!getParam(is_empty)) return; setParam(pc_shutdown_timeout, seconds(30)); setParam(batt_critical, 112); }Собственно я храню значения от ms до min, конвертируя их в ms. У меня была идея использовать два байта, первое это значение, второй это порядок
я почему-то так и предполагал.
Собственная реализация записи long в ЕЕПРОМ? - уже много лет для этого есть методы EEPOM.put() и get()
я почему-то так и предполагал.
Собственная реализация записи long в ЕЕПРОМ? - уже много лет для этого есть методы EEPOM.put() и get()
Не зря выложил)
Пятница!
уже много лет для этого есть методы EEPOM.put() и get()
put - плохо - он аккуратно через update сделан. То ли дело здесь - шарах сразу прям туда и всё пофиг - для настоящих мужчин!
Звучит так, как будто функциональное программирование сродни антисемитизму.
Гриш, не знаю, кому это адресовано. В равной степени могу принять и на свой счет.
Таки ответ зависит от того, что на голове - ермолка или арафатка...
Я, например, больше к старорежимному склонен.
А чо никто не попенял на кривые макросы, ась?
Топикстартеру: ответь на вопрос - что будет, если использовать эти макросы вот так:
??? Сам догадаешься, где косяк, или прямо указать?
Критикуйте код, а не меня
Код - полная фигня, а автор - молодец!
А чо никто не попенял на кривые макросы, ась?
Наверное, никто не смотрел достаточно внимательно.
А ведь и впрямь, что-то в этом есть от Великого :)
Макросы - зло.
Макросы - зло.
Может и зло, но не большее, чем "великие".
Макросы - зло.
Hе, дида, наоборот - благодаря этому форуму N-ная часть разработчиков будет обкладываться скобками в макросах, считаю - это тот успех, за который боролся Великий Чма - просвещение ;)
А чо никто не попенял на кривые макросы, ась?
Наверное, никто не смотрел достаточно внимательно.
А ведь и впрямь, что-то в этом есть от Великого :)
Я бы даже сказал - не "что-то", а чистейшей воды плагиат.