Ви не увійшли.
Kino пише:причем младший нибл, интересненько.
А саме 3-й біт, 0x08.
Именно.
причем младший нибл, интересненько.
А саме 3-й біт, 0x08.
причем младший нибл, интересненько.
Флеш посипалась, усьо.
Воно-то може полежати і після стирання ще почати програмуватись, але я б на це не розраховував і цьому чіпу не довіряв.
Поставив всі галочки і ось така помилка. Без цих галочок просто прошивало. На новому чіпі такого немає
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
а от з флеш щось не зрозуміле
Зітріть флешку, зчитайте її. Якщо там не 8 кілобайт FF'ок, то хана флешці. Якщо після стирання все ок, запишіть 8 кілобайт нулів, зчитайте знову. Якщо зчитуються не всі нулі, то теж хана.
Хоча якщо комірки "розхитані", то буває зразу читається нормально, а через тиждень чи місяць уже сиплеться.
чіп не з аліка. беру на космодромі або вороні. в эпром пишеться все нормально. а от з флеш щось не зрозуміле
Буває, особливо якщо чіп з аліекспреса
А, ну это да. Можно и в подвалах подола чипы изготавливать.
Спостерігав дещо схожі симптоми (з флешки читається не те що записане) на якомусь із attiny після спроби покрокового виконання в avr-gdb через debugWire. Там gdb перезаписує флеш для кожного брекпоінта, так що не дивно. Вилікувалось за допомогою chip erase. Але це не схоже на випадок у автора.
Ну такого не делал, учитывая что стирание идет страницами, то хрен знает как этот брейкпоинт расчитывается.
А вот оставить в цикле запись в эпром на пару минут, тем самым превысив кол-во записей (~100000) это запросто.
вручну я вказував не всі змінні, що присутні в розрахунках. інші були реальними.
Якщо у вас, наприклад, було щось типу
float v = readVoltage();
float i = readCurrent();
float r = v / i;і ви замінили на
float v = readVoltage();
float i = 0.0001;
float r = v / i;то це може бути зовсім різний код із різною поведінкою при одних і тих же значеннях v та i.
Щоб реалізувати ділення без потенційного UB потрібно знати, які там типи операндів, граничні значення, в яких одиницях величини і т.д.
Взагалі, логіку та обчислення, якщо вони не зовсім елементарні, потрібно відлагоджувати окремо, а не прямо в програмі на залізі.
Сам по себе чип avr довольно таки тугой, ни разу не слышал чтобы была битая флеш или озу
Буває, особливо якщо чіп з аліекспреса ![]()
Спостерігав дещо схожі симптоми (з флешки читається не те що записане) на якомусь із attiny після спроби покрокового виконання в avr-gdb через debugWire. Там gdb перезаписує флеш для кожного брекпоінта, так що не дивно. Вилікувалось за допомогою chip erase. Але це не схоже на випадок у автора.
за підсказки в налаштуваннях дякую, перепровірю
Сам по себе чип avr довольно таки тугой, ни разу не слышал чтобы была битая флеш или озу (если конечно не питали завышенным напряжением). Где-то вы у себя перемудрили.
Или не проходит стирание чипа, т.к. на новом вся память забита 0xFF и любая прошивка заливается без проблем.
вручну я вказував не всі змінні, що присутні в розрахунках. інші були реальними. сенс в цьому думаю є. так як на практиці всі варіанти тієї чи іншої змінної не так легко отримати
якщо це баг програми, то і на новому чіпі мало повторитись.
а враження що щось відбулося і не виправляється. бо на новому чіпі де цього не відбувалося, глюків немає, а код той самий
вручну присвоював перемінним вольтаж і ампераж і дивився чи правильно рахує.
Присвоювали прямо в тексті програми? Ви ж розумієте, що при діленні на відому під час компіляції константу і при діленні на отримане під час виконання значення результуючий код і поведінка можуть бути зовсім різними? Практичного сенсу в такому тестуванні немає.
схоже на запис данних за межами масиву.
Так може у вас і відбувається запис за межі масиву? Це також undefined behavior.
Показуйте код.
Увімкніть в IDE відображення попереджень при компіляції та аплоаді: "Show verbose output during: ✓ compile ✓ upload"
Також увімкніть "Compiler warnings: All".
але повторна перепрошивка не допомагала.
Якщо в самій програмі баг, то повторна перепрошивка нічим не допоможе.
чи це якісь данні записались десь в памяті і не стираються і впливають на код, чи просто співпало і вийшов зладу чип.
В IDE увімкнено " ✓ Verify code after upload"? Якщо ні, то теж увімкніть.
При появі незрозумілих глюків корисно підключитись програматором, зчитати флешку та фʼюзи, і проаналізувати їх вміст.
Іноді при залипанні бітів у non-volatile памʼяті допомагає повний chip erase з наступним перезаписом бутлоадера і фʼюзів. Але якщо біти вже почали залипати, то з великою ймовірністю це буде продовжуватись і надалі.
під зміщенням я маю на увазі що коли добавляю чи видаляю частину кода, змінюється глюк. таке враження що після прошивки залишилися якісь данні які не стерлися і так як код змінив розмір то ті данні впливають на іншу частину коду, що проявляється іншими глюками