Регистр флагов МК ATtiny2313: назначение флагов, использование в программном коде. — КиберПедия 

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

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Регистр флагов МК ATtiny2313: назначение флагов, использование в программном коде.

2022-10-04 37
Регистр флагов МК ATtiny2313: назначение флагов, использование в программном коде. 0.00 из 5.00 0 оценок
Заказать работу

 

SREG это регистр состояния ядра (S tatus Reg ister). В этом регистре находится 8 независимых битов — флагов, которые могут быть либо 1 либо 0, в зависимости от выполненных в прошлом операций.

I - флаг разрешения прерываний. Когда установлен в 1 — прерывания разрешены.

T - пользовательский флаг. Можно использовать по своему назначению.

Кроме того, есть две команды которые позволяют в этот бит записать любой бит любого из 32 регистров общего назначения R0-R31. Это команды BLD Rn,bit и BST Rn,bit.

H - флаг полупереноса, если произошел заем бита из старшей половины байта в младшую. То есть когда из числа 0001 0111 пытаются вычести 0000 1000, то происходит заем бита из более старшего разряда, так как младшая тетрада уменьшаемого меньше младшей тетрады вычитаемого.

S - флаг знака. 1 — значит минус. При вычислении чисел со знаком он возникает если после арифметической операции возник отрицательный результат. Флаг S = V XOR N.

V — Флаг переполнения дополнительного кода. Это если мы считаем число в дополнительном коде со знаком и оно вылезло за пределы регистра.

N — флаг отрицательного значения. Если в результате арифметической операции 7 бит результата стал 1, то этот флаг тоже станет 1.

Z — флаг нуля. Если в результате какой либо операции получился ноль, то устанавливается этот флаг.

С — флаг переноса. Если в результате операции произошел выход за границы байта, то выставляется этот флаг.

Флаги, кроме автоматической установки, можно устанавливать и сбрасывать вручную. Для этого есть команды

SE* для установки и CL* для сброса. Вместо звездочки подставляется нужный флаг, например, CLI — запрет прерываний.

 

Вброс про флаги от Еленычева:
Флаг V в этом МК называется флагом переполнения по той причине, что он и отражает переполнение, но только для чисел со знаком, как общего случая (числа без знака - это частности).

Вообще, флаги V, N, S имеют смысл только, если вы работаете со знаковой арифметикой. Т.е. программист сам и только сам решает с какими числами ему работать и смотрит только на нужные ему флаги!

Для решения задачи алгоритм следующий: флаг С - есть перенос (1) или нет (0), флаг N - 7-й старший бит результата, в примере N=0, флаг S = N xor V, S = 0 xor 0 = 0. Т.е. результат положительный, что мы и увидели в десятичной системе. А вот флаг V можно ставить по следующему правилу:

1. Если числа разных знаков (старшие биты разные), то V=0 всегда!

2. Если знаки операндов одинаковые, а результат другого знака, то V=1.

3. Если знаки операндов одинаковые и результат такого же знака, то V=0.

 

9. Система команд МК ATtiny2313: группы команд, примеры использования.

 

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит) и выполняется за 1 такт.

Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:

➢ команды логических операций;

➢ команды арифметических операций и команды сдвига;

➢ команды операции с битами;

➢ команды пересылки данных;

➢ команды передачи управления;

➢ команды управления системой.

Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT.

1) Арифметические и логические команды.

1.1) Арифметические команды:

        ADD R0, R1

1.2) Околоарифметические команды:

        NEG R0

1.3) Логические команды:

        END R0, R1

2) Команды условных и безусловных переходов.

                    RJMP R1 / BRNE R2 / RCALL / RET

       3) Команды модуляции из бита. Битовые команды.

                   SBI / CBI / LSL

       4) Команды пересылки данных.

                   mov R0, R1

                   lds R0, 0x60

                   ld R1, x; (указатель на адрес)

                   sts 0x60, R1

                   st x,R0

       5) Команды управления.

                   NOP (организует такт задержки)

 

 

 

10. Таймерная секция ТС0: особенности, режимы работы, примеры применения.

Т/с T0 – это универсальный восьмиразрядный счетный модуль с двумя независимыми модулями совпадения и с поддержкой ШИМ (PWM). Он позволяет формировать заданные промежутки времени (для работы в режиме реального времени). А также может служить генератором сигналов. Он имеет следующие особенности:

- два независимых модуля совпадения

- двойная буферизация при записи в регистры сравнения

- сброс таймера при совпадении (автоперезагрузка)

- симметричный широтно-импульсный модулятор с подавлением помех

- программно изменяемый период в режиме ШИМ

- генератор частот

- три независимых источника прерывания (TOV0, OCF0A, OCF0B)

 

 

Режим работы т/с и выхода сигнала совпадения, определяется как режимом работы генератора сигналов (WGM02:0), так и режимом вывода сигнала совпадения (COM0x1:0). Состояния битов, определяющих режим вывода сигнала совпадения, не влияет на последовательность досчета, которая определяется только состоянием битов конфигурации генератора сигналов.

Биты COM0x1:0 определяют, будет ли сигнал на выходе инвертирован или неинвертирован (в не ШИМ определяют, будет ли сигнал на выходе установлен, очищен или будет переключаться в момент совпадения).

 

Режим Normal (WGM02:0 = 0).

В этом режиме направление счета всегда вперед (содержимое увеличивается), и принудительный сброс счетчика не выполняется. Счетчик просто переполняется, когда достигнет максимального для восьми разрядов значения (TOP = 0xFF), а затем перезапускается сначала (0х00).

В нормальном режиме работы в том же цикле тактового сигнала, в котором произошло переполнение, устанавливается флаг переполнения т/с (TOV0). Флаг TOV0 в этом случае ведет себя как 9-ый бит счетчика, но с тем лишь отличием, что он только устанавливается, но не сбрасывается. Одновременно с перезапуском таймера возникает запрос на прерывание, которое автоматически очищает флаг TOV0. В режиме Normal новое значение счетного регистра может быть записано в любой момент времени.

 

Режим сброса при совпадении (СТС) (WGM02:0 = 2, требуется регистр OCR0A)

При работе в режиме СТС счетчик сбрасывается в ноль, если значение его счетного регистра (TCNT0) соответствует значению регистра OCR0A. Этот регистр определяет максимальное значение для счетчика и коэффициент пересчета. Режим СТС позволяет осуществлять непосредственное управление частотой сигнала. Прерывание может вызываться по достижению счетчиком значения TOP. Если прерывание разрешено, процедура обработки прерывания может использоваться для обновления значения TOP.

 

Режим Fast PWM (WGM02:0 = 3 или 7).

Позволяет формировать сигнал с широтно-импульсной модуляцией и относительно высокой частотой. Быстрый ШИМ вырабатывает сигнал в виде пилы с одним наклоном. Счет происходит всегда в одном направлении: от минимального значения до максимального. После этого счетчик сбрасывается в BOTTOM. В неинвертирующем режиме сигнал на выходе (OC0x) устанавливается в единицу в момент вопадения содержимого регистров TCNT0 и OCR0x и сбрасывается в ноль при достижении значения TOP. В инвертирующем режиме сигнал на выходе сбрасывается в момент совпадения и устанавливается при достижении TOP. Т.к. пилообразный сигнал на выходе счетчика имеет один наклон, частота выходного сигнала ШИМ вдвое выше, чем в остальных режимах ШИМ.

 

Режим phase correct PWM (WGM02:0 = 1 или 5)

В этом режиме счетный регистр работает как реверсивный счетчик и вырабатывает пилообразный сигнал с двухсторонним наклоном. Направление счета периодически меняется. Сначала содержимое счетчика увеличивается от BOTTOM до TOP, а затем уменьшается от TOP до BOTTOM. В неинвертирующем режиме сигнал на выходе совпадения (OC0x) сбрасывается в момент совпадения TCNT0 и OCR0x, если счетчик работает на уменьшение, и устанавливается в момент совпадения в том случае, когда счетчик работает на увеличение. В инвертирующем режиме все происходит наоборот. У этого режима максимальная частота выходного сигнала в два раза ниже, чем в режиме с одним наклоном.

 

 

11. Таймерная секция ТС1: особенности, режимы работы, примеры применения.

Модуль 16-разрядного таймера/счетчика позволяет с высокой точностью формировать временные интервалы (режим реального времени), генерацию периодических сигналов, импульсы заданной длительности. Он имеет следующие особенности:

- полная 16-разрядная структура (т.е. поддерживает 16-разрядный ШИМ)

- два независимых модуля совпадения

- двойная буферизация регистров совпадения

- модуль захвата

- схема фильтрации помех в режиме захвата

- режим сброса при совпадении (автоперезагрузка)

- помехозащищенный, фазонезависимый широтноимпульсный модулятор (ШИМ)

- изменяемый период ШИМ

- генератор сигналов

- счетчик внешних событий

- четыре независимых источника прерываний (TOV1, OCF1A, OCF1B, ICF1)

 

 

Режим работы т/с и выходов совпадения определяется установками

битов WGM13:0 – определяют на работу таймера/счетчика

и битами COM1x1:0 – в ШИМ режимах определяют, будет ли сигнал на выходе инвертирован или неинвертирован (в не ШИМ определяют, будет ли сигнал на выходе установлен, очищен или будет переключаться в момент совпадения)

 

Режим Normal (WGM13:0 = 0).

В этом режиме таймер работает как обычный суммирующий счетчик. При достижении максимального 16-ричного значения (max = 0xFFFF) счетчик переполняется и начинает работать сначала, т.е. со своего минимально значения (0х0000).

В нормальном режиме работы в том же цикле тактового сигнала, в котором произошло переполнение, устанавливается флаг переполнения т/с (TOV1). Флаг TOV1 в этом случае ведет себя как 17-ый бит счетчика, но с тем лишь отличием, что он только устанавливается, но не сбрасывается. Одновременно с перезапуском таймера возникает запрос на прерывание, которое автоматически очищает флаг TOV1. В режиме Normal новое значение счетного регистра может быть записано в любой момент времени.

 

Режим сброса при совпадении (СТС) (WGM13:0 = 4 или 12, требуются регистры OCR1A или ICR1)

При работе в режиме СТС счетчик сбрасывается в ноль, если значение его счетного регистра (TCNT1) соответствует значению регистра OCR1A (при WGM13:0 = 4) или регистра ICR1 (при WGM13:0 = 12). Эти регистры определяют максимальное значение для счетчика и коэффициент пересчета. Режим СТС позволяет осуществлять непосредственное управление частотой сигнала. Прерывание может вызываться по достижению счетчиком значения TOP. Если прерывание разрешено, процедура обработки прерывания может использоваться для обновления значения TOP.

 

Еще три режима рассмотрены более подробно ниже:

 

 


Поделиться с друзьями:

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.038 с.