Выкладываю свою версию обсуждаемого здесь программатора.
Нажмите для просмотра прикрепленного файла1. Исходник переделан под IAR.
2. Структура программы приведена к нормальному виду. Ну и бардак там был!
Теперь текст разбит на логически завершенные модули. Интерфейс каждого
модуля максимльно простой и находится в соответствующем h-файле.
Никаких переменных с видимостью больше, чем в одном модуле.
Никаких магических чисел, все вычисляется на основе заданных констант.
3. Операция чтения байта по UART сделана неблокирующей. Это позволило
выполнять в фоне другие задачи. Пока это только управление светодиодом.
Для парсера команд введен таймаут, который задается константой в тексте.
4. Светодиод теперь делает короткие вспышки, когда программатор
находится в standby (питание подано, а кабель не подключен).
Когда кабель правильно подключен, светодиод горит непрерывно.
Когда программатор находится в режиме терминала, светодиод равномерно мигает.
5. Немного изменен формат сообщений в режиме терминала. Выкинуто всё лишнее.
Переписана обработка вводимых пользователем цифр.
6. Разводка платы сделана так, что для тактирования target-а
задействован вывод OC1A. Туда все время выдается частота 1 МГц.
7. Исправлен пересчет длительности SCK. В исходном варианте длителности
брались для AVR ISP, а не для STK-500. Правда, максимальную скорость
1.8 МГц получить не удалось, получилось максимум 600 кГц на кварце 14.7456 МГц.
8. Еще исправлено и переделано много чего.
9. Плата разведена под стандартный корпус 50 x 35 x 20 мм.
Плата односторонняя. Добавлен выключатель, который может подавать питание
на target от USB.
Нажмите для просмотра прикрепленного файлаВ архиве проект для IAR, печатная плата и схема в формате PCAD 2006 и в Adobe PDF.
Нажмите для просмотра прикрепленного файлаP.S. Прошивка пока протестирована слабо, нет под рукой широкого выбора кристаллов.