\
МИКРОКОНТРОЛЛЕРЫ
\
Однако, программирование на уровне чистого ассемб-
лера, элементарных инструкций, представляет собой разве
что чисто академический интерес. Серьезный проект, про-
граммируя таким образом, создать крайне затруднительно.
Да это и не целесообразно. Например, для того, чтобы запи-
сать константу $1234 в двухбайтный регистр X, необходимо
выполнить две инструкции AVR:
$34 -> XL
$12-> ХН
Сразу напрашивается возможность записывать:
$1234->Х
и чтобы при этом компилятор обо всем позаботился сам, тем
более, что эффективность кода программы при этом никак
не пострадает.
Поэтому в основном в АВ программирование ведется на
более высоком уровне с использованием многобайтных пе-
ременных. При этом максимальный размер переменной мо-
жет составлять 64 бита. Макрооперации не снижают эффек-
тивности кода, просто представляют набор действий, кото-
рый Вам все равно пришлось бы сделать, в более удобном,
сжатом виде.
Аналогичным образом реализована работа с перемен-
ными EEPROM.
Например, если Вы объявили однобайтные переменную
SRAM “SVAR” и переменную EEPROM “EVAR’' и требуется
содержимое “SVAR” переписать в “EVAR”, то для этого на
уровне элементарных операций потребуется выполнение
цепочки действий
(рис. 4).
Вместо этого компилятор допускает простую запись:
SVAR -> EVAR
при абсолютно одинаковом результате.
Н астройка периф ерийны х устройств
AVR микроконтроллеры достаточно хорошо вооружены
набором таких устройств: таймеры, USART-ы, АЦП, SPI, и
т.д. В некоторых есть даже USB. Настройка этих устройств
производится путем записи необходимых битов в соответ-
ствующие регистры управления. Процесс очень неудобный.
Тем более, что набор битов для настройки некоторых свойств
может находиться в разных регистрах.
I Sub
$60
->
XL
$00
->
ХН
Для автоматизации и визуализации этого процесса, в
Algorithm Builder предусмотрены специальные компоненты
алгоритма, которые так и называются: “настройщики”. В са-
мом алгоритме они отображаются как серые прямоугольни-
ки с названием настраиваемого устройства, а для его редак-
тирования надо сделать на нем двойной щелчок мышью, и
раскроется окно настройки. В нем останется только выбрать-
из готового списка необходимые свойства, а все остальное
сделает компилятор. Например, нужно настроить АЦП мик-
росхемы ATmegal 28 следующим образом:
- пределитель частоты - СК/64;
- вход - дифференциальный усилитель с коэффициен-
том 10 и выводами ADC0 и ADC1;
- внутреннее опорное напряжение 2,56 В с внешним кон-
денсатором на выводе AREF;
- прерывание по окончании преобразования должно быть
разрешено;
- процесс преобразования при этом должен быть начат;
- результат преобразования должен быть смещен влево,
в сторону старшего, 15-го бита.
Для того, чтобы все это установить, необходимо запи-
сать $Е9 в регистр ADMUX и $СЕ в регистр ADCSRA. Для
определения этих констант вручную, необходимо открыть
описание микроконтроллера и определить значение каждо-
го бита. А в Algorithm Builder все это проделывается с помо-
щью настройщика со специальным подготовленным окон-
ным интерфейсом, который будет выглядеть следующим
образом
(рис. 5).
Справа, под кнопками, отображаются сформированные
компилятором операции, которые будут помещены в Про-
грамму. Несколько левее кнопок расположены флажки ре-
гистров, которые задействованы в настройке. При необхо-
димости часть из них можно отключить, если нужно изме-
нять не все свойства. В данном примере не изменяется бит
ADHSM (High speed mode), принадлежащий регистру SFIOR,
поэтому его флажок отключен.
Под флажками некоторых регистров может быть допол-
нительный флажок “exclusive", который означает, что этот
регистр используется не только данным устройством, и про-
изводящаяся настройка может разрушить уже существую-
щую настройку какого-либо другого устройства, который
использует этот же регистр. При этом, если этот флажок от-
ключить, то этот регистр будет только модифицирован, не
изменив не относящиеся к настраиваемому устройству биты,
правда при этом код получится несколько длиннее. В приве-
денном примере, в регистре SFIOR расположен бит “ADHSM”,
задающий повышенную скорость работы АЦП. Одновремен-
но в этом же регистре расположен бит “PUD”, управляющий
подключением подтягивающих резисторов ко входам мик-
роконтроллера, биты сброса пределителей таймеров, кото-
рые к АЦП не имеют никакого отношения.
■Ц
Рис. 3
0
->
P ortC .l
Ret.
Г ' ^ - = 3
-------------
.
%
Е
Е
Т
Д
Е
=
1
J
Ожидание
окончания
предыдущей
записи
бЕУАЕ
->
ЕЕАР.
Запись
адреса
переменной
ЗУАК
->
ЕЕШ
Запись
в
регистр
данных
ЕЕРкОМ
1
->
ЕЕНИЕ
Подготовка
разрешения
записи
1
->
БЕЦЕ
Старт
записи
Рис. 4
Радиолюбитель - 0 1 /2 0 0 7 |
|43|
предыдущая страница 43 Радиолюбитель 2007-01 читать онлайн следующая страница 45 Радиолюбитель 2007-01 читать онлайн Домой Выключить/включить текст