Freakazoid писал(а):
Хочу собрать тестер компонентов на ATMega 328p. Чем прошить ATMega 328P?
Можно прошить самодельным Arduino ISP программатором сделанным из Arduino.
Вложение:
программируем.jpg [ 19.94 КБ | Просмотров: 14279 ]
И кратко расскажу как прошить.
Теория
ISP (In-System Programming) расшифровывается как внутрисхемное программирование. Это технология, которая позволяет программировать микроконтроллер, установленный в устройство.
Существует 2 основных подхода внутрисхемного программирования:
1 С использованием программатора. В этом случае программатор работает напрямую с памятью микроконтроллера, самостоятельно размещая байты прошивки по нужным адресам. Микроконтроллер в этом процессе не участвует.
2 С использованием загрузчика. Загрузчик, он же бутлоадер (от английского bootloader) - это программа, записанная обычно в конце ПЗУ микроконтроллера, которая берет на себя функции программатора. При включении микроконтроллера управление сначала передается загрузчику. Он проверяет наличие определенных условий, сообщающих о необходимости перейти в режим программирования. Если условия не выполнены, то управление передается основной программе, в противном случае загрузчик принимает данные по заранее определенному интерфейсу и размещает их в ПЗУ. Таким образом микроконтроллер программирует сам себя.
Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика, что позволяет программировать микроконтроллер с помощью самого микроконтроллера. Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.
ISP-программатор из Arduino
Аппаратную часть можно сделать из любой Arduino. Все разновидности ардуино-плат абсолютно совместимы друг с другом - если вас заинтересовал проект на ArdinoNano - ничто вам не помешает реализовать его на обычной Ardino(Freeduino) или ArdinoMega(SeeduinoMega), причём ни в коде ни в схеме переделывать ничего не придётся. Можно и наоборот, например, с «меги» на «мини» - лишь бы выводов/памяти хватило (часто в проектах применяются откровенно избыточные платы). Так же никакой разницы нет в выборе конкретной платы внутри размерного ряда — берём проект для ArduinoDiecimila(DFRduino) и спокойно делаем его на UNO(CraftDuino) и наоборот! Нет никакой принципиальной разницы, кто сделал эту плату и как она называется - это не айфон, качественно можно собрать такую плату и в подвале.
Для примера возьмем Arduino UNO, у меня сделано на Arduino nano, но UNO крупнее и проще для понимания в рисунках.
Открываем Arduino IDE
Вложение:
ArduinoISP example.png [ 42.95 КБ | Просмотров: 14279 ]
и заливаем в Arduino Uno sketch называющийся ArduinoISP (File -> Examples -> Arduino ISP)
Для предотвращения автоматической перезагрузки платы-программатора, между ее выводами Reset и GND нужно установить электролитический конденсатор на 10мкФ.
Вложение:
Two Arduino UNO ISP.jpg [ 211.14 КБ | Просмотров: 14279 ]
Вместо целевой платы можно просто подключить микропроцессор.
Вложение:
328.jpg [ 113.77 КБ | Просмотров: 14279 ]
В прошивке используются линии SPI (Serial Peripheral Interface - последовательный периферийный интерфейс). Выводы MOSI, MISO и SCK должны быть соединены, а вывод 10 Ардуино-программатора подключается к выводу Reset. Еще 2 провода нужны чтобы подать питание. Внутрисхемное программирование использует 4х проводный протокол SPI для программирования и поддерживается почти всеми AVR мк. Главный недостаток – при определенных установках фьюзов может быть не пригодным для использования. Тогда используют HVSP (High Voltage Serial Programming) высоковольтное последовательное программирование, которое не зависит от состояния фьюзов. HVSP требует внешний источник 12В и транзисторный ключ для подачи высокого напряжения на RESET пин, но описание данного вида программатора выходит за рамки короткого ответа.
Для прошивки использовать SinaProg.
Вложение:
sina1.jpg [ 41.35 КБ | Просмотров: 14279 ]
В блоке Hex-file выбираем hex или eep (первый - прошивка, второй - содержимое энергонезависимой памяти).
В блоке Flash есть кнопки:
Program - запись hex-файла в микроконтроллер(возможно, когда выбран Hex-file);
Verify - проверка прошивки, что в микроконтроллере, и hex-файла(проще говоря, их сравнение), если всё норм - программа говорит OK;
Read - считать hex-файл.
С блоком EEPROM всё по аналогии.
Блок Device. Есть все популярные микроконтроллеры фирмы ATmel, в частности ATmega328P, ATmega8, ATtiny13, ATtiny2313 и всякие другие, которые можно программировать используя сделанный ArduinoISP.
Нужно из всего списка выбрать микроконтроллер который будем программировать: AT90CAN128, AT90CAN32, AT90CAN64, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647, AT90USB82, AT90s1200, AT90s2313, AT90s2323, AT90s2333, AT90s2343, AT90s4414, AT90s4433, AT90s4434, AT90s8515, AT90s8535, ATmega103, ATmega128, ATmega1280, ATmega1281, ATmega1284P, Atmega128RFA1, ATmega16, ATmega161, ATmega162, ATmega163, Atmega164P, ATmega168, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega324P, ATmega325, ATmega3250, ATmega328P, ATmega329, ATmega3290 ,ATmega3290P, ATmega329P, ATmega48, ATmega64, ATmega640, ATmega644, ATmega644P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2343, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861, ATtiny88, ATxmega64A1, ATxmega128A1, ATxmega128A1D, Atxmega192A1, ATxmega256A1, ATxmega64A3, ATxmega128A3, ATxmega192A3, ATxmega256A3, ATxmega256A3B, ATxmega16A4 , ATxmega32A4, ATxmega64A4, ATxmega128A4
Кнопка Search, если её нажать, то программа попытается прочитать сигнатуры того микроконтроллера, который подключен к программатору. Потом может ответить "OK" или "ERROR".
В блоке Fuses есть предустановки для ATmega8 и Atmega32 для работы на разных частотах.
Кнопка Program - записать предустановки
Кнопка Programmer, тут выбирается тип программатора.
Для программирования произвести подключение программатора к микроконтроллеру.
Произвести настройки, выбрать прошивку и нажать Program.
Вкратце это все.
Фото моего Arduino ISP программатора. Не влезло в отведенные рамки сообщения