EEPROM - что не так с записью
- Войдите на сайт для отправки комментариев
Вс, 26/05/2019 - 02:46
Arduino Nano 328
Простой код -читаем с ком порта и пытаемся записать в EEPROM
#include <Arduino.h> #include <EEPROM.h> String cmd=""; void setup() { Serial.begin(9600); } void loop() { while(Serial.available()){ char c=Serial.read(); delay(100); if(c!='\r' && c!='\n') //если не конец строки, то читаем дальше { Serial.print(c); //эхо cmd=cmd+c; continue; } cmd.trim(); cmd.toLowerCase(); if(cmd.length()==0) continue; //обрабатываем команду int pos=cmd.indexOf(" "); if(pos>0) { uint16_t addr=cmd.substring(0,pos).toInt(); if(cmd.substring(pos+1).indexOf(".")>0) { double val=cmd.substring(pos+1).toDouble(); EEPROM.put(addr,val); } else { uint8_t val=cmd.substring(pos+1).toInt(); EEPROM.update(addr,val); } } else { Serial.println(cmd); } //Serial.println(); cmd=""; } delay(100); }
Непонятный момент: при таком коде, после любой команды на запись ( например 100 100) - аппарат зависает и не реагирует.
Но если раскомментировать строку //Serial.println();, то все работает нормально, как положено.
Возможно, это известно и описано, но почему это так?
А ты вместо Serial.println() попробовай delay(4) поставить
Я дико извиняюсь, что влез в чужую тему у меня тоже вопрос по еепрому
данная конструкция заработала на тестовом контроллере , перенеся код в рабочее устройство , почему то перестал записываться 0 в память, 1 записывается без проблем , подскажите в чём может быть проблема .
void
Silence ();
вызывать функцию надо без void
Ну да спасибо, проглядел, изначально функции не было ... Копипаст и спешка подвели .