Ну нет, у меня только пока готовые платы ардуино, в основном нано…
Хотя и платы развожу и корпуса во фьюжене рисую для своих поделок… китайцы потом мне это все присылают)))
скорость определяется загрузчиком
Прошил батником. Hex’ом без загрузчика (если я правильно понял там два hex’а выгружаются, тот который with_bootloader это с загрузчиком, второй без?) Затем второй раз попробовал… и второй раз тоже загрузилось все тем же батником (т.е. с теме же ключами, в частности -C arduino)
Доволен, загрузка прошла менее чем за минуту. По сравнению тот же файл заливал с Win 10 x64 через Arduino IDE (и 1.8.х и 2.2.0) выходило примерно минут по 20 на эту операцию.
ЗЫЖ Вышла 2.3.0 (на рабочем компе обновил)
Оффтоп: Сегодня только заметил в меню Скетч пункт “Оптимизировать для отладки” - что это?
Подскажите, где это подсмотреть? В ТЕМП (когда компилируешь или заливаешь ИДЕ там создает кучу файлов) вроде все файлы пересмотрел… не увидел. В рабочей папке скетча, понятное дело, этой инфы нет… Или где-то в недрах самой IDE? Но что-то мне кажется, что я в темпе не все просмотрел… Когда-то давно ведь видел эту инфу, а сейчас найти не могу(((
Надо в настройках IDE включить подробный вывод информации о загрузке и тогда после данных про размер скетча появится строка для запуска загрузки.
На удивление было не так уж много (<10) варнингов… Основную часть их уже исправил, осталось пару штук, но тут интересный момент я не знаю как их исправить (т.н. убрать)
E:\ELECTRONICS\MYPROJECT\MK\ARDUINO\SKETCHS!PUMP\WaterSystem\Device.h: In function ‘void LoadFromEEPROM()’:
E:\ELECTRONICS\MYPROJECT\MK\ARDUINO\SKETCHS!PUMP\WaterSystem\Device.h:154:11: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
if (vol < MIN_TEMP || vol > MAX_TEMP) Heat.TOn = 30;
E:\ELECTRONICS\MYPROJECT\MK\ARDUINO\SKETCHS!PUMP\WaterSystem\Device.h:156:11: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
if (vol < MIN_TEMP || vol > MAX_TEMP) Heat.TOff = 55;
в MIN_TEMP реально ноль записано.
#define MIN_TEMP 0 //Минимальная температура
Если туда записать 10, то варнинги пропадают… Вообще думаю это не критично, но с учетом, что проект из 1700 строк (пересчитал), без них написать… вот вам и Новичек
У vol наверное беззнаковый тип ???
Да, uint16_t vol;
Тут именно в нуле дело. Компилятор видит что в дефайне (#define MIN_TEMP 0) в данный момент ноль и поэтому выдает предупреждение…
В отличии от вас, компилятор учил в школе математику и видит что БЕЗЗНАКОВЫЙ ТИП не может быть МЕНЬШЕ 0 !
Это я понимаю и ему (компилятору) верю
но вопрос как это исправить, что бы и ноль остался, и проверка на “меньше” (вдруг в дальнейшем в #define MIN_TEMP будет не ноль а больше 0) тоже осталась… и чтоб компилятор не выдавал предупреждение
Сменить тип переменной ! Вы же не температуру на солнце измеряете ! Хотя и на солнце нет таких температур, которые не уместятся в int16_t !!!
Про отрицательные я вообще уже не говорю …
if (vol <= MIN_TEMP || vol >= MAX_TEMP)
Не, так не пойдет. Тогда ноль превратится в 30
У меня температура умноженная на 10… Но это к вопросу не относится.
ничё не понял, но было интересно
Вот вся функция, где эта переменная:
void LoadFromEEPROM() {
uint16_t vol = EEPROM.get(10, Pump[0].PRawOn);
if (vol < MIN_RAWSENS || vol > MAX_RAWSENS) Pump[0].PRawOn = Bar10ToRaw(15);
vol = EEPROM.get(12, Pump[0].PRawOff);
if (vol < MIN_RAWSENS || vol > MAX_RAWSENS) Pump[0].PRawOff = Bar10ToRaw(32);
vol = EEPROM.get(14, Pump[0].PLowRaw);
if (vol < Bar10ToRaw(5) || vol > Bar10ToRaw(MAX_LOWBAR)) Pump[0].PLowRaw = Bar10ToRaw(14);
vol = EEPROM.get(16, Pump[0].PCritLowRaw);
if (vol < Bar10ToRaw(2) || vol > Bar10ToRaw(MAX_CRITLOWBAR)) Pump[0].PCritLowRaw = Bar10ToRaw(12);
vol = EEPROM.get(18, Pump[1].PRawOn);
if (vol < MIN_RAWSENS || vol > MAX_RAWSENS) Pump[1].PRawOn = Bar10ToRaw(15);
vol = EEPROM.get(20, Pump[1].PRawOff);
if (vol < MIN_RAWSENS || vol > MAX_RAWSENS) Pump[1].PRawOff = Bar10ToRaw(32);
vol = EEPROM.get(22, Pump[1].PLowRaw);
if (vol < Bar10ToRaw(5) || vol > Bar10ToRaw(MAX_LOWBAR)) Pump[1].PLowRaw = Bar10ToRaw(14);
vol = EEPROM.get(24, Pump[1].PCritLowRaw);
if (vol < Bar10ToRaw(2) || vol > Bar10ToRaw(MAX_CRITLOWBAR)) Pump[1].PCritLowRaw = Bar10ToRaw(12);
vol = EEPROM.get(26, Pump[0].TryTime);
if (vol < 5 || vol > 60) Pump[0].TryTime = 15;
vol = EEPROM.get(27, Pump[1].TryTime);
if (vol < 5 || vol > 60) Pump[1].TryTime = 15;
EEPROM.get(28, Heat.Enable);
vol = EEPROM.get(29, Heat.TOn);
if (vol < MIN_TEMP || vol > MAX_TEMP) Heat.TOn = 30;
vol = EEPROM.get(30, Heat.TOff);
if (vol < MIN_TEMP || vol > MAX_TEMP) Heat.TOff = 55;
EEPROM.get(31, SecondCorMs);
if (SecondCorMs < MIN_SECOND_COR || SecondCorMs > MAX_SECOND_COR) SecondCorMs = 0;
}
У меня все значения положительные. Поэтому и выбрал беззнаковый тип.
Ладно, пускай будет так. Это не критично в данном случае, хоть и не хорошо, согласен. В принципе, действительно, ради этих двух варнингов можно сменить тип переменной vol signed…
В прочем эту функцию тоже нужно немного “причесать” будет… может и сменю тип…
Смотрите сейчас у меня:
#define MIN_TEMP 0
if (vol < MIN_TEMP || vol > MAX_TEMP) Heat.TOn = 30;
Если в vol считается 0 (т.е. vol = 0) то он так им и останется и в Heat.TOn будет 0, в Вашем случае в Heat.TOn при нуле в vol будет 30
Не стоит нам свою новичковую логику рассказывать … животы болят от смеха !!!
это ты сам накосячил, или установи минимальную (MIN_TEMP) в 1
Как вариант, но в принципе Komandir прав, не стоит мне мою логику рассказывать… ))))))))