Сестра Robonaut 2 готова к показательным выступлениям

О первой модели космического робота я уже писал («Роботы-космотнавты», 11 мая, 2012). Он давно (с 2011 г) и вполне успешно «трудится» на орбите – складывает бумагу в стопки, клацает тумблерами, работает за пультами. Точнее, умеет клацать и работать. Как признались сами космонавты, операции более ответственные, чем раздача кока-колы роботу не доверяются. Оно, в принципе и понятно – с его то умениями…

Команды переходов. Переход по условию

Следующие команды называют еще командами ветвления, поскольку переходы по ним могут выполняться, а могут и игнорироваться – все зависит от результатов выполнения тех или иных условий. Данные для проверки и принятия решения о переходе обычно хранятся в регистре флагов SREG. Переходы возможны лишь на 64 команды вперед/назад относительно текущего адреса.

Команды переходов

С работой стека и регистром флагов мы познакомились, поэтому вполне готовы разобрать операции, которые их используют, и начнем мы с безусловных переходов и подпрограмм:

Работа со стеком. Окончание

Итак, со стеком мы почти закончили, осталось лишь сделать некоторые уточнения. Основная ошибка начинающего программиста, как мы выяснили, – плохо продуманная работа со стеком, которая не позволяет микроконтроллеру выйти из подпрограммы. Следующая – неправильное размещение стека. В предыдущей части статьи наш стек условно располагался в старших адресах программной памяти (FFFF и ниже), но такая схема совсем не обязательна.

Система команд. Работа со стеком

С арифметическими операциями мы разобрались, можно переходить к переходам, простите за каламбур, но прежде чем познакомится с этим типом команд, нам просто необходимо разобраться со стеком, без которого многие переходы обойтись не могут. Кроме того, стек очень полезен для временного хранения данных и одновременно (причем обязательно, без нашего желания и даже спроса) используется микроконтроллером при обработке подпрограмм и прерываний.

Система команд. Логические и арифметические операции

В предыдущей части статьи мы с вами разобрали что собой представляет регистр статуса SREG. Это нам очень пригодится сегодня, поскольку все, чем мы будем заниматься (мы, если вы не забыли, собирались производить арифметико-логические операции над данными с помощью арифметико-логического устройства (АЛУ) – главного математика в микроконтроллере), так или иначе изменяет флаги этого регистра.

Система команд. Часть II

В предыдущей статье мы рассмотрели команды, с помощью которых данные из ОЗУ пересылаются в регистры общего назначения. Для обратной пересылки (из РОН в ОЗУ) существует набор команд ST и STD. Отдельно рассматривать мы их не будем, поскольку действия с ними производятся так же, как и с командами LD и LDD. К примеру:

Ldd R6, Y+6 – пересылка копии данных в регистр R6 из ячейки ОЗУ с адресом Y+6;
Std Y+6, R6 - пересылка копии данных из регистра R6 в ячейку ОЗУ с адресом Y+6;

Регистры общего назначения. Система команд

Как я уже говорил, в отличие от микропроцессоров, в микроконтроллере регистры общего назначения, порты и ячейки памяти располагаются в одном адресном пространстве. Таким образом, упрощается система команд, программирование микроконтроллера становится более наглядным и, главное, расширяется область применения регистров.

AVR контроллер. Порты ввода/вывода

О портах ввода/вывода я уже упоминал, когда мы говорили о составе микроконтроллера. Сегодня мы рассмотрим узел портов подробнее. Для чего они служат вы помните – связь с периферийным (внешним) оборудованием. Это могут быть индикаторы, реле, звонки (исполнительные устройства) или кнопки, датчики физических величин, линии данных (устройства ввода). Поскольку один тип устройств требует данные, а второй их выдает, порты должны уметь и принимать, и передавать.

AVR контроллер. Часть III

Тактовый генератор
Имеется в виду не схема, которая “делает” определенную частоту, а сложный, скажем так, агрегат, синхронизирующий работу всех узлов микроконтроллера – процессор, АЛУ, память, внешние порты и т.д. А вот уже для своей работы он требует всего одну частоту, которую может получать как от внешних источников (внешний генератор), так и вырабатывать сам.

Табак для кальяна
Табак для кальяна Табак для кальяна