AVR программатор для Arduino
Хотя процедура программирования Arduino как In-System хорошо документирована , я захотел сделать автономный программатор вместо того, чтобы соединять провода между двумя Arduinos.
Методология программирования ATMEL In-System
Система использует обычную трехпроводную SPI шину микропроцессора (MOSI, MISO и SCK). Программатор действует как Master на шине SPI, так что выбор времени проведения сброса ПИН низкого уровня является наиболее легко достигаемым. Поэтому, в дополнение к трем SPI линиям между программатором и «целевым» чипом, ввел четвертую линию от программатора для управления сброса ПИН. Благодаря работе Дэвида А. Меллиса, в среде Arduino все это есть ( называется ArduinoISP) можно найти в папке с примерами. Также требуетя пятый провод (земля) между программатором и чипом. Рекомендации Atmel AVR обеспечивают гибкость в том, как работает целевая чип. Swich может отключить питание от целевой микросхемы, если это требуется, без необходимости отключения питания всего программатора.
Схема программатора
FT232R USB последовательный конвертер 5 вольт программатора, подключается к гнезду USB компьютера. Драйвер доступен с сайта FTDI . Я использовал адаптер BV104 сделанный ByVac .
Программирование ATmega328 такое же как в Arduino
Подключаем желтый светодиод к контакту ATmega328 - 19 (что было бы "Hello World digitalPin 13" в Arduino). Остальные светодиоды , как это рекомендовано в эскизе ArduinoISP:
// Помещаем светодиод (с резистором) на следующих штырьки:
// 9: Heartbeat - показывает программатор работает
// 8: Ошибка - Загорается, если что-то пойдет не так (используйте красный цвет, если это имеет смысл)
// 7: Программирование - Соединен с ведомым
Пятый светодиод показывает, когда переключатель SW2 подает питание на розетки.
Переключатель SW1 позволяет сбросить мастер, чтобы управлять вручную, или автоматически с помощью сигнала DTR из RS232R. Это предусмотрено, если мастер потребует перепрограммирования время от времени; например, для запуска Bootloader вместо ArduinoISP. После того, как новый код находится в месте, SW1 должен быть переключен.
Печатная плата
Травление и компоновка
А вот готовая плата, питание, светодиоды мигают ...!
Использование программатора
Установка загрузчика
Загрузчик лишь небольшая программа, которая постоянно находится в ATmega328, чтобы его легко загружать программы необходимо использовать последовательный порт USB в сочетании с Arduino IDE.
- Выберите AUTO на программаторе (SW1 вниз).
- Убедитесь, что Мастер ATmega328 на месте.
- Откройте Arduino IDE, загрузите OptiLoader код и загрузить его на Master.
- Убедитесь, что SW2 выключен (вверх), вставьте целевой ATmega328 и переключатель SW2 в положение ON (вниз).
- Откройте Serial Monitor Arduino IDE чтобы инициировать сброс.
- Экран Serial Monitor начнет показывать прогресс загрузки.
Загрузка программы в чип без начального загрузчика
Первый очевидный вопрос: почему вы хотите сделать это? Ну, загрузчик просто помогает легко загружать программы к ATmega328, используя последовательный порт USB. Она занимает пространство памяти и это замедляет программу, начиная при подаче питания на микросхему, так как код начального загрузчика необходимо определить.
Эта диаграмма показывает процесс, связанный с загрузкой программы из Arduino IDE в целевой чип ATmega328 без использования начального загрузчика.
Шаги 1, 2 и 3 нужно сделать только один раз.
- Первый шаг заключается в использовании ATmega328, который действительно содержит загрузчик.
- В Arduino IDE, загрузите код ArduinoISP из файлов.
- Убедитесь , что SW1 на программаторе установлен на значение "AUTO" и загрузите ArduinoISP на мастер ATmega328.
Переключатель SW1 в "MAN", чтобы предотвратить сбрасывания Мастера, и SW2 в "Off". - Поместите пустой ATmega328 (один без загрузчика) в гнездо в 'Target' и переключите SW2 в "On".
- В Arduino IDE, из меню Tools | MENU выберете Arduino в качестве поставщика услуг Интернета.
- В Arduino IDE, убедитесь , что в "Arduino Uno" выбран чип ATmega328.
- Нажмите Загрузить.
Программатор может программировать ATtiny44 и ATtiny84 чипы. Чтобы запрограммировать эти чипы необходимо включить свои "подписи" в boards.txt файла Arduino IDE. В соответствии с основной платой, я использовал разъем ZIF. 8-контактный разъемы, похоже, не будут доступны, но можно использовать 14-контактный разъем ..
Не стоит показывать схему, это так просто. Просто подключите 6 контактов на заголовке ISP на соответствующие контакты разъема ATtiny85
'README' включены в загруженный пакет содержит полные инструкции по установке его в Arduino IDE.
Убедитесь в том , что выбран правильный Attiny85 @ 1MHz (внутренний ocillator; БПК отключен) , которая обеспечивает правильную синхронизацию для задержки Arduino функции ().
Без кварца ATtiny85 работает на частоте 8 МГц, но, по умолчанию, делится на 8. Чтобы запустить чип на 8MHz и обеспечивать такие функции, как задержка ()с правильным выбором времени необходимо:
- Выберите Attiny85 @ 8MHz (внутренний ocillator; БПК отключен) в меню платы , а затем выберите Tools | прожог Bootloader.
- Подождите , пока она не будет завершена , а затем загрузите код и тайминги.
Кстати, загрузка этих чипов всегда выдает сообщение об ошибке, однако загрузка проходит успешно.