Программирование микроконтроллеров. Часть 9
Тактирование микроконтроллера ATmega328P
И снова здравствуйте! Сегодня я расскажу вам о тактировании микроконтроллера.
Тактовая частота микроконтроллера - это количество тактов, в секунду которые выполняет микроконтроллер. Получается, чем больше тактовая частота микроконтроллера, тем большее количество операций он может выполнить за 1 секунду.
К примеру тактовая частота в 8 МГц означает что МК за 1 секунду выполнить 8000000 различных операций таких как сложение, вычитание, запись данных в регистры и чтение данных т.д.
Микроконтроллер ATmega328P имеет возможность тактирования как внешними, так и внутренними средствами. Выбор режима осуществляется исходя из требований, предъявляемых для разрабатываемого устройства. Так, для большей стабильности и максимальной производительности стоит выбрать использование внешнего кварцевого резонатора или внешнего тактового генератора (до 20 МГц). Если же необходимо задействовать все порты ввода/вывода (высвобождается 2 ножки), уменьшить количество внешних компонентов разрабатываемого устройства, то в данном случае лучше использовать внутренний тактовый генератор (8 МГц или 128кГц).
Выбор режима тактирования осуществляется программированием конфигурационных ячеек (в данном случае Low Fuse Byte):
Биты 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 тактовая частота не изменяется).
Внутренний генератор, частотой 8 МГц, не достаточно стабилен и в зависимости от партии микроконтроллеров его частота может изменяться от 7.3 до 8.1 МГц. Для его подстройки в микроконтроллере есть специальный регистр OSCCAL (8 бит). С увеличением значения, записанного в этот регистр, увеличивается и тактовая частота в обозначенных выше пределах.
Также микроконтроллер ATmega328 имеет внутренний предделитель. Управление предделителем осуществляется через регистр CLKPR:
Бит CLKPCE (7) управляет изменением значения предделителя. Для изменения значения предделителя сначала в него необходимо записать 1, при этом стоит учесть, что в остальные биты данного регистра должно быть записано значение 0. После этого в течении четырех машинных циклов необходимо изменить значение предделителя записью соответствующих битов. По прошествии четырех машинных циклов бит CLKPCE сбрасывается в 0.
Биты CLKPS3 - CLKPS0 (3 - 0) устанавливают значение деления тактовой частоты предделителем:
- 0000 - тактовая частота без изменений
- 0001 - CLK/2
- 0010 - CLK/4
- 0011 - CLK/8
- 0100 - CLK/16
- 0101 - CLK/32
- 0110 - CLK/64
- 0111 - CLK/128
- 1000 - CLK/256
- 1001 – 1111 - резерв
Если есть вопросы и предложения по этому уроку, пишите комментарии буду рад ответить на ваши вопросы.
Часть 1
Часть 2-1 Часть 2-2
Часть 3-1 Часть 3-2
Часть 4-1 Часть 4-2
Часть 5
Часть 6-1 Часть 6-2
Часть 7
Часть 8-1 Часть 8-2