XMega получить тактовую частоту

Я занимаюсь отладкой своего проекта, и мне нужно проверить, правильно ли я устанавливаю внешний кристалл. У меня есть возможность распечатать на последовательный монитор через USB, можно ли получить тактовую частоту и работает ли процессор от внутренних часов или внешнего кристалла, чтобы я мог распечатать это?

У вас есть осциллограф? Вы можете переключить контакт ввода-вывода и таким образом измерить тактовую частоту.
Я не делаю. Мне нужно иметь возможность проверить код.

Ответы (2)

Вы можете измерить текущую тактовую частоту процессора, используя внутренние часы реального времени, управляемые локальным генератором 32,76 кГц. В данный момент у меня нет под рукой XMEGA, поэтому я не могу дать точную процедуру, но общая идея состоит в том, чтобы настроить RTC для измерения некоторого фиксированного количества времени (скажем, 1 мс), а затем измерить, сколько тактовых импульсов происходит во время этот период времени с помощью одного из 16-битных счетчиков/таймеров. Если, скажем, вы насчитали 8044 такта за один цикл RTC длительностью 1 мс, то тактовая частота вашего процессора составит 8044/1 мс = ~8 МГц .

Вы можете проверить, используете ли вы внутренние или внешние часы, просмотрев биты выбора системных часов (SCLKSEL) в регистре управления часами (CTRL).

Для этого не требуется масштаб. Требуется контакт ввода/вывода.

Основываясь на том, что вы думаете о частоте кристалла, напишите процедуру, которая, по вашему мнению, должна переключать вывод ввода-вывода каждую секунду (500 мс вкл., 500 мс выкл.), затем подключите светодиод к контакту и подсчитайте количество импульсов в минута. Затем, в зависимости от того, выпадет ли число 60 или что-то еще, вы сможете понять, что происходит.

Я делал это все время, чтобы проверить настройки часов.

Это работает. Я получил 60 импульсов в минуту, но я не знаю, на какой частоте он работает на самом деле, и работает ли он на внутренних или внешних часах.
@bwoogie Я бы провел несколько экспериментов. Сначала проще всего отключить внешние часы и посмотреть, работают ли они. Во-вторых, внесите изменения в свой код, которые, по вашему мнению, должны иметь измеримое значение, и посмотрите, что на самом деле произойдет. В зависимости от того, как вы написали свой код (будь то простой цикл или вы использовали таймер), должна быть возможность работать в обратном направлении и определять частоту.