Ви не увійшли.
В протеусі аналогічно
конструкції типу
Присвюювання змінним типу boolean HIGH або LOW теж якось око ріже. та й
(millis() > (durationLongPressMode + btnModeNoLongPressed)) and (LongPressMode == HIGH)
не зовсім з тієї опери
jokeer пише:проблема, схоже, була в кривій реалізації eeprom
Не схоже. Прибрав eeprom взагалі. Картина маслом залишилась та сама
https://forum.arduino.ua/img/members/2306/oil4.jpg
Ядро офіційне digispark-івське ще з часів його підтримки. IDE 1.8.19
Це підблимування не в такт бачу на світлодіоді, але тільки в режимі надто довгого утримання кнопки. Мене воно не бентежить, і не бентежило. Якось не звертав на нього увагу.
Цей проект квові вип'є більше, чим віллє мастила на цеп.
проблема, схоже, була в кривій реалізації eeprom
Не схоже. Прибрав eeprom взагалі. Картина маслом залишилась та сама
Ядро офіційне digispark-івське ще з часів його підтримки. IDE 1.8.19
Ну так і так millis переповниться через 50 днів.
millis не "переповнюється", для unsigned типів застосовується модулярна арифметика.
Чи для unsigned переповнення при відніманні не undefined behavior?
Для unsigned і при додаванні ніякого undefined behavior нема.
Просто порівнювати потрібно інтервали, а не точки часу.
і взагалі я б туди rgb led вкрутив. або хоча б 2-колірний . Було б красиво
>> А якщо вирізати частину, яка рахує кількість спрацювань насосу, це зробить стабільним пристрій?
Та хтозна. А в чому нестабільність?
>> if (millis() - btnModeNoVeryLongPressed > durationVeryLongPressMode)
Ну так і так millis переповниться через 50 днів. Чи для unsigned переповнення при відніманні не undefined behavior?
А якщо вирізати частину, яка рахує кількість спрацювань насосу, це зробить стабільним пристрій?
Так як точної причини глюку ми не знаєм, то перевірити це може тільки той, у кого є пристрій.
Які є кращі ідеї? Є якийсь софтовий таймер, чи підпирати перевірками?
if (millis() - btnModeNoVeryLongPressed > durationVeryLongPressMode)
Вчора так і не дістався до цієї грачки.
А якщо вирізати частину, яка рахує кількість спрацювань насосу, це зробить стабільним пристрій?
Якщо так, то я й сідушку підніму, щоб глянути, що там з мастилом.
Одне б що залишити, так це пам'ять вибраного редиму.
Це б не вадило.
Якщо можна, то виріжте той шмат.
Дякую.
@л@!
Не відтворилось.
Я здивований.
Тут ще можливо, що в мене якось в board urls було і digistump 1.6.7 (офіціально протухший), і 1.7.5 (неофіціально свіжий), різні репозиторіі, однакові назви.. хз.. Видалив всі, встановив тільки 1.7.5.. не відтворюється. Може @stas_amp це ще не виправив, і в нього ще все зламане
на 50-й день роботи
Для мотоцикла не думаю що це сильно актуально Які є кращі ідеї? Є якийсь софтовий таймер, чи підпирати перевірками?
Доречі, в програмі є й інші баги, не повʼязані з сигналом на піні. Наприклад, конструкції типу
if (millis() > (durationVeryLongPressMode + btnModeNoVeryLongPressed))
на граничних значеннях (на 50-й день роботи ) працюватимуть неправильно.
@JokeR, вам же наче вдавалось відтворити баг? А можете зашарити .lst-файл прошивки, на якій баг стабільно відтворюється? IDE наче створює .lst при експорті бінарика і кладе його поряд.
Там цікава проблема, схоже, була в кривій реалізації eeprom в саме цьому BSP саме для Arduino IDE. При ініціалізації eeprom щось писалося не в ті регістри, і виходи переходили в дивний стан, коли логічні рівні якось міксуються як аналогові сигнали.
Ну, якщо лампочка буде трохи блимати, думаю це допустимо може так і задумано.
Вставлю і я свої 3 копійки картинки з логаналізатору
Як видно - ШИМ з частотою 5 кГц з’являється лише на РВ2 (LEDMode) при довгому натисканні кнопки.
Спробуйте тимчасово вимкнути в коді (закоментувати) все що стосується індикації
Якщо у Вас все це проінстальвано, й налаштовано, чи можна Вас попросити, скомпілювати прошивку, для проби?
Та льогко: DigiSpark_Oiler_Moto_hex.zip