Архитектура AVR в примерах/Простейшее устройство
В данной работе мы соберем простейшее устройство, пригодное для выполнения последующих лабораторных работ, на основе микроконтроллера ATmega8 (или иного, совместимого по цоколевке). В некоторой степени, это устройство повторяет конструкцию плат Arduino Uno и Arduino Nano, которые также можно использовать для выполнения работ данного раздела.
Перед началом
[править]Для устройства нам потребуются:
- Микроконтроллер ATmega8 (или совместимый по цоколевке) в DIP-корпусе (или на соответствующей плате-адаптере) с установленным загрузчиком Optiboot, настроенным на выбранную тактовую частоту процессора (7.3728 MHz) и скорость передачи данных (115200 bit⁄s);
- при наличии отдельного программатора можно обойтись микроконтроллером без загрузчика;
- адаптер «USB—асинхронный порт» (на основе PL2303-HX, CP2101, или иной);
- (необязательно) источник питания (3 ÷ 5 V, с учетом рабочего напряжения используемого адаптера асинхронного порта), желательно — с возможностью установить ограничение по току порядка 10 mA;
- как правило, необходимое питание можно получить с шины USB, для чего на адаптерах и платах разработчика предусмотрены соответствующие выводы;
- макетная панель (англ. breadboard);
- два резистора (порядка 100 kΩ и 250 Ω; ⅛ W), кварцевый резонатор на 7.3728 MHz, три конденсатора (один — порядка 100 nF, два — порядка 22 pF каждый), светодиод на напряжение порядка 1.5 V, кнопка, — подходящие для монтажа на макетной панели;
- все перечисленные компоненты (с точностью до номиналов) уже присутствуют в необходимых для данной работы цепях на платах, подобных Arduino Uno;
- соединительные провода.
Кроме того, для проверки связи с устройством потребуется пакет Avrdude. (Установить этот пакет в Debian и производных от него системах можно командой, подобной # apt-get install -- avrdude
.)
Сборка устройства
[править]- Установим МК на макетной панели, первый вывод — в позиции E10 (занимая, таким образом, вертикальные ряды 10–23.)
- Установим на макетной панели прочие элементы:
- кварцевый резонатор 7.3728 MHz — между выводами 9 и 10 МК;
- два конденсатора 22 pF — между выводами 8–9 и 8–10 МК;
- резистор 100 kΩ — между позицией A10 (вывод 1 МК; сигнал Reset) и шиной + Uи. п.;
- конденсатор 100 nF — между D8 и D10;
- кнопку — A3–A5 и светодиод — F3–F5;
- резистор 250 Ω — между J3 и «общим».
- Выполним следующие соединения компонент собираемой схемы:
- «общий» — J16, E3, желательно — B17 (выводы 8, 22 МК; «общий»);
- + Uи. п. — A16;
- B5–B10 (вывод 1 МК; сигнал Reset);
- I5–I19 (вывод 19 МК; PB5.)
Начальная проверка работоспособности
[править]- Проверим правильность выполненных соединений.
- В частности, можно подключить — с соблюдением полярности — к питающим выводам мультиметр, работающий в режиме измерения падения напряжения на p-n-переходе. Ожидаемый результат измерения — порядка 1.5 V.
- Подключим питание устройства;
- при использовании лабораторного источника питания — установим напряжение 3 ÷ 5 V (но с учетом рабочего напряжения используемого адаптера асинхронного порта) и предельный ток порядка 10 mA;
- при отсутствии иной возможности ограничить ток (в частности — при питании от USB-адаптера) можно включить в разрыв проводника Uи. п. резистор номиналом порядка 56 Ω;
- имеет смысл при первом подключении измерить протекающий через устройство ток; ожидаемые значения — не более порядка 1 mA.
- Сбросим устройство нажатием на кнопку. При этом, светодиод должен мигнуть три раза (в параметрах сборки Optiboot по-умолчанию.)
Подключение к USB
[править]Соединим адаптер «USB—асинхронный порт» с основной платой:
- «общий» с «общим»;
- TxD с A11 и RxD с A12 (выводы 2, 3 МК; RxD, TxD);
- (необязательно) DTR или RTS — с A8;
- только при получении питания с модуля — вывод 3.3 V (или 5 V) модуля с шиной + Uи. п. макетной панели.
Проверим возможность связи с загрузчиком Optiboot используя Avrdude, подобно:
$ avrdude -P /dev/ttyUSB1 -c arduino -b 115200 \ -p atmega8 -U flash:r:flash.hex:i avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9307 avrdude: reading flash memory: Reading | ################################################## | 100% 1.02s avrdude: writing output file "flash.hex" avrdude: safemode: Fuses OK avrdude done. Thank you. $
Помимо вывода выше, успешное выполнение Avrdude приведет к созданию в текущей директории файла
flash.hex
— образа текущего содержания flash-памяти МК.- NB
- Для запуска Optiboot, Avrdude пытается выполнить сброс МК кратковременно изменяя состояние линий RTS и DTR. Если эти линии не соединены с цепью Reset МК (так, на некоторых адаптерах эти линии не разведены вовсе), то сброс следует выполнить вручную, подобно:
- ввести команду выше, не завершая ее нажатием ⏎ Enter;
- нажать на кнопку сброса устройства;
- отпустить кнопку сброса и немедленно завершить ввод команды
avrdude
нажатием ⏎ Enter.