Windows Vista для запуска программы для робота

April 8, 2014 by admin Комментировать »

Все программы, которые были в руководстве к 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

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты