Программатор PonyProg является свободно распространяемой GNU-программой с открытым исходным кодом и предназначен для программирования flash-микросхем с последовательным доступом. PonyProg написан итальянцем Клаудио Ланконелли (Claudio Lanconelli) и существует в Windows (9x/ME/NT/2000/XP) и Linux версиях.

Имеет поддержку русского языка. Может использовать параллельный порт (LPT) или стандартный последовательный порт (COM).   

Поддерживаемые PonyProg микроконтроллеры семейства AVR.

AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, AT90S4434, AT90S8515, AT90S8535, AT90S2323, AT90S2343, AT90S2333, AT90S4433, AT90S4434, AT90S8535, AT90S8534
ATmega103, ATmega161, ATmega163, ATmega323, ATmega128, ATmega8, ATmega16, ATmega64, ATmega32, ATmega162, ATmega169, ATmega8515, ATmega8535, ATmega44, ATmega88, ATmega168, ATmega164, ATmega324, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATtiny12, ATtiny15, ATtiny26, ATtiny2313, ATtiny13, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90can32, AT90can64, AT90can128.

PonyProg поддерживает ряд популярных программаторов, в том числе STK200/300, JDM/Ludipipo, EasyI2C и DT-006 AVR от Dontronics.

С помощью PonyProg можно загружать данные в микроконтроллеры Atmel AVR и MicroCHIP PicMicro, а также программировать микросхемы памяти с последовательным доступом (I2C Bus, Microwire, SPI eeprom).

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

Чтобы загрузить уже готовую программу с помощью PonyProg в микроконтроллер AVR, можно воспользоваться упрощенным вариантом программатора STK200. Это устройство состоит из 25-контактного разъема для параллельного (LPT) порта, 4-х резисторов (150 Ом) и соединительного кабеля, длина которого не должна превышать 1,5 метра.
    
Схема простого программатора AVR

Разъем, подключаемый к параллельному порту ПК, показан со стороны пинов
Один из самых простых программаторов состоит из 25-контактного разъема для параллельного (LPT) порта, 4-х резисторов (150 Ом) и соединительного кабеля, длина которого не должна превышать 1,5 метра. Резисторы необходимы для предохранения параллельного порта в случае неправильного монтажа и некоторых других неприятностей.

    Схема получила свое название от отладочных плат Atmel для быстрого начала работы с микроконтроллерами AVR. Если вы хотите, чтобы ваш программатор почти в точности соответствовал классическому программатору STK200, то следует поставить перемычку для определения программатора программным обеспечением. Перемычка должна соединять выводы 2-12.

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

Рассмотрим последовательность действий по загрузке программы в микроконтроллер на примере ATmega8.


При первом запуске PonyProg попросит произвести калибрацию и указать тип используемого программатора с помощью двух предупреждающих сообщений.

Сделаем так, как он просит. Зайдем в меню "Setup" и выберем пункт "Calibration".

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

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

Если что-то пошло не так, калибрацию стоит провести заново.

Теперь выберем в меню "Setup" пункт "Interface Setup...".

В появившемся окне выберем параллельный порт и способ работы с этим портом (в Windows2000/XP мы должны выбрать "AVR ISP I/O" и использовать стандартный LPT-порт).

Внимание! Не указывайте порт, к которому подключен модем: это может вывести его из строя.

Указать тип микроконтроллера можно, воспользовавшись меню "Device" - "AVR micro".


    Когда все приготовления выполнены, загрузим в PonyProg файл с откомпилированной программой.

Подсоединим шлейф программатора STK200 к программируемому микроконтроллеру, убедимся, что все подключено правильно, и подадим питание. Если корпус ATmega8 не начал заметно нагреваться, можно загружать подготовленную программу во FLASH-память микроконтроллера. В меню "Command" выберем пункт "Write Program (FLASH)" и дождемся успешного завершения загрузки.

Программатор PonyProg позволяет также загружать данные в EEPROM-память, считывать данные из памяти микроконтроллера, стирать память и программировать FUSE-биты.