Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Kino
2026-03-20 01:25:03
dimich пише:
Kino пише:

причем младший нибл, интересненько.

А саме 3-й біт, 0x08.

Именно.

dimich
2026-03-20 00:52:17
Kino пише:

причем младший нибл, интересненько.

А саме 3-й біт, 0x08.

Kino
2026-03-20 00:15:33

причем младший нибл, интересненько.

dimich
2026-03-19 23:53:12

Флеш посипалась, усьо.
Воно-то може полежати і після стирання ще почати програмуватись, але я б на це не розраховував і цьому чіпу не довіряв.

Z1M
2026-03-19 22:46:07

Поставив всі галочки і ось така помилка. Без цих галочок просто прошивало. На новому чіпі такого немає

Warning: flash verification mismatch
  device 0x09 != input 0x01 at addr 0x0513 (error)
  device 0xe8 != input 0xe0 at addr 0x0e93 (error)
  device 0xc8 != input 0xc0 at addr 0x1693 (error)
  device 0xf8 != input 0xf0 at addr 0x1753 (error)
  device 0x9d != input 0x95 at addr 0x1ad3 (error)
Error: flash verification mismatch

Avrdude done.  Thank you.
Не удалось программирование: ошибка при загрузке: exit status 1

dimich
2026-03-19 17:38:10
Z1M пише:

а от з флеш щось не зрозуміле

Зітріть флешку, зчитайте її. Якщо там не 8 кілобайт FF'ок, то хана флешці. Якщо після стирання все ок, запишіть 8 кілобайт нулів, зчитайте знову. Якщо зчитуються не всі нулі, то теж хана.
Хоча якщо комірки "розхитані", то буває зразу читається нормально, а через тиждень чи місяць уже сиплеться.

Z1M
2026-03-19 17:16:37

чіп не з аліка. беру на космодромі або вороні. в эпром пишеться все нормально. а от з флеш щось не зрозуміле

Kino
2026-03-19 15:26:09
dimich пише:

Буває, особливо якщо чіп з аліекспреса smile

А, ну это да. Можно и в подвалах подола чипы изготавливать.

dimich пише:

Спостерігав дещо схожі симптоми (з флешки читається не те що записане) на якомусь із attiny після спроби покрокового виконання в avr-gdb через debugWire. Там gdb перезаписує флеш для кожного брекпоінта, так що не дивно. Вилікувалось за допомогою chip erase. Але це не схоже на випадок у автора.

Ну такого не делал, учитывая что стирание идет страницами, то хрен знает как этот брейкпоинт расчитывается.
А вот оставить в цикле запись в эпром на пару минут, тем самым превысив кол-во записей (~100000) это запросто.

dimich
2026-03-19 15:15:20
Z1M пише:

вручну я вказував не всі змінні, що присутні в розрахунках. інші були реальними.

Якщо у вас, наприклад, було щось типу

float v = readVoltage();
float i = readCurrent();
float r = v / i;

і ви замінили на

float v = readVoltage();
float i = 0.0001;
float r = v / i;

то це може бути зовсім різний код із різною поведінкою при одних і тих же значеннях v та i.

Щоб реалізувати ділення без потенційного UB потрібно знати, які там типи операндів, граничні значення, в яких одиницях величини і т.д.

Взагалі, логіку та обчислення, якщо вони не зовсім елементарні, потрібно відлагоджувати окремо, а не прямо в програмі на залізі.

Kino пише:

Сам по себе чип avr довольно таки тугой, ни разу не слышал чтобы была битая флеш или озу

Буває, особливо якщо чіп з аліекспреса smile

Спостерігав дещо схожі симптоми (з флешки читається не те що записане) на якомусь із attiny після спроби покрокового виконання в avr-gdb через debugWire. Там gdb перезаписує флеш для кожного брекпоінта, так що не дивно. Вилікувалось за допомогою chip erase. Але це не схоже на випадок у автора.

Z1M
2026-03-19 14:12:56

за підсказки в налаштуваннях  дякую, перепровірю

Kino
2026-03-19 14:09:06

Сам по себе чип avr довольно таки тугой, ни разу не слышал чтобы была битая флеш или озу (если конечно не питали завышенным напряжением). Где-то вы у себя перемудрили.
Или не проходит стирание чипа, т.к. на новом вся память забита 0xFF  и любая прошивка заливается без проблем.

Z1M
2026-03-19 13:55:36

вручну я вказував не всі змінні, що присутні в розрахунках. інші були реальними. сенс в цьому думаю є. так як на практиці всі варіанти тієї чи іншої змінної не так легко отримати

Z1M
2026-03-19 13:49:54

якщо це баг програми, то і на новому чіпі мало повторитись.
а враження що щось відбулося і не виправляється. бо на новому чіпі де цього не відбувалося, глюків немає, а код той самий

dimich
2026-03-19 13:26:57
Z1M пише:

вручну присвоював перемінним вольтаж і ампераж і дивився чи правильно рахує.

Присвоювали прямо в тексті програми? Ви ж розумієте, що при діленні на відому під час компіляції константу і при діленні на отримане під час виконання значення результуючий код і поведінка можуть бути зовсім різними? Практичного сенсу в такому тестуванні немає.

Z1M пише:

схоже на запис данних за межами масиву.

Так може у вас і відбувається запис за межі масиву? Це також undefined behavior.
Показуйте код.

Увімкніть в IDE відображення попереджень при компіляції та аплоаді: "Show verbose output during: ✓ compile ✓ upload"
Також увімкніть "Compiler warnings: All".

Z1M пише:

але повторна перепрошивка не допомагала.

Якщо в самій програмі баг, то повторна перепрошивка нічим не допоможе.

Z1M пише:

чи це якісь данні записались десь в памяті і не стираються і впливають на код, чи просто співпало і вийшов зладу чип.

В IDE увімкнено " ✓ Verify code after upload"? Якщо ні, то теж увімкніть.

При появі незрозумілих глюків корисно підключитись програматором, зчитати флешку та фʼюзи, і проаналізувати їх вміст.

Іноді при залипанні бітів у non-volatile памʼяті допомагає повний chip erase з наступним перезаписом бутлоадера і фʼюзів. Але якщо біти вже почали залипати, то з великою ймовірністю це буде продовжуватись і надалі.

Z1M
2026-03-19 12:46:20

під зміщенням я маю на увазі що коли добавляю чи видаляю частину кода, змінюється глюк. таке враження що після прошивки залишилися якісь данні які не стерлися і так як код змінив розмір то ті данні впливають на іншу частину коду, що проявляється іншими глюками

Підвал форуму