Працездатність програми ми перевірили засобами моделювання самого середовища розробки Але нас цікавило отримання цілком певних часових інтервалів

На жаль, в наборі інструментів Flowcode немає осцилографа Але він є в іншій програмі, ISIS Для підготовки перевірки тимчасових інтервалів, оттрансліруем налаштовану програму в HEX-файл Запустимо програму ISIS

Як і будь-яка програма, ISIS має основне меню та інструментальні панелі Доступ до компонентів, а це резистори, транзистори, мікросхеми і тд, здійснюється в режимі вибору компонентів

При наведенні курсору на кнопку інструментальної панелі зявляється підказка, що допомагає знайти потрібну кнопку

Після вибору режиму слід натиснути кнопку P (Для відкривання вікна вибору), як показано на малюнку

Обрані для проекту компоненти пізніше будуть зберігатися у вікні нижче У будь-який момент ви можете їх використовувати для додавання до схеми

Рис 2121 Інструментальна панель програми ISIS

Якщо ви не знайомі з програмою ISIS, то раджу завантажити мій переклад керівництва з мого сайту і почитати Але поки ми використовуємо найпростіші операції Сподіваюся, вони будуть зрозумілі з моєї розповіді

Після появи вікна вибору компонентів я зазвичай ввожу в рядок пошуку потрібний мені компонент Зараз це ATmega168

Рис 2122 Діалогове вікно вибору компонентів

Навіть вибравши компонент, ви можете опинитися перед необхідністю додаткового вибору А загальна кількість компонентів настільки велике, що легко заблукати при виборі Виділіть потрібну модель зі списку і натисніть кнопку ОК Діалогове вікно закривається, курсор змінює свій вигляд Якщо клацнути мишкою на робочому полі програми, то зявляється контур мікросхеми, привязаний до курсора

Рис 2123 Установка компонента в робоче поле програми

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

Перше, що слід зробити, це змінити властивості, задані за замовчуванням Вікно властивостей можна відкрити або подвійним клацанням по компоненту, або вибором з меню, наприклад, спливаючого після клацання правою клавішею мишки по компоненту (Edit Properties)

У даний момент нас цікавить завдання правильної тактової частоти мікроконтролера і вибір hex-файлу, який ми отримали після трансляції нашої програми в Flowcode Розташування цього файлу ми знаємо, оскільки самі створювали папку для проекту До речі ..

Вказати потрібну частоту можна впечатав значення у вікно Clock Frequency А вказати потрібний hex-файл зручніше за допомогою оглядача файлів, який зявляється, якщо натиснути кнопку із зображенням папки Це зазначено на малюнку нижче

Рис 2124 Налаштування компонента у вікні його властивостей

Після налаштування параметрів залишається додати до проекту осцилограф, який дозволить спостерігати за виходом мікроконтролера Всі віртуальні прилади викликаються кнопкою, яка позначена «Прилади»На малюнку інструментальної панелі Вибираємо осцилограф (додаючи так само, як додавали мікросхему), зєднуємо його вхід з виходом B0 Цю просту операцію виконуємо, підбиваючи курсор мишки до кінця виведення 14 мікросхеми, клацнувши по ньому, і проводячи зєднання до виведення входу осцилографа, де клацаємо мишкою повторно Залишилося запустити симуляцію (моделювання) кнопкою Play, Розташованої в самому низу поля програми та має вид клавіші будь-якого програвача

Рис 2125 Перевірка роботи програми в ISIS

Програма працює, але це було ясно і раніше, а частота отриманих імпульсів, вам не здається, що вона зовсім не та, що ми «замовляли» У чому справа Давайте розбиратися

Для зясування природи невідповідності є різні шляхи Я вибираю не найвдаліший, так що вам доведеться трохи потерпіти Що я хочу зробити

Я хочу завантажити програму в мій модуль Arduino і перевірити за допомогою «живого» осцилографа отриманий результат

Для завантаження програми я використовую програму avrdude Це програма для роботи з программаторами, відмінною рисою якої є можливість управління з командного рядка Тобто, прописавши цю програму в настройках Flowcode, я можу «прошити» мікросхему з цієї програми

Потрібні налаштування виявляються в розділі «Чип-Опції компіляції ..»Основного меню програми Flowcode Вибравши цей розділ, ми опиняємося у вікні налаштувань компіляції

Рис 2126 Діалогове вікно налаштувань компіляції

Якщо ви коли-небудь надумаєте використовувати інший компілятор, саме тут ви зможете вказати його Але зараз нас цікавить настройка програматора Я вказую розміщення програми роботи з програматором І додаю рядок параметрів (для мого модуля Arduino), яка і буде керувати процесом «прошивки»

%a avrdude &quot%fhex&quot -c stk500v1 -p m168 -P com6 -b 19200 -Uflash:w:&quot%fhex&quot:i -C C:\avrdude\avrdudeconf

Програматор виявляється як stk500v1 (хоча його й немає) Залишається підключити модуль до порту USB і запустити процедуру

Рис 2127 Запуск процедури програмування мікросхеми

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

Рис 2128 Осцилограма результату

Закінчивши попередню главу повним фіаско, я починаю нову главу з розбору «польотів» Я радий, що проблеми виникли природним шляхом, і мені не довелося нічого вигадувати

Як ви памятаєте, раніше ми проробляли досліди з визначення тривалості імпульсів І я використав модуль Arduino І все працювало Повторимо ту програму, і перевіримо, не зіпсувалося чи що-небудь за це час

Рис 221 Повторення програми перевірки тривалості імпульсів

Програму я, звичайно, просто відкрив, поміняв тривалість з 1 мкс на 500 мкс, і переконався, що з модулем все гаразд Переконався, що і з настройками конфігурації, і з настройками програматора все гаразд

Через кілька секунд стає ясно, чому я не побачив імпульсів в попередньому досвіді Можливо, ви вже зрозуміли, де помилка Я міг, це моє право, використовувати для формування сигналу висновок порту В0, як я зробив у програмі Але в цьому випадку не було сенсу намагатися спостерігати за висновком В5, як я зробив це, підключаючи осцилограф

Чому я почав главу, написавши, що радий появі проблеми Тому що проблеми час від часу зявляються в будь-якому випадку Але, використовуючи графічний мова програмування, ви зосереджуєтесь на істоту роботи контролера, не відволікаючись на проблеми кодування Помилку можна допустити, буває, але знайти її важко, якщо у вас досить великий обсяг коду, особливо на асемблері Пізніше, так, ви будете справлятися і з цим, але в початковий момент, коли дуже багато нового, краще використовувати графічний мова програмування Легше розібратися з усім іншим

Якщо внести виправлення, то результат зміниться

Рис 222 Осцилограма виправленої програми

Отже, першу помилку я знайшов Але залишається незрозуміло, чому період повторення імпульсів у програмі ISIS разюче відрізняється від отриманого за допомогою «живого» осцилографа

Ми вже говорили, що паузи, що задаються в програмі, дуже сильно залежать від тактової частоти, яка в свою чергу залежить від конфігурації Контролер ATMega168 має два байти конфігурації, які я залишив заданими за умовчанням в Flowcode і не налаштовував в програмі ISIS Ось ці два байти з програми Flowcode: 0x0, 0xdf Останній байт переведемо в двійковий вид: 11011111 І звернемося до довідки по микроконтроллеру Є дві таблиці для старшого і молодшого байтів

Рис 223 Таблиці байтів конфігурації

Яким чином ці налаштування позначаються на тактовій частоті, можна прочитати в описі Але мої спроби змінити конфігурацію Arduino, на щастя чи ні, я вирішив, що на щастя, не увінчалися успіхом

Разом з тим, встановлюючи частоту в програмі Flowcode, я орієнтувався на маркування кварцового резонатора А встановлені установки конфігурації можуть давати інше значення цієї частоти Поки для нашої мети ця деталь не настільки важлива Якщо різниця стане принципово важливою, ми подумаємо, як вирішити цю проблему Єдине, щоб не перевіряти кожен раз все на макетної платі, я приведу результат в програмі ISIS у відповідність з реальним макетом

Рис 224 Налаштування мікроконтролера в програмі ISIS

Тепер, запускаючи програму на симуляцію, ми отримаємо результат:

Рис 225 Моделювання програми в ISIS

Я не став щось рішуче змінювати в настройках модуля Arduino, та й вам поки не раджу, оскільки він допоможе освоїти багато цікавого з життя мікроконтролерів Збивши налаштування рішучими діями, можна позбутися його звязку з програмою Flowcode Звичайно, модуль прекрасно працюватиме в своєму власному середовищі програмування, про яку ви можете прочитати, але я зараз вважаю за краще використовувати те, з чого почав І, крім іншого, модуль Arduino не тільки може програмуватися з програми Flowcode, але сам може виконувати функції програматора для програмування інших мікроконтролерів Про те, як це можна зробити, я зустрічав розповіді в Інтернеті

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012