среда, 20 марта 2013 г.

Тактирование микроконтроллера - Часть 1

Микроконтроллер ATmega328P имеет возможность тактирования как внешними, так и внутренними средствами. Выбор режима осуществляется исходя из требований, предъявляемых для разрабатываемого устройства. Так, для большей стабильности и максимальной производительности стоит выбрать использование внешнего кварцевого резонатора или внешнего тактового генератора (до 20 МГц). Если же необходимо задействовать все порты ввода/вывода (высвобождается 2 ножки), уменьшить колличество внешних компонентов разрабатываемого устройства, то в данном случае лучше использовать внутренний тактовый генератор (8 МГц или 128кГц).

Выбор режима тактирования осуществляется программированием конфигурационных ячеек (в данном случае low fuse bit):
7
6
5
4
3
2
1
0
CKDIV8
CKOUT
SUT1
SUT0
CKSEL3
CKSEL2
CKSEL1
CKSEL0

Биты CKSEL3-CKSEL1 (3 - 1) управляют выбором тактового генератора:
  • 111 - Кварцевый резонатор с низким эноргопотреблением (8 - 16 МГц)
  • 110 - Кварцевый резонатор с низким эноргопотреблением (3 - 8 МГц)
  • 101 - Кварцевый резонатор с низким эноргопотреблением (0.9 - 3 МГц)
  • 100 - Кварцевый резонатор с низким эноргопотреблением (0.4 - 0.9 МГц)
  • 011 - Обычный кварцевый резонатор (0.4 - 20 МГц)
  • 010 - Низкочастотный кварцевый резонатор 
  • 001 - Внутренний RC тактовый генератор (128 кГц или настраиваемый)
  • 000 - Внешний тактовый генератор
Биты CKSEL0 (0), а также SUT1 (5), SUT0 (4) устанавливают дополнительные параметры для выбранного режима тактирования:

    1. При выборе режима работы от кварцевого резонатора с низким энергопотреблением, а также от обычного кварцевого резонатора они выполняют функции установки задержки начала работы после включения питания и выходом из режима пониженного энергопотребления (STP), а также дополнительной задержки после сброса (ADR):
  • 000 - STP = 258 тактов, ADR = 14 тактов + 4.1 мс
  • 001 - STP = 258 тактов, ADR = 14 тактов + 65 мс
  • 010 - STP = 1024 такта, ADR = 14 тактов
  • 011 - STP = 1024 такта, ADR = 14 тактов + 4.1 мс
  • 100 - STP = 1024 такта, ADR = 14 тактов + 65 мс
  • 101 - STP = 16 тысяч тактов, ADR = 14 тактов
  • 110 - STP = 16 тысяч тактов, ADR = 14 тактов + 4.1 мс
  • 111 - STP = 16 тысяч тактов, ADR = 14 тактов + 65 мс
Эта задержка прежде всего выбирается исходя из времени установления стабильной работы тактового генератора.

    2. При выборе режима работы от низкочастотного кварцевого резонатора:
  • 000 - STP = 1024 такта, ADR = 4 такта
  • 001 - STP = 1024 такта, ADR = 4 такта + 4.1 мс
  • 010 - STP = 1024 такта, ADR = 4 такта + 65 мс
  • 011 - резерв
  • 100 - STP = 32 тысячи тактов, ADR = 4 такта
  • 101 - STP = 32 тысячи тактов, ADR = 4 такта + 4.1 мс
  • 110 - STP = 32 тысячи тактов, ADR = 4 такта + 65 мс
  • 111 - резерв
    3. При выборе режима работы от внутреннего RC генератора:
  • 000 - частота 8 МГц, STP = 6 тактов, ADR = 14 тактов
  • 001 - частота 8 МГц, STP = 6 тактов, ADR = 14 тактов + 4.1 мс
  • 010 - частота 8 МГц, STP = 6 тактов, ADR = 14 тактов + 65 мс
  • 011 - резерв
  • 100 - частота 128 кГц, STP = 6 тактов, ADR = 14 тактов
  • 101 - частота 128 кГц, STP = 6 тактов, ADR = 14 тактов + 4.1 мс
  • 110 - частота 128 кГц, STP = 6 тактов, ADR = 14 тактов + 65 мс
  • 111 - резерв
    4. При выборе внешнего тактового генератора:
  • x00 - STP = 6 тактов, ADR = 14 тактов
  • x01 - STP = 6 тактов, ADR = 14 тактов + 4.1 мс
  • x10 - STP = 6 тактов, ADR = 14 тактов + 65 мс
  • x11 - резерв
Бит CKOUT (6) включает внешний выход тактового сигнала CLKO (14 ножка) если его сбросить в 0 (при записи в него 1, ножка 14 работает как обычный порт ввода/вывода).

Бит CKDIV8 (7) позволяет использовать предделитель тактовой частоты на 8 при сбросе его в 0 (при записи в него 1 тактовая частота не изменяется).