Могут ли микроконтроллеры работать на сколь угодно низких тактовых частотах?

103

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

эндолиты
источник
34
Я хотел бы добавить, это отличный вопрос. Большинство старших ЭО не тратят время на то, чтобы на самом деле читать и думать о таблицах данных, которые являются либо дополнением для вас, либо оскорблением для них, я хотел бы подразумевать и то и другое.
Кортук
Я не совсем уверен, что внутренний RC-генератор выключен, если вы не проинструктировали его (через различные варианты энергосбережения). Не уверен, для чего он используется, но, по крайней мере, для EEPROM и, вероятно, АЦП.
Джиппи
1
@jippie, какой внутренний RC ты говоришь? Например, ATMegaX имеет встроенный RC для системных часов (обычно 8 МГц, с дополнительным прескалером div 8), он имеет сторожевой генератор. Системные часы выбраны предохранителем и, вероятно, отключены при использовании внешних часов. Другие, как вы сказали, могут быть отключены режимами энергосбережения, но я сомневаюсь, что они остановятся на системных часах.
Диего С Насименто

Ответы:

73

Да. Если в техническом описании указано «полностью статическая работа», то вы можете синхронизировать его с любой скоростью, даже 0 Гц. У «динамического» чипа должны быть часы с определенной частотой, иначе он потеряет свое состояние.

todbot
источник
1
у вас есть пример микро, который позволяет это?
MrEvil
4
Микроконтроллеры, которые содержат встроенную флэш-память, могут указывать минимальную (и максимальную) тактовую частоту флэш-памяти при записи во флэш-память. Однако при чтении с флэш-памяти это не относится.
Стив Мельникофф
8
MrEvil, серия Atmel AVR ATtiny, упомянутая в этом вопросе, полностью статична, так как я думаю, что большинство чипов Atmel AVR. И я думаю, что большинство PIC микроконтроллеров Microchip.
Todbot
7
На самом деле, я думаю, что АЦП в ATTiny13A не работает на низких частотах, возможно, из-за затухания конденсатора выборки и удержания? «По умолчанию схема последовательного приближения требует входную тактовую частоту от 50 кГц до 200 кГц для получения максимального разрешения ... ... Модуль АЦП содержит предварительный масштабатор, который генерирует приемлемую тактовую частоту АЦП из любой частоты ЦП выше 100 кГц».
эндолит
8
эндолит - согласен, АЦП обычно не работают на низких частотах. Насколько я могу судить, все остальное практически на всех современных микроконтроллерах продолжает нормально работать вплоть до «0 Гц», то есть «пауза до бесконечности». В частности, многие микроконтроллеры имеют режим «низкого энергопотребления», который останавливает все часы до тех пор, пока что-то - обычно человек, нажимающий кнопку - не разбудит его и не возобновит его с того места, где он остановился. en.wikipedia.org/wiki/Static_logic_(digital_logic)
Дэвидкари
23

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

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

Микросхемы, которые у меня есть, меняются на порядок между генератором 32768 Гц и генератором 1 МГц. У меня были приложения, в которых мне не требовалась скорость, мне просто нужен был еще один маленький парень, делающий некоторые базовые операции с данными для меня.

Надеюсь это поможет.

Kortuk
источник
9
Я всегда хотел запустить тактовую линию микроконтроллера с помощью кнопки. Пусть человек будет часами. :) Если серьезно, то, что действительно приятно в этих статичных конструкциях, это то, что их энергопотребление линейно зависит от тактовой частоты: замедляйте тактовую частоту и используйте меньше энергии. Это может быть очень удобно.
Todbot
5
Да, но я хотел бы отметить, что энергопотребление - это линейная функция со смещением, даже без часов они по-прежнему потребляют энергию, особенно при использовании любых выходов. Мы только что получили новых стажеров на моей работе, я предложу использовать кнопку и посмотрим, что произойдет.
Кортук
13
@todbot Отличная идея. :-) Но не забудьте дебатировать кнопку.
звездно-голубой
4
Попробуйте использовать «grind Crank» (как в значении Jargon: jargon.net/jargonfile/g/grindcrank.html ) :-)) (и да, много лет назад я создавал один-шаг по коду, когда использовал Turbo Pascal в школе :-)
Axeman
@todbot Это не очень надумано или сложно, если вы можете принять грубую абстракцию. Есть несколько примеров людей, использующих такие гаджеты для обучения работе компьютеров. У Майка Предко действительно хорошая книга, и она даже поставляется с печатными платами (хотя и не для компьютерного проекта): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/….
Лу
17

Большинство современных конструкций микроконтроллеров будут работать с любым шаблоном на их тактовом входе, при условии, что только высокий импульс не будет ниже определенной минимальной длины, низкий импульс не будет ниже определенной минимальной длины, а также нет низкого-высокого-низкого-низкого или высокого-низкого-высокого уровня пара импульсов ниже определенной длины. По сути, происходит то, что после того, как чип выполнит все действия, связанные с конкретным фронтом тактовой частоты, чип будет находиться в состоянии, в котором он ничего не делает, кроме ожидания следующего тактового фронта. Если следующий фронт тактовых импульсов не наступит в течение десяти дней, то (если только у чипа нет внешнего сторожевого таймера) микросхема будет в том же состоянии, как если бы фронт был достигнут в тот момент, когда чип был готов к этому.

Обратите внимание, что в общем случае приостановка тактовой частоты на микроконтроллере существенно снизит потребление тока, но не так сильно, как использование функции «сна». Потребление тока большинством микроконтроллеров в режиме «работы» можно довольно хорошо оценить как постоянный ток покоя плюс определенное количество тока на цикл в секунду (которое может быть более «естественно» выражено как заряд на цикл). Например, микросхема может иметь ток покоя 10 мкА плюс ток 0,1 мА / МГц (100 пк / цикл). Работа такого чипа на частоте 10 МГц даст ток 1,01 мА. Работа на частоте 1 МГц даст 0,11 мА. Работа на частоте 100 кГц даст 0,02 мА. Работа на частоте 1 Гц дает 0,0100001 мА. С другой стороны, микросхема может предложить ток в спящем режиме 1 мкА. В общем, переход в спящий режим полностью отключит области микросхемы, которые не будут делать ничего полезного, когда микросхема находится в спящем режиме, что позволит избежать тока утечки, который могут иметь такие области. В некоторых случаях это также снизит напряжение в таких областях, как файлы регистров, до уровня, на котором файлы регистров могут хранить свое содержимое, но не будут получать к ним быстрый доступ (поскольку к ним не будет никакого доступа вообще, скорость доступа не имеет значения) ,

Некоторые старые микропроцессоры, микроконтроллеры и другие устройства имели максимальную тактовую частоту и / или тактовую частоту. Такие процессоры использовали динамическую логику для сохранения схем. В качестве примера динамической логики рассмотрим сдвиговый регистр: типичный бит статического регистра требует наличия двухтранзисторной схемы для хранения значения, в то время как бит динамического регистра содержит значение на затворе транзистора считывания. Регистр динамического сдвига с двухфазной синхронизацией может быть реализован в NMOS с использованием четырех NFET и двух резисторов на бит. Статический сдвиговый регистр потребует восьми NFET и четырех резисторов на бит. Динамические логические подходы сегодня не так распространены. Еще в 1970-х годах емкость затвора была значительной, и от нее не было никакой возможности избавиться. Таким образом, не было особой причины не использовать это в своих интересах. Сегодня, Емкость затвора, как правило, намного ниже, и производители микросхем активно пытаются ее уменьшить. Надежная работа динамической логики часто требует преднамеренной работы для увеличения емкости затвора. В большинстве случаев дополнительная площадь микросхемы, необходимая для увеличения емкости, может быть столь же эффективно использована для добавления большего количества транзисторов, чтобы сделать емкость ненужной.

Supercat
источник
Вы упомянули NMOS и IIRC. Существует связь между популярностью динамической логики и дополнительной MOS (CMOS), которая еще не доступна.
JPC
@jpc: Я изучил схемы различных чипов NMOS - некоторые очень подробно, в том числе Atari 2600 TIA, которая является настоящей гениальной работой - люди все еще находят новые вещи, которые можно сделать с ними три десятилетия спустя. Я думаю, что одно преимущество NMOS по сравнению с CMOS с точки зрения удобства проектирования заключается в том, что «сквозная съемка» (случайная одновременная активация привода с высокой и низкой стороны) не является фактором, хотя я признаюсь в некотором любопытстве относительно того, почему CMOS не работает при достаточно низком напряжении, чтобы точка пересечения на входе не включала бы драйверы высокого и низкого напряжения, а не активировала оба.
суперкат
@jpc: В NMOS возможно реализовать вентиль XOR с двумя транзисторами и двумя резисторами, если входы достаточно «сильные». Даже если к обоим входам нужно добавить инверторы, четырех транзисторный четырехрезисторный затвор xor будет лучше, чем многие другие подходы. Я никогда не видел такого подхода, хотя и спроектировал аналогичную схему с использованием BJT примерно в 1978 году (концепция дизайна работала бы лучше с MOSFETS, но я ничего о них не знал).
суперкат
2
+1 - я чувствую, что настоящая жемчужина, которую вы упомянули здесь, состоит в том, что более низкие тактовые частоты позволяют экономить энергию, но не в такой степени, как спящие режимы, специально предназначенные для оптимизации энергосбережения. Моя интуиция подсказывает мне, что вы сэкономите больше энергии, работая на быстром генераторе в сочетании с разумным использованием режима сна и постоянно работающей на очень низкой частоте.
Джоэл Б
@JoelB: это зависит от многих факторов. На многих процессорах существует задержка между включением быстрых часов и возможностью их фактического использования; за это время человек будет терять энергию. Если нужно проснуться, например, 100 раз в секунду, может быть, лучше бегать медленно, чем постоянно запускаться и останавливаться. С другой стороны, если кто-то собирается запускать и останавливать быстрые часы, может быть полезно минимизировать количество времени, которое он работает, до такой степени, что можно сделать это без потери дополнительной энергии. Например ...
суперкат
12

Да, вы можете полностью остановить часы и перезапустить их позже без последствий. Вы могли бы даже заменить часы кнопкой и просматривать программу буквально шаг за шагом (частота: около 0,1 Гц).

Мощность почти линейна с частотой: на 10 МГц микроконтроллер будет потреблять в 10 раз больше энергии, чем на 1 МГц. Это не означает, что при 0 Гц потребление полностью равно нулю. Всегда присутствует рассеяние статического электричества, но оно очень низкое, обычно 1 мкА или менее.

PS: обратите внимание, что АЦП имеет минимальную рабочую частоту. Если частота слишком низкая, конденсатор, по которому измеряется напряжение, будет разряжаться слишком сильно, и ваши измерения будут неверными.

flup
источник
Нажать кнопку? А как насчет дебасинга?
Питер Мортенсен
1
Debouncing требуется.
Вованиум
10

Опоздав на этот вопрос, он напомнил мне проект, который я видел некоторое время назад.

Это детектор летучих мышей, который использует PIC, работающий при нулевой частоте в течение большей части времени, а затем синхронизируется по самому сигналу, который он обнаруживает.

http://www.micro-examples.com/public/microex-navig/doc/077-picobat.html

Buzby
источник
5
В этом проекте сигнал - это и часы, и мощность чипа . :)
эндолит