Компиляция выполняется с помощью AVR-GCC. Выполнение обычно сопровождается файлом Makefile, то есть файлом, берущим на себя управление всеми этапами создания file.hex, который будет перенесен на чип. Для передачи кода с компьютера на чип вы должны использовать программу avr-dude.
В системах GNU/Linux нужно установить пакет AVR-GCC и AVR-dude, которые в таких раздачах, как Ubuntu, уже включены в набор пакетов, доступных в репозитории. Для OS X существуют каналы AVR-GCC, такие как AvrMacPack. AVR-GCC является программой без графического интерфейса, которая вызывается с помощью сценария. Для облегчения действий мы можем скачать AVR8 Burn-O-MAT, графический интерфейс для AVR-dude, который упрощает операции конфигурации для fuse и передачи программного обеспечения на чип AVR.
WinAVR – это набор программ для ОС Windows, полезный для разработки встроенного программного обеспечения для чипа AVR: включает в себя компилятор (avr-gcc), программатор (avr-dude), а также отладчик (avr-gdb). С WinAVR вам не нужен IDE «Ардуино» и скетчи пишутся на языке С, без готовых функций.
Это означает, что, чтобы настроить выводы в качестве входов или выходов, необходимо работать со специальными регистрами и непосредственно с битами.
Свободно программируя, мы больше не будем иметь секции setup и loop скетча. Основной цикл мы будем создавать с помощью бесконечного цикла while:
while (1) {
… команды для повтора …
}
Мы не будем разбирать программирование на С для ATtiny. Я только покажу вам некоторые основные шаги и расскажу, как действовать с этого момента. Следующие действия могут показаться сложными, но после небольшой практики и чтения руководства по программированию на языке С усвоенный вами материал станет гораздо понятнее.
Конфигурация выводов осуществляется путем изменения битов в специальном регистре, называемом DDRB. Каждый бит указывает, является ли вывод входным или выходным. Чтобы включить или выключить вывод, изменяется другой специальный регистр PORTB. Ниже предоставлен полный список действий для мигания светодиода.
#include
#define F_CPU1000000UL
#include
int main(void)
{
DDRB |= (1 << PB0); /* конфигурирую PIN0 в качестве выхода */
while(1) {
PORTB &= ~(1 << PB0); /* зажигаю светодиод */
_delay_ms(1000);
PORTB |= (1 << PB0); /* гашу светодиод */
_delay_ms(1000);
}
return 0;
}
Сохраняем текст в файл с именем main.c. Для компиляции исходного кода, вы должны использовать AVR-GCC и APH-objcopy. В результате компиляции создается файл hello.hex, который в этом случае может быть намного меньше, чем аналогичный файл, созданный в IDE «Ардуино».
avr-gcc – DF _CPU=8000000UL – mmcu=attiny85 – Os – о hello.out
hello.с avr-objcopy – O ihex – R.eeprom hello.out hello.hex
Программирование ATtiny осуществляется с помощью команды avrdude, указывается тип чипа (Т85 означает ATtiny85), программатор (usbasp) и файл для передачи (hello.hex).
avrdude – р t85 – с usbasp – Р usb – е -U flash: w: hello.hex
Глава 10
От прототипа к готовому продукту
В этой главе мы рассмотрим, как превратить наш прототип на макетной плате в профессиональную печатную плату. Мы научимся проектировать печатные платы при помощи программ gEDA и Fritzing.
В предыдущих главах мы научились собирать прототипы на макетных платах с помощью проводов и паять их (на макетную плату Stripboard) для более длительного хранения. Создание прототипов с платой Stripboard и паяльником является довольно длительной операцией: необходимо изучить расположение компонентов, припаять их, а также расположить все провода в нужном порядке, один за другим. В конце концов в нашей творческой деятельности нам потребуется произвести ряд электронных плат, или придать более профессиональный вид нашему новому творению. Сегодня очень легко производить печатные платы (printed circuit board или РСВ): мы можем построить их у себя дома или обратиться к одному из многочисленных онлайн-сервисов, которые могут произвести даже одну плату по доступной цене.
Печатные платы
Во времена термоэлектронных ламп электронные сборки осуществлялись с помощью специальных решеток, снабженных контактами, к которым прикреплялись и спаивались провода и компоненты. Процесс сборки не был механизирован, потому что для этого не хватало технологий, и работа была полностью ручной.
Рис. 10.1. Внутренняя часть лампового радио с электропроводкой
Вскоре после 1950 года начали распространяться печатные платы, то есть площадки из изоляционного материала, снабженные электрическими соединениями и отверстиями для крепления электронных компонентов, которые припаиваются к контактам паяльником с помощью олова. Этот тип электронной сборки называется «монтаж в отверстия» (Through Hole Technology, ТНТ). С распространением печатных плат были сокращены сроки производства и число ошибок при сборке. Со временем эта технология была усовершенствована и сделала возможной изготовление плат, сформированных из нескольких слоев. Сегодня можно встретить более распространенную модель с 8 слоями, но возможно и создание плат с 20 слоями. Примерно с 1970 года начали появляться печатные платы по технологии поверхностного монтажа (Surface Mounting Technology, SMT), которые значительно уменьшили время производства, потому что больше нет необходимости дырявить площадки, так как компоненты могут быть просто приложены к плате и припаяны к поверхностным контактам, которые также называются контактными площадками. Монтаж на поверхность может быть автоматизирован.
В цепи, образованной из нескольких слоев, контакты между уровнями реализуются с помощью отверстий, называемых «переходными» и покрытых металлическим материалом. Электрические соединения выполнены при помощи тонкой медной фольги посредством химической или механической гравировки, образуя таким образом печатные проводники и контактные площадки вокруг отверстий.
Рис. 10.2. Контактные площадки, печатные проводники и одно переходное отверстие