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

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

Внутренний генератор, частотой 8 МГц, не достаточно стабилен и в зависимости от партии микроконтроллеров его частота может изменяться от 7.3 до 8.1 МГц. Для его подстройки в микроконтроллере есть специальный регистр OSCCAL (8 бит). С увеличением значения, записанного в этот регистр увеличивается и тактовая частота в обозначенных выше пределах.

Также микроконтроллер ATmega328 имеет внутренний предделитель. Управление предделителем осуществляется через регистр CLKPR:
7
6
5
4
3
2
1
0
CLKPCE
-
-
-
CLKPS3
CLKPS2
CLKPS1
CLKPS0

Бит 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 - резерв