• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

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 нужно сделать только один раз.

  1. Первый шаг заключается в использовании ATmega328, который действительно содержит загрузчик.
  2. В Arduino IDE, загрузите код ArduinoISP из файлов.
  3. Убедитесь , что SW1 на программаторе установлен на  значение "AUTO" и загрузите  ArduinoISP на мастер ATmega328.
    Переключатель SW1 в "MAN", чтобы предотвратить сбрасывания Мастера,  и SW2 в "Off".
  4. Поместите пустой ATmega328 (один без загрузчика) в гнездо в 'Target' и переключите  SW2 в "On".
  5. В Arduino IDE, из меню Tools | MENU выберете Arduino в качестве поставщика услуг Интернета.
  6. В Arduino IDE, убедитесь , что в  "Arduino Uno" выбран чип  ATmega328.
  7. Нажмите Загрузить.

 

 

Программатор может программировать 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.
  • Подождите , пока она не будет завершена , а затем загрузите код и тайминги.

Кстати, загрузка этих чипов всегда выдает сообщение об ошибке, однако загрузка проходит успешно.

 




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 379



          

Радио для всех© 2024