Ви не увійшли.
так, я б викинув analogread, для кнопки це лишнє. side effect дивний кнчн.
ну я навіть вийняв з коробки плату з Tiny85 і прошив вашу програму. Нічого такого з рівнем 1.2в не спостерігаю. На виході P1 - чіткий 0. На P2 - кілька імпульсів із звичайними рівнями. Правда, у вас там входи без підтяжок, хтозна що вони ловлять з світового ефіру..
Активний
ну я навіть вийняв з коробки плату з Tiny85 і прошив вашу програму. Нічого такого з рівнем 1.2в не спостерігаю. На виході P1 - чіткий 0. На P2 - кілька імпульсів із звичайними рівнями. Правда, у вас там входи без підтяжок, хтозна що вони ловлять з світового ефіру..
Підтяжки всі є, через 5.1к
Буває, що пара, або до десяти імпульсів проходить нормально, а потім починаються проблеми.
Якщо є генератор, навісьте не вхід VSS, і подивіться на вихід PB1.
Сьогодні грався цілий вечір. Маю там на виході 5.2кГц та 23 відсотки ШІМ
Змінив виходи на PB2 та РВ4. Ситуація без змін.
Неактивний
@stas_amp, доречі, який board package використовуєте для своєї плати? Який URL у package index json?
Не зовсім зрозумів питання.
Де можна подивитися те, що Ви запитуєте?
Стосовно системи та програми, то він 10/64, версія ардуіно - остання з сайту. Бібліотеки і все що потрібно для роботи - встановлено 5 днів тому.
Неактивний
Не зовсім зрозумів питання.
Ще одне припущення щодо дивної поведінки - що ви збираєте прошивку під якусь іншу плату чи контролер, і воно якимось чином успішно прошивається.
Наприклад, щоб зібрати ваш скетч в platform.io, я обираю плату "digispark-tiny", при збірці воно підтягує пакунок framework-arduino-avr-digistump і компілює з опціями, поміж інших, "-mmcu=attiny85 -DARDUINO_AVR_DIGISPARK -DF_CPU=16500000L".
З якими опціями компілюється прошивка у вас?
версія ардуіно - остання з сайту.
На сайті дві активні версії IDE: Arduino IDE 2.3.6 та Arduino PLC IDE 1.0.8. Як вгадати, яку з них ви поставили?
В репозиторії мого дистрибутиву Arduino IDE версії 2.3.6. Воно знає тільки ардуінівські плати, про DigiSpark нічого не знає.
Віндова збірка "з сайту" підтримує плати DigiSpark "з коробки"? Чи ви додавали board package вручну?
Я пробував додавати https://github.com/ArminJo/DigistumpArduino/blob/master/package_digistump_index.json (який ставиться для platform.io), також http://drazzy.com/package_drazzy.com_index.json. Але IDE все одно не бачить плат DigiSpark. Схоже, це якийсь відомий баг IDE.
Тому й питаю, який пакунок плат ви ставили, щоб зібрати скетч під DigiSpark Attiny85?
Де можна подивитися те, що Ви запитуєте?
File -> Preferences -> Settings -> Additional boards manager URLs. Також, яка плата обрана в Tools -> Board (не тільки назва, а повний шлях в тому меню), Tools -> Processor та інші пункти з опціями збірки.
Також не завадило би в File -> Preferences -> Settings увімкнути "Show verbose output during: compile", зібрати скетч "з нуля" і показати лог збірки.
Неактивний
stas_amp пише:Не зовсім зрозумів питання.
Ще одне припущення щодо дивної поведінки - що ви збираєте прошивку під якусь іншу плату чи контролер, і воно якимось чином успішно прошивається.
Наприклад, щоб зібрати ваш скетч в platform.io, я обираю плату "digispark-tiny", при збірці воно підтягує пакунок framework-arduino-avr-digistump і компілює з опціями, поміж інших, "-mmcu=attiny85 -DARDUINO_AVR_DIGISPARK -DF_CPU=16500000L".
З якими опціями компілюється прошивка у вас?stas_amp пише:версія ардуіно - остання з сайту.
На сайті дві активні версії IDE: Arduino IDE 2.3.6 та Arduino PLC IDE 1.0.8. Як вгадати, яку з них ви поставили?
В репозиторії мого дистрибутиву Arduino IDE версії 2.3.6. Воно знає тільки ардуінівські плати, про DigiSpark нічого не знає.
Віндова збірка "з сайту" підтримує плати DigiSpark "з коробки"? Чи ви додавали board package вручну?
Я пробував додавати https://github.com/ArminJo/DigistumpArduino/blob/master/package_digistump_index.json (який ставиться для platform.io), також http://drazzy.com/package_drazzy.com_index.json. Але IDE все одно не бачить плат DigiSpark. Схоже, це якийсь відомий баг IDE.
Тому й питаю, який пакунок плат ви ставили, щоб зібрати скетч під DigiSpark Attiny85?Де можна подивитися те, що Ви запитуєте?
File -> Preferences -> Settings -> Additional boards manager URLs. Також, яка плата обрана в Tools -> Board (не тільки назва, а повний шлях в тому меню), Tools -> Processor та інші пункти з опціями збірки.
Також не завадило би в File -> Preferences -> Settings увімкнути "Show verbose output during: compile", зібрати скетч "з нуля" і показати лог збірки.
Версія точно 2.3.6
Щось вручну доставляв
Ввечері гляну все, що Ви вказали.
Дякую за грунтовну відповідь.
Неактивний
File -> Preferences -> Settings -> Additional boards manager URLs. - тут маю це
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
не можу прикріпити картинку
Неактивний
Таке?
Ну, залив ваш код, тільки замість
const int LEDMode = 2; // LED индикации режима работы смазчика, 1 = TRUE;
зробив
const int LEDMode = LED_BUILTIN;
Щоб було видно без осцилографа.
І що ми бачимо на нозі P1?
3.3V, з викидами до 4.5В (чи 4.5В, з провалами на 1.2В). Цікаво Провалів по живленню немає.
Хм. Зробив так (нумерація цифрових і аналогових портів в цій платі якась незвичайна, але 3 - удачна цифра Повинно бути еквівалентно по логіці роботи.
if (/* analogRead(btnMode) < 512 */ digitalRead(btnMode) == 0) { // Нажата кн.Режим смазки
Бачимо таке:
Що я можу сказати? З виводом у порт D1 у вас щось накручено, digitalwrite викликається раз 10.. Але дивний спецефект з 1 картинки це не пояснює.
Це цікавіше. Підтягнув входи, щоб не теліпались.
pinMode(inVSS, INPUT_PULLUP);
pinMode(btnMode, INPUT_PULLUP);
Побачив ваші імпульси в 1 В
Остання редакція jokeR (Вчора 20:02:14)
Активний
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
Як мінімум для плат "Digispark (Default - 16.5mhz)" та "Digispark (16mhz - No USB)" опції компіляції наче правильні.
tiny core 1.6.7 (що в Arduino IDE) старіший за dtiny 1.7.2 (що дефолтовий в platform.io). Але суттєвих відмінностей, які могли би впливати, поки не бачу.
В dtiny 1.7.2 є деякі виправлення, повʼязані з калібровкою тактового генератора. Але не схоже, що це може бути якось повʼязано з вашою проблемою.
Якщо у вас вибрано "Digispark (Default - 16.5mhz)", для експерименту спробуйте "Digispark (16mhz - No USB)". USB ж у вас в програмі ніяк не використовується.
Нажаль, не знайшов у себе attiny85 чи 45, щоб перевірити безпосередньо на залізі. Наче колись купляв, десь були, а нема
не можу прикріпити картинку
Під полем редагування є "Завантаження". Заходите туди, завантажуєте картинку. Клікаєте на неї, копіюєте її адресу, вставляєте в тег [img]<адреса тут>[/img].
Ще б здогадатись, звідки крім 1.2 вольта ще ті 5.2 кГц.
Не дуже розумію, чому стан кнопки зчитується як аналоговий сигнал. Там звичайна механічна кнопка, чи якась особлива? Спробуйте для експерименту
if (analogRead(btnMode) < 512) {
замінити на
if (digitalRead(btnMode) == LOW) {
Неактивний
Також підозріле місце: digistump-avr/cores/tiny/core_build_options.h:138
Micronucleus bootloader там часом не залишає таймери в якомусь PWM-режимі? (UPD: Та не схоже)
Остання редакція dimich (Вчора 20:52:30)
Неактивний
Хм, як воно взагалі компілиться, якщо в packages/digistump/hardware/avr/1.6.7/libraries/ нема EEPROM. Ви її доставляли вручну, чи у вас вона є в самому package, а це у мене чомусь нема?
Неактивний
Та наче те що рекомендував автор Надписи з меню є в тому json. Але я вже грався в цю плату, і її підтримка є в attinycore. Так що складно сказати, в що і як воно білдиться. Можу лог показати
Але сайд ефекти дуже дивні.
Хм, як воно взагалі компілиться, якщо в packages/digistump/hardware/avr/1.6.7/libraries/ нема EEPROM. Ви її доставляли вручну, чи у вас вона є в самому package, а це у мене чомусь нема?
Бібліотеку еепром доставляв в ручну.
Неактивний
Можу лог показати
Будь ласка, якщо не складно. У мене один раз скомпілилось. Потім перезапускав IDE - перестало, каже, нема EEPROM.h. І дійсно, в packages/digistump такого нема. Крім дефолтної arduino та цієї digistump (з https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json) ніяких інших пакунків не ставив. Якась китайська чудасія з цим IDE.
Але сайд ефекти дуже дивні.
Ну, чудес не буває. Але причина може бути так глибоко, що у нас може не вистачити засобів до неї докопатись. Наприклад, який-небудь апаратний баг МК, який проявляється тільки при певних хитрих умовах.
Неактивний
FQBN: digistump:avr:digispark-tiny:clock=clock165,burnmode=install
Using board 'digispark-tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using core 'tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using library EEPROM at version 2.0 in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5/libraries/EEPROM
Ага, походу я вас обманув. Це звідси: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json
Ага, версію 1.6.7 можна вибрати в Board Manager. Не зовсім очевидно. Але все одно дивний глюк присутній.
Остання редакція jokeR (Вчора 22:14:39)
Активний
stas_amp пише:https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
Якщо у вас вибрано "Digispark (Default - 16.5mhz)", для експерименту спробуйте "Digispark (16mhz - No USB)". USB ж у вас в програмі ніяк не використовується.
stas_amp пише:не можу прикріпити картинку
Під полем редагування є "Завантаження". Заходите туди, завантажуєте картинку. Клікаєте на неї, копіюєте її адресу, вставляєте в тег [img]<адреса тут>[/img].
Ще б здогадатись, звідки крім 1.2 вольта ще ті 5.2 кГц.
Не дуже розумію, чому стан кнопки зчитується як аналоговий сигнал. Там звичайна механічна кнопка, чи якась особлива? Спробуйте для експерименту
if (analogRead(btnMode) < 512) {
замінити на
if (digitalRead(btnMode) == LOW) {
Кнопка звичайна, механічна.
Спробував, що Ви рекомендували.
Нажаль, не допомогло.
Неактивний
https://forum.arduino.ua/img/members/3983/2025-06-10_19-06.png
Таке?
Ну, залив ваш код, тільки замістьconst int LEDMode = 2; // LED индикации режима работы смазчика, 1 = TRUE;
зробив
const int LEDMode = LED_BUILTIN;
Щоб було видно без осцилографа.
І що ми бачимо на нозі P1?
https://forum.arduino.ua/img/members/3983/photo_2025-06-10_19-24-38.jpg
3.3V, з викидами до 4.5В (чи 4.5В, з провалами на 1.2В). Цікаво
Провалів по живленню немає.
Хм. Зробив так (нумерація цифрових і аналогових портів в цій платі якась незвичайна, але 3 - удачна цифра
Повинно бути еквівалентно по логіці роботи.
if (/* analogRead(btnMode) < 512 */ digitalRead(btnMode) == 0) { // Нажата кн.Режим смазки
Бачимо таке:
https://forum.arduino.ua/img/members/3983/photo_2025-06-10_19-42-44.jpg
Що я можу сказати? З виводом у порт D1 у вас щось накручено, digitalwrite викликається раз 10.. Але дивний спецефект з 1 картинки це не пояснює.
Це цікавіше. Підтягнув входи, щоб не теліпались.
pinMode(inVSS, INPUT_PULLUP); pinMode(btnMode, INPUT_PULLUP);
Побачив ваші імпульси в 1 В
https://forum.arduino.ua/img/members/3983/photo_2025-06-10_20-01-01.jpg
Перш за все, дякую Вам, за Ваші зусилля допомогти, що зібрали схему.
З осцилогам видно, що сигнал на виході все одно PWM, а не стабільні 5 Вольт.
Ви не той вихід контролювали. Нам треба вихід на мотор PB1, а не індикатор режиму подачі масла PB2.
Остання редакція stas_amp (Вчора 22:43:02)
Неактивний
Так, сорян, const int LEDMode = LED_BUILTIN; - так не можна. LED_BUILTIN це PB1 і воно якось дивно взаємодіє з вашим кодом. Вернув як було - упсь, на PB1 чоткий 0.
Ну, що сказати.. По перше - переїдьте на версію 1.7.5, щоб все було однаково.
По друге - входи вільно теліпаються, хз що вони ловлять у вас і що у мене. Їх було б непогано підтягнути чи до 0 чи до VCC - хз як правильно за вашою схемою.
Активний
входи вільно теліпаються, хз що вони ловлять у вас і що у мене. Їх було б непогано підтягнути чи до 0 чи до VCC - хз як правильно за вашою схемою.
Автор же писав, що є підтяжки по 5.1к. Мені тільки не подобається, що підтяжка на PB3, бо там же ще через 47 Ом стабілітрон в землю. А свої 3.6В стабілітрон тримає тільки при відносно великих струмах, десь 5 мА. При малих струмах через підтяжку на ньому падає десь 3 В, або й менше. Мабуть, тому там і analogRead(). UPD: хоча "analogRead() < 512" це майже те ж саме, що "digitalRead() == LOW", тільки без гистерезису.
Остання редакція dimich (Сьогодні 07:10:40)
Неактивний
Всім доброго ранку.
Стосовно підтяжок. Так, вони були через 5.1к, замінив на 1к. Нічого не змінилося.
Вчора грався всякими бібліотеками, понавстановлював все, що можна було стосовно Attiny 85.
Сьогодні запустив ардуіно іде, і в виборі плат, побачив ось таке, як на фото.
Записав через цей варіант. І картина одразу змінилася!
Частота стала 16кГц, цикл 70 відсотків.
Неактивний