Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[2]

количество дней работы, на число функций, запусков. Бывает так, что к выходному файлу дописывается ремарка "Не зарегистрирован!". Чтобы заменить demo- или trial-версию полноценной программой, необходимо выслать автору денежное вознаграждение.

Commercial - коммерческие платные программы, распространяемые за деньги, и, как правило, немалые. Взамен фирма гарантирует техническую поддержку, ответы на вопросы, своевременное обновление версий. За примерами далеко ходить не надо - это все Windows, MS Office, AutoCAD, Adobe Photoshop и многое другое. Коммерческие продукты защищены авторскими правами, и, по идее, их нелегальные копии нельзя использовать в производстве собственных изделий или для оказания платных услуг.

Внутри каждой группы программ существуют подразделы. Для freeware действует следующая классификация.

Adware (ad-sponsoredsoftware, bannerware) - программа, в которой содержится баннерная реклама, автоматически скачиваемая с Интернета. Эта программа, с точки зрения пользователя, является бесплатной. Однако ее автор получает определенные дивиденды от рекламодателей.

Donationware (Beer-ware, cakeware) - занимают промежуточное положение между freeware и shareware. От первого типа они отличаются включением в текст программы просьбы автора прислать ему "кто, сколько может" или угостить чем-нибудь вкусным, а от второго типа - отсутствием реально действующих ограничений.

Spyware (trackware, Big Brotherware)- программа-шпион, которая по запросу извне может отсылать ее автору информацию о параметрах компьютера, адресах e-mail, паролях. Часто такие программы автоматически попадают в компьютер при посещении Интернет-магазинов и рекламных сайтов. Подобным способом коммерсанты пытаются выяснить вкусы своих посетителей, их количество и географию размещения. Если дело ограничивается только этим, то spyware абсолютно безвредны. Неприятность грозит со стороны хакеров, когда какая-нибудь простенькая бесплатная программка, обеспечивающая дозвон до провайдера, может коварно утаскивать ваши пароли и отсылать по Сети своему создателю.

Postcardware - для запуска такой программы требуется пройти регистрацию. Для этого надо отправить автору почтовую карточку, открытку или электронное письмо, а взамен получить пароль. Цель автора - узнать, насколько популярна его программа, и какому контингенту пользователей она интересна.

Причины, побуждающие разрабатывать freeware-программы

Можно ли считать всех авторов бесплатного софта альтруистами по убеждению? Ознакомившись с причинами, побуждающими людей "раздавать" программы, каждый может сделать свои выводы [1].

1.Программа получилась небольшой по выполняемым функциям, интересной только узкому кругу лиц или потребовала на ее создание мало времени. Уважающий себя программист не станет подражать "собаке на сене" и отдаст свой скромный труд на всеобщее пользование.

2.Бесплатная программа может стать хорошим "портфо-лио" (англ. портфель) при поиске работы. Это своеобразная визитная карточка и аттестат зрелости. К примеру, открыл страничку в Интернете, поместил на ней программу, которая вызвала интерес. Со временем ссылки на страничку появляются на ведущих поисковиках мира, программу награждают призами на конкурсах. Как следствие, автор начинает получать заказы на разработку коммерческих программ.

3.На базе бесплатной программы могут создаваться виртуальные клубы по интересам. Появление новых знакомств, интересный форум, свежие идеи, консультации, взаимовыручка - вот "капитал" автора. Очень часто организуются интернациональные группы программистов, которые поочередно совершенствуют программный продукт, переводят его на разные языки.

4.Попытка распространять вирусы под видом бесплатных программ. К сожалению, такие случаи встречаются на практике, поэтому каждую новую скачанную через Интернет программу следует проверять "антивирусом" до ее запуска на компьютере, а не после...

5.Бесплатная программа может являться пробной альфа-или бета-версией коммерческого продукта, но с еще не до конца исправленными ошибками. Часто они не фатальные и серьезно не мешают в работе.

6.Некоторые фирмы разрабатывают одновременно freeware- и commercial-программы, например, первую из них для индивидуальных пользователей, а вторую - для корпоративных сетей. При этом бесплатная версия служит рекламой, на ней отрабатываются новые алгоритмы и устраняются ошибки за счет читательских отзывов.

7.Размещение программы в Интернете может служить защитой от плагиата. В "свободное плавание" отправляют версию программы, в которой четко фиксируется основная идея алгоритма, указывается авторство и дата. При обнаружении плагиата, о нем предупреждаются системные администраторы и поисковые сайты.

8.В разряд бесплатных могут переводиться нормально работающие, но устаревшие версии коммерческих продуктов. Расчет на психологию потребителя: если бесплатная версия понравится, то с большой долей вероятности могут купить и ее улучшенный вариант.

9.Некоторые программисты при временном отсутствии работы по специальности, чтобы не терять форму, работают над свободно распространяемыми проектами. При этом отзывы, критика и пожелания пользователей являются мощным стимулом к изучению новых приемов программирования, что, безусловно, пригодится в будущем.

10.Создание бесплатной программы может служить альтернативным ответом одних программистов другим. Принцип по-спортивному простой: ".и мы умеем не хуже". Классический пример - это операционная система Linux, задуманная как некоммерческая альтернатива Windows.

Существует целый класс бесплатных программ, авторы которых сознательно распространяют их без ограничений, руководствуясь принципами GNU. К этой категории принадлежит и WinAVR. Поскольку данное направление включает в себя целое философское учение, то имеет смысл рассмотреть его подробнее.

Принципы GNU

В 1984 году группа дипломированных специалистов во главе с Ричардом Столлменом (Richard Stallman) основала Проект GNU (GNU Project). Это свободная в распространении Unix-подобная операционная система, включающая в себя множество свободных подпрограмм. Название "GNU" расшифровывается как рекурсивный акроним словосочетания "GNUs Not; Unix" ("GNU -это не Unix"). На эмблеме Проекта (рис.2) изображен стилизованный шарж антилопы гну, созвучный со словом "gnu".

Со временем началиНИМЬ-И

разрабатывать и другие

программы на базовом принципе "свобода программного обеспечения" (free software), который означает право пользователя свободно запускать, копировать, распространять, изучать, изменять и улучшать. В английском языке слово "free" переводится двояко - "бесплатный" и "свободный". В системе GNU используется второе понятие, которое имеет четыре разновидности:

свобода 0 - возможность запускать программу в любых целях;


свобода 1 - возможность изучения логики работы программы и адаптации ее к своим нуждам;

свобода 2 - возможность свободного распространения копий программы;

свобода 3 - возможность улучшать программу и публиковать свои улучшения без уведомления кого-либо.

Программа считается свободной от ограничений при выполнении всех четырех свобод. Необходимым условием осуществления свободы 1 и 3 является доступ к исходным текстам программы. При выполнении свободы 2 пользователь вправе взимать плату за копирование программы (и только!), хотя может распространять ее бесплатно.

Сторонники идеи GNU выработали своеобразный "кодекс чести", в котором нет места "пиратству и плагиату". Существует даже список слов и выражений, не приемлемых в сообществе. Принципам GNU может соответствовать любая программа любого жанра любой операционной системы. Знак авторского права "копирайт" рекомендуется заменять "копи-лефтом", единственным ограничением которого является запрет накладывать какие-либо ограничения при распространении программы.

Если внимательно проанализировать философию GNU, то ее основная идея заключается в коллективном накоплении банка программ и алгоритмов, которым мог бы воспользоваться любой желающий.

А как же быть с оплатой труда программистов? Принципы GNU не запрещают брать деньги за услуги по тиражированию свободных программ и за услуги по адаптации программного обеспечения для нужд конкретного потребителя. Не секрет, что в большинстве случаев оплачивают программы те люди, которые не умеют их составлять самостоятельно. Если человек с трудом отличает "фортран" от "ситроена", то ему не поможет знание исходного кода. А вот у программистов между собой не должно быть тайн.

С изложенной теорией можно соглашаться или спорить, но она реально существует и поддерживается Free Software Foundation, Inc. (http: www.gnu.org, США, Бостон, русская страница http: www.gnu.org/home.ru.html). Более того, наблюдается тенденция к увеличению числа приверженцев GNU, особенно после подключения к Интернету программистов из стран с невысоким достатком.

Освоение WinAVR

Первое знакомство с WinAVR обычно рекомендуют начинать с изучения англоязычного файла помощи http: winavr.sourceforge.net/download/install config WinAVR. pdf, 297 Кб, автор Colin OFlynn. Не уменьшая значение этого документа, можно предложить другой подход - более простой, краткий и логически не менее понятный.

Первоначально следует скачать со страницы http: source-forge.net/projects/winavr последнюю по времени версию пакета WinAVR (по состоянию на январь 2005 г. это 20040720). Дата версии зашифрована в названии файла по принципу год-месяц-число, в частности, http: ovh.dl.sourceforge.net/source-forge/winavr/WinAVR-20040720-install.exe означает 20 июля 2004 г. Объем файла почти 13 Мб, поддерживается докач-ка с 10 равноценных зеркал из разных уголков планеты. В Интернете потребуется 2...3 часа работы при крейсерской скорости скачивания 5...7 Мб/час на городских телефонных линиях.

После запуска файла WinAVR-20040720-install.exe на выполнение, предлагается выбор языка инсталляции, среди прочих имеются русский и украинский. О том, что WinAVR (произносится "whenever") является свободно распространяемым пакетом, свидетельствует лицензия GNU GPL (General Public License). По умолчанию программа будет установлена в папку C:\WinAVR, занимая объем 69,9 Мб. Менять этот путь не следует в целях облегчения идентификации дальнейших действий.

По окончании инсталляции в системный файл "autoexec.bat" Win9x автоматически вводятся две новые строки путей поиска, а на рабочем столе Windows-9x/2000/XP со-

здаются ярлыки к 7 разным инструментам пакета: Avr Insight, Avr-libs, GNU manuals, MFile, Programmers Notepad, Readme, TkInfo. Для начала лучше переместить их в отдельно созданную папку или удалить со стола в корзину. Доступ к ним все равно остается через меню "Пуск - Программы - WinAVR".

На этом шаге многие программисты в недоумении прекращают работу с компилятором. Дело в том, что единого запускающего файла не видно, а хаотический вызов на выполнение отдельных рабочих инструментов ни к чему толком не приводит. Разбираться же в объемных англоязычных файлах помощи не у каждого хватает терпения. Очевидно, с этими негативными моментами связано не столь широкое распространение WinAVR, как других Си-компиляторов.

А ларчик открывается просто: текстовый редактор Programmers Notepad (PN), автор Simon Steele, и является по совместительству главной оболочкой Си-компилятора. Пусть никого не смущает поддержка в нем разных языков программирования, начиная от Visual Basic до Java, и наличие отдельного авторского сайта http: www.pnotepad.org. Надо помнить, что пакет WinAVR собран из отдельных разработок, каждая из которых может иметь самостоятельное применение. К слову сказать, в будущих версиях WinAVR разработчики планируют ввести многоязыковую поддержку и отдельный графический интерфейс для комплексного создания новых проектов.

Итак, пакет WinAVR успешно установлен на компьютер. Теперь очередь поискать среди его файлов примеры составления Си-программ. В папке C:\WinAVR\examples\demo\ находится одна из них под названием "demo.c". Поскольку распространяется она на условиях Beer-ware (разновидность freeware), то нет ограничений против русификации комментариев и более плотного форматирования текста, как показано в листинге. Автора программы, немца Йорга Вунша (Joerg Wunsch), остается лишь поблагодарить за работу и гостеприимно пригласить в древний град Чернигов на кружку пенистого напитка.

Разбираться в тонкостях построения данной Си-программы нет надобности. Это сложный для начинающих пример, скорее образец того, как делают люди. Главное, что не требуется самому писать первую тестовую программу, в которую по неопытности можно внести казусные ошибки.

Составление электрической схемы для "быстрого старта"

Программа "demo.c", приведенная в листинге, хоть и демонстрационная, но вполне работоспособна на макете. Подсказки для построения схемы устройства разбросаны прямо по ее тексту, не пропустить бы. В частности, устройство должно содержать один светодиод, подключенный между выводом OC1 (OC1A) МК и общим проводом GND. Свето-диод, по замыслу разработчика программы, должен периодически изменять свою яркость от максимума до минимума, используя широтно-импульсное регулирование длительности.

Идентифицировать, где находится вывод OC1 (OC1A), можно, только зная название МК. Судя по заголовку Си-программы, она универсальна и без изменений может работать с AT90S2313, 2333, 4414, 4433, 8515, 8535, ATmega8, 64,128,163.

Но как же программист указывает компилятору тип МК? Для этого к каждой Си-программе в WinAVR прилагается так называемый make-файл. Он должен находиться в той же папке, что и Си-программа. В нашем случае, действительно, в папке C:\WinAVR\examples\demo\ расположен файл без расширения под названием "makefile" длиной 1770 байтов. Если просмотреть его содержимое любым текстовым редактором, то в третьей сверху строке будет видна надпись: "MCU TARGET = at90s2313", из чего следует однозначный вывод - программа "demo.c" будет откомпилирована под МК AT90S2313.

Справочные данные на микросхему находятся в DATASHEET http: www.atmel.com/dyn/resources/prod doc-


Листинг

/*"THE BEER-WARE LICENSE" (Revision 42). Если вы считаете

*эту программу полезной для себя, то при встрече вы можете

*угостить меня пивом. Joerg Wunsch <joerg@FreeBSD.ORG>

*---------------------------------------------------------

*Демонстрационная программа. Индикатором служит светодиод,

*подключенный между выводами 0С1/0С1А и GND. Яркость све-

*чения управляется ШИМ (то увеличивается, то уменьшается).

*=demo.c, v 1.1.2.2 2004/05/25 08:55:24 joerg wunsch=*/

/«Библиотека типов данных*/ /♦Библиотека ввода-вывода*/ /«Библиотека прерываний*/ /♦Библиотека сигналов*/ /*Если обнаружен AT90S2313*/

#include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #if defined ( AYR AT90S2313 )

#define OC1 PB3/*Линии РВЗ назначено имя OC1*/

#define OCR 0CR1/«Регистру 0CR1 назначено имя OCR*/

#define DDROC DDRB /*Регистру DDRB назначено имя DDROC*/ #elif defined ( AVR AT90S2333 ) defined ( AVR AT90S4433 )

#define OC1 PB1/*Линии PB1 назначено имя OC1*/

#define DDROC DDRB /*Регистру DDRB назначено имя DDROC*/

#define OCR 0CR1 /«Регистру OCR1 назначено имя OCR*/ #elif defined ( AVR AT90S4414 ) defined! AVR AT90S8515 )

I I defined ( AVR AT90S4434 ) I I defined ( AVR AT90S8535 )

I I defined ( AVR ATmegal63 ) /*Если обнаружены эти МК*/

#define ОС1 PD5/*Линии PD5 назначено имя 0С1*/

#define DDROC DDRD /*Регистру DDRD назначено имя DDROC*/

#define OCR OCR1A /«Регистру OCR1A назначено имя OCR*/ #elif defined( AVR ATmega8 ) /*Если обнаружен МК ATmega8*/

#define OC1 PB1/*Линии PB1 назначено имя OC1*/

#define DDROC DDRB /*Регистру DDRB назначено имя DDROC*/

#define OCR OCR1A/«Регистру OCR1A назначено имя OCR*/

#define PWM10 WGM10 /*Регистру WGM10 назначено имя PWM10*/

#define PWM11 WGM11 /«Регистру WGM11 назначено имя PWM11* / #elif defined ( AVR ATmega64 ) I I defined ( AVR ATmegal28 )

#define OC1 PB5/«Линии PB5 назначено имя OC1*/

#define DDROC DDRB /*Регистру DDRB назначено имя DDROC*/

#define OCR OCR1A/*Регистру OCR1A назначено имя OCR*/

#define PWM10 WGM10 /«Регистру WGM10 назначено имя PWM10*/

#define PWM11 WGM11 /*Регистру WGM11 назначено имя PWM11*/ #else/*Если обнаружен неизвестный тип МК*/

#error "Dont know what kind of MCU you are compiling for" #endif/*Досрочный выход при неизвестном типе МК*/ #if defined(СОМ11)

#define XCOMll COMll /*Рег. COMll назначено имя XCOMll*/ #elif defined(COM1A1)

#define XCOMll COM1A1 /*Рег. COM1A1 назначено имя XCOMll*/ #else

#error "need either COM1A1 or COMll"

#endif /«Досрочный выход при отсутствии СОМ1А1 или COMll*/ enum { UP, DOWN } ;/ * Переменные UP, DOWN для ШИМ* /

volatile uintl6 t pwm;/«Переменная 16 бит*/

volatile uint8 t direction;/«Переменная 8 бит*/

/*---------------Прерывание no таймеру-1------------------*/

SIGNAL (SIG OVERFLOWl) /«Прерывание no переполнению таймера*/ { switch (direction) /«Переключатель смены направления ШИМ*/

{ case UP:

if (++pwm == 1023) direction = DOWN; break; case DOWN:

if (--pwm -- 0) direction = UP; break;

/♦Увеличение яркости*/ /* E ели мак симальное значение */ /* Смена направления*/

/♦Уменьшение яркости*/ /«Если минимальное значение*/ /«Смена направления*/

OCR = pwm; /«Занесение очередного значения в регистр ШИМ*/

/*----------------Начальная инициализация-----------------*/

void ioinit (void)

{ TCCR1A = BV (PWM10) i BV (PWM11) i BV (XCOMll) ;

TCCR1B = BV (CS10) ;/«Настройка таймера-1*/

OCR =0;/«Нулевое значение в регистре ШИМ*/

DDROC = BV (ОС1); /«Настройка линии светодиода на выход*/ timer enable int ( BV (TOIE1)); /«Разрешение таймера-1*/ sei ();/«Разрешение прерываний*/

/*--------------int ma.in (void) { ioinit () ;

for (;;);

return (0);

-Основная программа-

/«Начальная инициализация регистров*/ /«Бесконечный цикл с прерываниями*/

/«Окончание программы*/

uments/DOC0839.PDF, 1,6 Мб. Из этого файла берется ее условное обозначение (рис.3) и определяется, что название "OC1" относится к линии порта PB3 и выводу 15 МК.

В DATASHEET приведена типовая схема включения микросхемы и указаны номера выводов MISO, MOSI, SCK, RES, необходимые для подключения адаптера программатора. Теперь нетрудно составить схему "быстрого старта" (рис.4). Тактирование МК осуществляют кварцевый резонатор ZQ1 и два конденсатора С2, С3. Керамический конденсатор С1 должен располагаться в непосредственной близости от выводов питания VCC, GND. Микросхему DD1 устанавливают в 20-выводную панель. Разброс частоты ZQ1 - 3...5 МГц.

Разъем XP1 может иметь два разных варианта включения, что указано в цоколевке контактов в скобках. Соответственно под адаптер стандарта AVR910 или STK200 (см. "Ступень 1"). Ответной частью в любом случае будет 10-контактная розетка IDC-10F. Если адаптер имеет буферную микросхему, то питание на нее поступает через линию VCC разъема XP1.

Практическая работа

Все составляющие проекта разложены по полочкам, настало время собрать их вместе в определенной последовательности.

1.Запустить на выполнение текстовый редактор PN: "Пуск - Программы - WinAVR - Programmers Notepad". Закрыть окно New, чтобы оно не мешало работе. Загрузить файл демонстрационной Си-программы: "File - Open - <выбрать путь C:\WinAVR\examples\demo\demo.c> - Открыть". Произвести из начального меню компиляцию программы: "Tools -make all", дождаться надписи в нижнем окне экрана "Process Exit Code: 0" (рис.5). После этого в папке с Си-программой появятся 10 новых файлов, среди которых hex-файл demo.hex с кодами прошивки МК.

2.Запустить на выполнение программу PonyProg версии 2.06с: "Пуск - Программы - PonyProg - PonyProg2000" (считается, что эта программа ранее была установлена на компьютер при выполнении заданий из "Ступени 1"). При первом

RESET (RXD) PD0 (TXD) PD1 XTAL2 XTAL1 (INTO) PD2 (INT1) PD3 (ТО) PD4 (Т1) PD5 GND

РВ7 (SCK) РВ6 (MIS0) РВ5 (M0SI) РВ4

РВЗ (0С1) РВ2

РВ1 (AIN1) РВО (AIN0) PD6 (ICP)



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11]