Всі програми, які були в керівництві до ROBOPICA, розраховані таким чином, що вони вміщаються в обмеження демо-версії MicroC Але, займаючись розвитком своїх ідей, ви можете непомітно для себе переступити через розмір памяті в 2 кбайт

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

Не знаю, як ви будете вважати те, про що піде мова далі, відкритими воротами або лазівкою, але подумати про використання цієї можливості, мені здається, є сенс

Є безкоштовний, повнофункціональний компілятор SDCC Його можна знайти на сайті:

Рис 471 Сайт розробників компілятора SDCC

Для завантаження компілятора слід скористатися радою на цій сторінці: You can download the release from (ви можете завантажити версії з): http://sourceforgenet/projects/sdcc/files/

В операційній системі Linux, я думаю, простіше, ніж в Windows, використовувати цей компілятор, оскільки є середовище розробки Piklab, що підтримує роботу з ним Колись MPLAB підтримувала просту конфігурацію для роботи з цим вільним і повнофункціональним компілятором Але сьогодні в Windows тобто не вирішене питання для початківців, як працювати з цим компілятором

Спробуємо розібратися По-перше, можна використовувати Visual Studio 2010, де працює та програмування Arduino, і в середовищі Visual C + + можна використовувати SDCC по-друге, можна використовувати компілятор в режимі командного рядка

З компілятором SDCC працює середу Eclipse, для якої є pluginи, за допомогою яких додається можливість використовувати компілятор, і середа MPLABX Але мені не вдалося оттранслировать навіть найпростіший проект Щось я не зробив, щось, можливо, зробив не так, але ..

Для роботи в командному рядку, крім компілятора SDCC версії 28, який я раджу для цього режиму роботи встановити в кореневий каталог диска C: \, знадобиться завантажити і gputils – асемблер і компонувальник версії 14 Знайти gputils для Windows можна на сайті:

http://sourceforgenet/projects/gputils/files/

Виглядає це так:

Рис 472 Сайт для скачування gputils

Встановити цей пакет для роботи з командним рядком я раджу теж в кореневий каталог диска С, а не в Program Files, як це зроблено за замовчуванням

У кореневому каталозі диска С: \ я створюю папку work, Де для проекту буде папка proba На прикладі створення найпростішої програми (як в керівництві до ROBOPIC) розглянемо, що для цього потрібно зробити

У першу чергу слід написати файл на мові Сі Найпростіший спосіб – використовувати блокнот операційної системи Єдина особливість, що виникає в цьому випадку, при збереженні файлу (в папці proba):

Рис 473 Збереження вихідного файлу в блокноті Windows

При збереженні файлу слід дати розширення C і для типу файлу вибрати «Всі файли»

Для професіоналів цього достатньо, багато в чому це питання звички, але для початківців можна запропонувати спеціалізований блокнот, блокнот програміста

Рис 474 Сайт блокнота програміста

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

Рис 475 Як виглядає файл на мові Сі в блокноті програміста

Як видно, можна вибрати мову інтерфейсу, включивши російську мову Структура файлу виділяється кольором У блокноті можна відкрити кілька файлів Що ще Блокнот я виявив серед інструментальних засобів середовища WinAVR, спробував працювати з цим блокнотом, все було добре, але в якийсь момент виникли проблеми Після цього я завантажив блокнот заново, і поки проблем не виникало

Отже, написавши і зберігши файл з вихідним текстом, можна почати роботу У першу чергу перейдемо в папку проекту:

Рис 476 Команда переходу в папку проекту

Тепер можна ввести команду трансляції вихідного тексту і оттранслировать файл:

Рис 477 Трансляція вихідного файлу

Тепер в папці проекту зявилися нові файли:

Рис 478 Файли проекту

За допомогою програми обслуговування програматора можна завантажити отриманий hex-файл і перевірити роботу програми на макетної платі Я перевірю програму інакше, використовуючи свої можливості:

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

Таким чином, робота з командним рядком і звичайним блокнотом достатня для створення файлу завантаження

Компілятор SDCC не обмежує ваші програми розміром 2 кбайта, але ціною цього буде необхідність все робити самому Розглянемо це на прикладі наступної найпростішої програми, яку можна назвати «моргнути світлодіодом », а можна назвати« Hellow world »світу контролерів:

#include <pic16f628ah>

typedef unsigned int word

word at 0x2007 CONFIG = _WDT_OFF &amp _PWRTE_OFF &amp _INTOSC_OSC_NOCLKOUT &amp

_MCLRE_OFF &amp _BODEN_OFF &amp _LVP_OFF &amp _DATA_CP_OFF &amp _CP_OFF

void main() {

TRISA3 = 0 / / Висновок RB3 ==> Вихід while (1)

{

RA3 = 1 DELAY_US(1) RA3 = 0 DELAY_US(1)

}

}

Доданий:

typedef unsigned int word

word at 0x2007 CONFIG = _WDT_OFF &amp _PWRTE_OFF &amp _INTOSC_OSC_NOCLKOUT &amp

_MCLRE_OFF &amp _BODEN_OFF &amp _LVP_OFF &amp _DATA_CP_OFF &amp _CP_OFF

Це не що інше, як слово конфігурації Всі параметри цього слова можна знайти у відповідному файлі мікроконтролера, в даному випадку pic16f628ah Відкривши цей файл, ви знайдете розділ, присвячений бітам слова конфігурації Так, якщо ви використовуєте кварц, то параметр _INTOSC_OSC_NOCLKOUT слід замінити параметром _HS_OSC

Якщо спробувати транслювати програму, то оператор DELAY_US() виявиться незрозумілий компілятору Щоб отримати файл для завантаження в мікросхему, необхідно самим створити потрібну функцію або знайти готовий її варіант Спробуємо створити цю функцію, нехай і не кращим чином, але дає можливість створити програму

Будемо виходити з того, що команда nop на асемблері виконується за один такт При внутрішньому тактовом генераторі PIC16F628A, працює на частоті 4 МГц, ми виконаємо чотири таких команди, що має дати час виконання 1 мкс Напишемо файл функції DELAY_US() на мові Сі, але збережемо його як файл заголовка, тобто, файл delay h, В тій же папці, де розташована основна програма

void DELAY_US(unsigned int num)

{

int i = 0 while (i<num)

{

_asm nop nop nop nop

_endasm i++

}

}

Тепер додамо в попередній вихідний файл програми:

#include &quotdelayh&quot

Проробимо вищеописані операції з трансляції вихідного файлу Роботу отриманого в результаті hex-файлу подивимося за допомогою програми ISIS:

Рис 4710 Перевірка програми «Hellow world»

Тривалість імпульсу, звичайно, не 1 мкс Це так Причина для цього є – крім потрібних операцій ми виконуємо ряд допоміжних, які затягують час виконання Але в даний момент є ще й сумніви, а чи не помилка це програми ISIS Останнє легко перевірити, завантаживши програму в реальну мікросхему, підключивши осцилограф і перевіривши це

«В живому вигляді»:

Рис 4711 Перевірка програми за допомогою осцилографа

Немає помилки в роботі програми ISIS Тепер можна перевірити тривалість пауз в 10 і 100 мкс, щоб переконатися – паузи, приблизно, в 10 разів довше Це можна врахувати в тих програмах, де додаються паузи А файл delayh можна дописати, додавши функції DELAY_MS() і DELAY_S(), мілісекундним і секундні паузи Крім того, я зроблю два файли для частоти тактового генератора 4 МГц і 20 МГц Останній файл буде виглядати так:

void DELAY_US(unsigned int num)

{

int i = 0 while (i<num)

{

_asm nop nop

/ / Далі ще 26 операторів nop nop

nop

_endasm i++

}

}

void DELAY_MS(unsigned int num1)

{

int i = 0 while (i<num1)

{

DELAY_US(100) i++

}

}

void DELAY_S(int num2)

{

int i = 0 while (i<num2)

{

DELAY_MS(1000) i++

}

}

Кількість операторів у наведеному вище тексті я дещо скоротив, щоб не було як в оповіданні про поїздку на коні, коли на 20 сторінках написано «цок-цок-цок», оскільки шлях неблизький Крім того, я підігнав кількість операторів, щоб паузу, скажімо, в 20 мкс можна було записати оператором DELAY_US(2), тобто, зменшивши в 10 разів Це не саме, думаю, вдале рішення, але виконання затримки 10 мс виглядає в цьому випадку досить схоже:

Рис 4712 Виконання паузи 10 мс

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