# 13. Архитектура системного генератора тактовых частот Глава в даташите System Clock and Clock Options ### Обнова за 2 часа до экзамена Clock Distribution показывает как идет распределение частоты Внизу источники частоты, вверху потребители. AVR Clock control unit берет потребляемую чатоту и дополнительно делит её на количество, необходимое для каждого потребителя. С помощью clock multiplexor выбирается источник. AVR Clock Control Unit - модуль управления тактовыми сигналами (часами). ADC - аналого-цифровой преобразователь. General I/O Modules - общие модули ввода-вывода. CPU Core - ядро процессора. RAM - оперативная память. Flash and EEPROM - Flash-память и память данных. Reset Logic - логика управления сбросом. Watchdog Timer - “сторожевой” таймер. Clock Multiplexer - мультиплескор тактовых сигналов. Watchdog Oscillator - генератор “сторожевого” таймера. External Clock - внешний тактовый сигнал. Calibrated RC Oscillator - генератор калибровки цепи сброса Потребители **CPU Clock** – The CPU clock is routed to parts of the system concerned with operation of the AVR core. Examples of such modules are the General Purpose Register File, the Status Register and the data memory holding the Stack Pointer. Halting the CPU clock inhibits the core from performing general operations and calculations. (Остановка тактовой частоты процессора запрещает ядру выполнять общие операции и вычисления.) **I/O Clock** – The I/O clock is used by the majority of the I/O modules, like Timer/Counters, SPI, and USART. - The I/O clock is also used by the External Interrupt module, but note that some external interrupts are detected by asynchronous logic, allowing such interrupts to be detected even if the I/O clock is halted. Also note that address recognition in the TWI module is carried out asynchronously when clkI/O is halted, enabling TWI address reception in all sleep modes. Flash Clock – The Flash clock controls operation of the Flash interface. The Flash clock is usually active simultaneously with the CPU clock. ADC Clock – The ADC is provided with a dedicated clock domain. This allows halting the CPU and I/O clocks in order to reduce noise generated by digital circuitry. This gives more accurate ADC conversion results. Генераторы: ![](https://i.imgur.com/n1wRdJd.png) ### Старые записи Тактовый генератор вырабатывает синхронизирующие импульсы для всех устройств микроконтроллера. Каждый отдельный периферийный блок (АЦП, таймер, шины передачи и т. д.) работает на своей частоте, но кратной основной частоте ядра в четное число раз (2, 4, 8…). Имеется встроенный тактовый генератор, часто используемый, если от микроконтроллера не требуется высокого быстродействия. Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера и указывается Atmel в его характеристиках -- у нас 1 мГц. Имеются два внешних вывода (XTAL на главной схеме), отвечающих за подключение внешнего генератора. Они могут не использоваться, если микроконтроллер работает от внутреннего генератора. Схема выбора источника опорной частоты: ![](https://i.imgur.com/Vh3KXAR.png) Выжимка из датшита по этой схеме: - для снижения энергопотребления неиспользуемые осцилляторы можно отправиль в спящий режим - каждое устройство работает на своей частоте, про них ничего конкретного не сказано - есть асинхронная частота, которая работает независимо от того, работает ли микроконтроллер, что позволяет сделать часы реального времени - когда процессор просыпается после отключения питания или энергосбережения или сброса, возникает задержка перед выполнением команд, которая требуется для начала стабильной работы. Величина задержки зависит от выбранного устройства. - по умолчанию используется RC-генератор с цастотой 1 мГц с самым длительным временем запуска. - можно подключить кварцевый генератор (8 или 16 мГц): ![](https://i.imgur.com/Yi6h5on.png) - или RC-генератор (максимум 12 мГц) ![](https://i.imgur.com/wUOUCW9.png) - или еще какой-нибудь генератор ![](https://i.imgur.com/VAlkCiM.png) ## Cхема, которая была тут изначально Это схема _преобразования_ тактовой частоты для обмена данных через USART. ![](https://i.imgur.com/9hPLswl.png) ![](https://i.imgur.com/M4zaaR8.png) Не думаю, что она особо нужна, но пояснения на вский случай: Что есть на схеме: - UCPOL -- бит, отвечающий за полярность тактового сигнала. Значение этого разряда определяет момент выдачи и считывания данных на выводах модуля. Используется только в синхронном режиме. В асинхронном режиме разряд сброшен в 0 - UBRR -- регистр, отвечающий за скорость передачи данных - DDR_XCL -- бит направления пина порта C, к которому подключен внешний генератор тактовой частоты. Как это работает: в зависимости от режима master/slave мы выбираем, на какой частоте передавать данные: на внутренней или на внешней. Этот режим определяет бит DDR_XCL. Если мы master и сами выбираем частоту, то мы можем также выбрать, на что её делить, если нужно.