20 Грудня 2011 20:34
Робота ISP-програматора з мікроконтролером AVR починається з активації сигналу скидання мікроконтролера, за якою йде передача по SPI команди входу в режим програмування. На момент активації сигналу RESET на вході SCK обов’язково має бути низький рівень. Якщо ця умова з якоїсь причини не виконується, то спад сигналу SCK вже після встановлення низького рівня на RESET призводить до непередбаченої зміни стану автомату програмування.
Цей зайвий спад спотворює наступну 4-байтову команду входу в програмування, мікроконтролер її не розпізнає і не переходить у потрібний режим. Зсув фази на один період SCK між програматором та мікроконтролером порушує байтову синхронізацію, тому нема сенсу просто передавати команду ще раз. Перед нею теж буде зайвий спад на SCK — під час передачі останнього біту попередньої команди.
Синхронізацію може бути втрачено і під час програмування, про це можна почитати в публікації про повідомлення «synchronisation lost» в AVReAl.
В документації на мікроконтролери AVR різних років розробки описано два способи відновлення синхронізації у випадку, якщо перша команда входу у режим програмування закінчилася невдачею.
»»» Дізнатися більше про способи пересинхронізації
24 Жовтня 2011 10:05
Вийшла бета-версія програматора avreal 1.28r9b1 з підтримкою FT232H.
Прохання до власників плат з мікросхемою FT232H перевірити роботу.
Доповнення: тестування закінчено, всім дякую.
23 Жовтня 2011 11:15
Я дійсно сильно затримався на FreeBSD 6.4, бо сам я не користуюся цією операційною системою і забув слідкувати за виходом нових версій.
Мене довелося підштовхнути до переходу на FreeBSD 8.2.
Перезібрав avreal-1.28r8 для 8.2 та після перевірки виклав на сторінці завантаження avreal поруч зі збіркою для 6.4.
Всі наступні версії збиратимуться вже лише для 8.2.
13 Серпня 2011 22:11
Вийшла нова версія програматора avreal — v1.28r8 (Sat 2011-08-13).
- Додано підтримку двійкового формату файлів (raw binary).
Формат задається префіксом :bin: в імені файлу.
- Змінено поведінку ключа -r.
При використанні ключа з модифікатором -r+ у вихідний файл записується весь вміст відповідного регіону пам’яті мікроконтролера, тобто поведінка відповідає «старій» поведінці ключа.
Без модифікатора, у формі -r, у вихідний файл формату :ihex: не записуються рядки, які в полі даних мають лише байти FF. У файли формату :bin: не записується «хвіст», що складається лише з FF.
1 Травня 2011 16:11
Нехай перед нами стоїть наступна задача. Програма може складатися з набору модулів, які комбінуються в залежності від потреб. Кожен модуль має функцію, яка викликається при його виборі в простому меню на терміналі. Також є текстовий рядок та літера для меню. Ми хочемо автоматизувати процес збирання програми таким чином, що при підключення модуля в проект він «сам» ініціалізується і «реєструється» в програмі до початку роботи main()
. В C++ це робиться за допомогою конструкторів, але при цьому розмір програми росте. В C можна в окремому файлі створити масив структур опису модулів і ініціалізувати його статично. Щоправда, при цьому доведеться ініціалізувати модулі окремим циклом на початку функції main()
(теж трохи додаткового коду) та для формування масиву залежно від потреб використовувати #ifdef / #endif
.
Зрозуміло, якщо «з першого акту на стіні висить рушниця» моделі «використання секцій», то тут стрілятиме саме вона.
Читати далі — автоматизація реєстрації модулів за допомогою секцій… » » »
30 Квітня 2011 0:43
Для програм, написаних мовою С чи С++, часто буває зручно, а іноді просто необхідно проініціалізувати якісь ресурси мікроконтролера до початку роботи фунцкії main()
(для C++ — до початку роботи конструкторів статичних об’єктів). В багатьох системах програмування для цього використовується функція на зразок low_level_init()
, яка викликається з С-шного «пускача» (start-up module, в більшості випадків пишеться на асембелрі) і має бути визначеною десь в проекті. Якщо такої функції нема, тобто програміст її не написав у даному проекті, то з бібліотеки береться коротка «затичка» (stub), яка просто нічого не робить.
У avr-gcc це зроблено дещо по-іншому. Використовуються можливості системи програмування по обробці секцій (сегментів, sections, segments) програми. Вашій увазі пропонується невеличкий приклад з детальним описом.
Continue reading ‘Секції .init в avr-gcc’ »
28 Квітня 2011 0:25
В результаті невеликого наведення порядку (чи то наведення невеликого порядку) відгреблося в сторону і готове потрапити в добрі руки:
P80C31BH (DIP-40) |
1 |
P80C51FA (DIP-40) |
1 |
D87C51FA (CERDIP-40) |
1 |
AT89C52-12PI (DIP-40) |
1 |
AT89C55-24PI (DIP-40) |
2 |
AT89C55-33PI (DIP-40) |
1 |
AT89C51-24JC (PLCC-44) |
1 |
AT89C51RC-24JI (PLCC-44) |
1 |
AT90S8515-8JI (PLCC-44) |
3 |
|
1 |
Scenix SX28AC/DP |
1 |
FM1608-P (DIP-28)
|
2 |
(зарезервовано) |
HY6264ALP-10 (15мм DIP)
|
1 |
(зарезервовано) |
|
2 |
27C64, 27C256, 27C1001 (CERDIP) |
Не рахував |
Все це не паяне, але половина з цього побувала в панельках 🙂
Мікроконтролери та EPROM-ки перешивалося не багато разів (а деякі взагалі не зашивалися), так що ресурс ще не вичерпано.
Крім того є здуте з плат, які йшли на викидання. Має бути робочим:
MSP430F1101 |
5 |
(зарезервовано 3) |
MSP430F1101A |
11 |
(зарезервовано 5) |
З ними якась кількість кварців 32768 Гц в корпусах TC-28.
Все роздається.
27 Лютого 2011 20:12
Вийшла нова версія програматора avreal – v1.28r7 (Sun 2011-02-27).
15 Лютого 2011 12:44
В avreal версій з 1.28r2 по 1.28r6 є помилка в обробці ключа -v+, тобто ключа -v з модифікатором +.
Помилково виконується перевірка на чистоту всього обсягу пам’яті мікроконтролера, а не лише адрес, не зайнятих вмістом hex-файлу. В результаті після першої ж верифікації робота припиняється і подальші операції, наприклад, запис fuses, не виконуютьcя.
Ключ -v без модифікатора працює нормально, тому рекомендується використовувати його.
Помилка не критична, буде виправлена в черговій версії avreal.
Чесно кажучи, я вже і не пам’ятаю з яких міркувань в avreal було додано можливість перевірки на 0xFF
не задіяних у вхідному HEX-файлі позицій. Чи хтось колись просив зробити, чи мені самому раптом захотілося. Зараз от думаю, що особливої потреби в цьому і нема — при записові після стирання вони і так мали б бути стерті, а якщо дуже хочеться, можна ключ -b додати. При дозаписові якихось таблиць без стирання нема сенсу перевіряти на чистоту, бо в незайнятих цим HEX-файлом позиціях розміщено основний код.
А місце для внесення помилок додалося. Кажуть же, що «простота — запорука здоров’я» 🙂
Може, пізніше я цей модифікатор приберу зовсім.
Помилку виправлено у версії
1.28r7.
12 Жовтня 2010 12:17
Вийшла нова версія програматора avreal — v1.28r5 (Tue 2010-10-12).
- Виправлено помилку synchronisation lost після верифікації для деяких моделей контроллерів та адаптера на FT2232/FT4232.
- Додано ATmega128RFA1