Ви не увійшли.
Сторінки 1
Знайшов дещо цікаве. Виявляється, для деяких чіпів є емулятори. І в platformio декларується можливість використання:
https://docs.platformio.org/en/latest/plus/debug-tools/simavr.html
У когось вийшло? Бо запустити руками емулятор в одній консолі, gdb в іншій - воно працює, але трохи по красноглазому
Неактивний
У когось вийшло?
Колись трошки грався з самим simavr (не в рамках platformio). Ну, воно працює, вивод на UART показує в консолі, gdb чіпляється як до будь-якої іншої remote target. Але для моніторингу периферії потрібно додавати код в саму фірмварь.
Неактивний
https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json же ж. Без ніяких хитрощів.
Є підозра що емулятор цього не покаже. Якщо косячаться логічні рівні на виході - значить там всередині щось комутується неправильно. Може чіпи палені. До речі, в якійсь з ревізій цих tiny85 щось було з eeprom, саме з записом в 0 адресу, і були рекомендації від аксакалів починати запис з 10.. Можливо, автор цього коду щось таке чув, і в нього використовується put(10). І put(0) теж
Неактивний
https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json же ж. Без ніяких хитрощів.
А, в 1.7.5 EEPROM уже є в поставці. Тільки IDE навіть з verbose mode не показує як її компілює, тільки Compiling library "EEPROM".
Але автор писав, що доставляв ще якусь додатково. От якщо ліби з однаковими іменами є і в packages/digistump/hardware/avr/1.7.5/libraries/, і в ~/Arduino/libraries, яку з них воно бере? Це тільки з лога збірки можна побачити:
Alternatives for EEPROM.h: [EEPROM@2.0]
ResolveLibrary(EEPROM.h)
-> candidates: [EEPROM@2.0]
...
Using library EEPROM at version 2.0 in folder: ...
І який там Clock обрано в меню, теж може впливати.
Є підозра що емулятор цього не покаже. Якщо косячаться логічні рівні на виході - значить там всередині щось комутується неправильно.
Якщо апаратний баг, то так. Але в datasheet errata нічого такого нема. Тільки для ревізії A "EEPROM read may fail at low supply voltage / low clock frequency".
А у випадку програмного багу як мінімум стан регістрів можна перевірити. Взагалі можна було б і просто асемблерний код проаналізувати, але мені за то не заплатять
До речі, в якійсь з ревізій цих tiny85 щось було з eeprom, саме з записом в 0 адресу, і були рекомендації від аксакалів починати запис з 10..
Наскільки знаю, то якщо бутлоадер теж використовує EEPROM для збереження своїх даних. Micronucleus такого не робить наче.
Неактивний
Тільки IDE навіть з verbose mode не показує як її компілює, тільки Compiling library "EEPROM".
Тому що в EEPROM.h нічого цікавого немає. Це враппер до avr/eeprom.h, а реалізація роботи з eeprom - упсь, в бінарнику .arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/lib/avr25/libattiny85.a . При використанні функцій з eeprom.h все так само ламається.
Взагалі можна було б і просто асемблерний код проаналізувати
Настоящих буйних мало
Остання редакція jokeR (2025-06-12 14:20:50)
Неактивний
Тому що в EEPROM.h нічого цікавого немає.
Тепер я зрозумів, чому IDE не показало команди компіляції. Бо ця EEPROM - header only.
Це враппер до avr/eeprom.h, а реалізація роботи з eeprom - упсь, в бінарнику.
Реалізація в avr-libc: libc/misc/eewr_byte.S
Вона в ісходніку виглядає страшно, бо там реалізація для всіх платформ. А в згенерованому коді для attiny85 досить проста:
0000096c <eeprom_write_byte>:
96c: 26 2f mov r18, r22
0000096e <eeprom_write_r18>:
96e: e1 99 sbic 0x1c, 1 ; 28
970: fe cf rjmp .-4 ; 0x96e <eeprom_write_r18>
972: 1c ba out 0x1c, r1 ; 28
974: 9f bb out 0x1f, r25 ; 31
976: 8e bb out 0x1e, r24 ; 30
978: 2d bb out 0x1d, r18 ; 29
97a: 0f b6 in r0, 0x3f ; 63
97c: f8 94 cli
97e: e2 9a sbi 0x1c, 2 ; 28
980: e1 9a sbi 0x1c, 1 ; 28
982: 0f be out 0x3f, r0 ; 63
984: 01 96 adiw r24, 0x01 ; 1
986: 08 95 ret
При використанні функцій з eeprom.h все так само ламається.
А, не знав, що з libc'шними функціями той глюк теж проявляється.
Тоді може це просто сайд-ефект через таймінги, і відповідний delay() замість eeprom_write_byte() так само впливатиме.
А збірка в platformio працює тільки тому що інша версія avr-gcc
Неактивний
Бачу, цей simavr ще навіть ворушиться, є недавні комміти. Але якось на рівні аматорської поробки. Вивод стану пінів у VCD працює, але тільки з GPIO портів. Зміна стану по Compare Match Output, наприклад, ніяк не відображається. Інші альтернативні функції пінів не перевіряв. Схоже, що це "by design". Якщо так, то толку з такого емулятора небагато.
Доречі, є і ще один форк.
Неактивний
Походу є AVR (Atmel) studio, і є саморобки різного стану готовності. Мабуть треба підняти піратський прапор Бо купляти того монстра щоб пару разів на рік запустити якось не того.
Походу є AVR (Atmel) studio
Воно ж уже Microchip Studio, і вже не рекомендується для нових розробок Рекомендують користуватись MPLAB X IDE.
Мабуть треба підняти піратський прапор
Бо купляти того монстра щоб пару разів на рік запустити якось не того.
Хіба воно платне в базовій версії? Щось не знайшов, скільки коштує ліцензія.
Мені не подобається, що воно проприєтарне. Microchip Studio взагалі наче тільки під вінду. MPLAB X IDE встановлювати їхнім інсталлером якось не комільфо. А пакет з неофіційного репозиторію хоче Java8 JDK, коли на дворі вже Java24.
Та й не факт, що воно не таке ж глючне як і саморобки.
Неактивний
Та якось складно у них.. Цей mplab комплектується toolchain ом під pic, для AVR треба якось доставляти.. Після platformio/Arduino IDE наче в 2000-ні вернувся
Сторінки 1