3.11. Доступ к 16-битным регистрам
Шина данных AVR является 8-битной, поэтому, доступ к 16-битным регистрам можно получить только побайтно, путем выполнения двух операций чтения или записи. Вследствие этого, у каждого 16-битного регистра предусмотрен 8-битный регистр для временного хранения старшего байта при каждом чтении или записи. 16-битный регистр соединен с 8-битной шиной и временным регистром посредством 16-битной шины. Этим гарантируется одновременность доступа к младшему и старшему байту 16-битных регистров при их чтении или записи.
При выполнении операции записи, первой необходимо выполнить запись младшего байта 16-битного регистра. Запись младшего байта фактически приводит к его помещению во временный регистр. Во время записи же старшего байта 16-битного регистра, синхронно, по ходу того же цикла синхронизации, выполняется копирование временного регистра в младший байт 16-битного регистра.
Аналогичным образом нужно действовать и при чтении. Вначале считывается младший байт 16-битного регистра и одновременно с этим, в течение того же цикла синхронизации, во временный регистр будет скопировано содержимое старшего байта 16-битного регистра. Операция же чтения старшего байта 16-битного регистра фактически будет выполнена, как чтение из временного регистра.
Данную временную диаграмму доступа могут нарушить активизация прерывания, в процедуре обработки которого будет аналогичным образом осуществляться побайтный доступ к тому же 16-битному регистру. Во избежание этого, во время чтения или записи 16-битных регистров необходимо отключать прерывания.
Чтение и запись временных регистров также можно выполнить непосредственно из программы пользователя.
3.11.1. Доступ к 24- и 32-битным регистрам
Доступ для чтения и записи 24- и 32-битных регистров выполняется также как и 16-битных, за исключением количества использующихся временных регистров. Для доступа к 24-битному регистру используется два временных регистра, а к 32-битному - три. Очередность записи и чтения необходимо начинать с младшего байта.
|