А вот как можно в цикле записать одно и то же значение из temp в 16 идущих подряд ячеек памяти, начиная с нулевого адреса старших 256 байтов памяти:
Напомним, что область пользовательского ОЗУ начинается с адреса $60 (9610
). При попытке записать что-то по меньшему адресу вы обязательно попадаете в какой-то регистр, и результат окажется непредсказуем. Также не следует забывать о том, что последние адреса ОЗУ заняты под стек, который обязательно задействуется, если в программе применяются прерывания. Так, вВстроенный АЦП последовательного приближения входит в состав почти всех МК семейства
Сначала несколько общих слов о встроенных АЦП. Во всех моделях AVR общего назначения они многоканальные и 10-разрядные (за некоторым исключением, например, в ATmega8 из 6 каналов только четыре имеют разрешение 10 разрядов, а оставшиеся два — 8, а в новейшем семействе
Многоканальность означает, что имеется только одно ядро преобразователя, которое по желанию программиста может подключаться к одному из входов через аналоговый мультиплексор, наподобие 561КП2, рассмотренного в
Точность АЦП номинально составляет ±2 LSB, плюс еще 0,5 LSB за счет нелинейности по всей шкале. То есть фактически такой АЦП с точки зрения абсолютной точности соответствует 8-разрядному. При соблюдении всех условий эту точность, впрочем, можно повысить, правда, условия довольно жесткие и включают в себя как «правильную» разводку выводов АЦП, так и, например, требование остановки цифровых узлов на время измерения, чтобы исключить наводки (специальный режим
Чтобы не углубляться в детали этого процесса и не усложнять задачу, мы в дальнейшем поступим проще: предпримем ряд мер, чтобы обеспечить стабильность результата, а абсолютную ошибку скомпенсируем за счет калибровки, которая все равно потребуется. Для этой цели погрешности встроенного АЦП нам хватит и без особых ухищрений, важно только, чтобы показания не «дребезжали». Уменьшение дребезга почти до нуля у нас будет достигаться тем, что, во-первых, на входе канала мы поставим конденсатор для фильтрации неизбежных в совмещенных аналого-цифровых схемах наводок на внешние цепи (фирменное руководство рекомендует еще последовательно с ним включать индуктивность порядка 10 мкГн, но мы без этого обойдемся). Во-вторых, мы будем измерять несколько раз и усреднять значения отдельных измерений.
АЦП в МК AVR могут использовать три источника опорного напряжения на выбор: внешний, встроенный и напряжение питания аналоговой части. Последний вариант, как самый простой, мы и применим — все равно подгонкой масштабов мы заниматься не будем, а все рассчитаем в цифровом виде. Отметим, что выводы аналогового питания сделаны отдельно от цифрового (хотя в простейших случаях это может быть и одно и то же питание, но мы их также разделим). Применение встроенного опорного источника при нестабильном общем питании мы рассмотрим в
Пару слов о самой организации измерений. АЦП последовательного приближения (см.