вівторок, 20 жовтня 2015 р.

1.PSOC. Hello World.

З легкої руки Деніса Рітчі та Браяна Кернігана, усі програмісти починають свій шлях із програми, яка виводить на екран комп'ютера слова "Hello, world". Інженери, які починають працювати із мікроконтролерами, замість цього запалюють світлодіод. Я вирішив не ламати цю традицію і завантажив перший проект, який так і називається називається - Blinking Led.
Завантажив, збудував проект, прошив його в мікроконтролер. Світлодіод, що.вже запаяний на відлагоджувальній платі, заблимав. Намилувавшись "підморуванням" світлодіода, я зрозумів, що плагіат я вже засвоїв. Переходимо до наступного етапу - вчимось списувати домашнє завдання від сусіда  до власного зошита.

Для цього я уважно ознайомився із готовим проектом, закрив його, створив новий пустий проект та заходився самостійно його відтворювати - витягнув необхідні компоненти, з'єднав їх, налаштував, збудував проект. Цю ітерацію довелось повторити кілька разів, поки проект скомпілювався без помилок. Після цього із замиранням серця натиснув кнопку прошивки мікроконтролера.

 Я вже практично насолоджувався блиманням світлодіода, коли він несподівано перестав підморгувати зовсім. Перешив програму кілька разів - результат від цього не змінився. Світлодіод не блимав. 

Відкрив попередній проект, прошив - світлодіод знову заблимав. Відкрив власний проект. Порівняв схеми, з'єднання, налаштування компонентів.  Жодної різниці. Прошив - знову світлодіод не блимає. 

Хоча я не написав жодної стрічки коду, вирішив заглянути в згенерований файл main.c. В мене там знаходились тільки коментарі та нескінчений цикл. Порівняв із працюючим проектом і зразу помітив різницю - там для кожного використаного компонента викликалась процедура ініціалізації. Добавив у свій проект, збудував його, прошив і,  о диво, світлодіод заблимав. 

Зробив в 100500 раз висновок - які б хороші візуальні інтелектуальні інтерфейси не були - все одно код доводиться дописувати руцями. І поки дізнаєшся де і коли це робити, наб'єш не одну шишку.

Ну що ж. Списувати я вже навчився, навіть набив кілька шишок. Пора зробити щось самостійне. Переглянув users manual і зауважив, що на платі напаяно світлодіоди різних кольорів. Вирішив запалювати їх послідовно. Згадав курс цифрової техніки і подумав, що добре було б реалізувати це також апаратними методами. 

Для цього витягнув генератор, лічильник та демультиплексор. З'єднав їх та налаштував так, щоб лічильник рахував імпульси генератора від 0 до 3 і подавав результат на вхід демультиплексора. Мультиплексор, відповідно подає сигнал 1 на той вихід, номер якого лічильник подав на вхід. Кожен вихід мультиплексора у свою чергу з'єднаний із відповідним світлодіодом. Світлодіодів три, а виходів 4. Отже, після послідовного запалювання трьох світлодіодів, матимемо паузу, коли жоден світлодіод не світитиметься.

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

Чому ж так відбувається? І тут в голові несподівано з'являється відповідь. Я ж не запалюю один світлодіод, я вимикаю один світлодіод! Значить, коли на одному виході демультиплексора з'являється одиниця, то відповідний світлодіод вимикається. На інших виходах знаходиться нуль і відповідні світлодіоди продовжують горіти. Отже світлодіоди в нас вмикаються не одиницею, а нулем. 

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

Ура!!! Я вже навчився запалювати світлодіоди за власним бажанням. Схема цього простого рішення зображена на малюнку. Нижче також знаходиться відео вмикання кольорових світлодіодів. 



Ну тепер пора щось написати і буквами. Але це вже інша історія...

Немає коментарів:

Дописати коментар