Чи можуть мікроконтролери працювати на довільно низьких тактових частотах?


103

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


34
Хочеться додати, це відмінне запитання. Більшість старших службовців освіти не потребують часу, щоб насправді читати та обмірковувати дані, що є або доповненням для вас, або образою для них, я хотів би мати на увазі і те, і інше.
Кортук

Я не зовсім впевнений, що внутрішній RC-генератор вимкнений, якщо ви спеціально не вкажете цього (через різні параметри економії енергії). Не впевнений, для чого він використовується, але принаймні для EEPROM та, ймовірно, АЦП.
jippie

1
@jippie, який внутрішній RC ти кажеш? Наприклад, ATMegaX має внутрішній RC для системного тактового годинника (як правило, 8 МГц, з додатковим доказовим пристроєм Div 8), у нього є генератор сторожового сигналу. Системний годинник вибрано запобіжник і, ймовірно, вимкнено під час використання зовнішніх годинників. Інші, як ви сказали, можуть бути відключені режимами енергозбереження, але я сумніваюся, що зупиняться на системному годиннику.
Diego C Nascimento

Відповіді:


73

Так. Якщо в аркуші написано "повністю статична робота", ви можете годинникувати її з будь-якою швидкістю, навіть 0 Гц. "Динамічний" чіп повинен мати годинник із певною швидкістю, або він втрачає стан.


1
у вас є приклад мікро, який дозволяє це?
MrEvil

4
Мікроконтролери, які містять вбудовану мікросхему, можуть задавати мінімальну (і максимальну) частоту частоти спалаху під час запису на спалах. Однак при читанні із спалаху це не стосується.
Стів Мельников

8
MrEvil, серія Atmel AVR ATtiny, згадана у запитанні, є повністю статичною, як я вважаю, більшість фішок Atmel AVR. І я думаю, що найбільше всіх мікроконтролерів PIC Microchip.
todbot

7
Насправді, я думаю, що АЦП в ATTiny13A не працює на низьких частотах, можливо, тому, що конденсатор вибірки і утримування занепадає? "За замовчуванням схема послідовного наближення вимагає вхідної тактової частоти між 50 кГц і 200 кГц, щоб отримати максимальну роздільну здатність. Модуль АЦП містить докалібер, який генерує прийнятну тактову частоту АЦП з будь-якої частоти процесора понад 100 кГц."
ендоліт

8
endolith - Я згоден, АЦП зазвичай не працюють на низьких частотах. Наскільки я можу сказати, все інше практично на всіх сучасних мікроконтролерах продовжує працювати нормально аж до "0 Гц", так само "пауза нескінченна". Зокрема, багато мікроконтролерів мають режим "сну з низькою потужністю", який зупиняє всі годинники, поки щось - як правило, людина, яка натискає кнопку - не розбудить його і відновиться прямо там, де воно припинилося. en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary

23

Я публікую ще одну відповідь, тільки тому, що на останнє запитання, на яке ви раніше не відповідали.

Todbot абсолютно правильний. Це також буде притягувати меншу потужність на менших швидкостях. Це також означає, що якщо ви поставите годинник від іншого процесора, наприклад, ви можете припинити його подачу в будь-який момент, а потім почніть його згортати пізніше, доки ви не підете швидше, ніж максимальна швидкість, у вас все буде добре.

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

Сподіваюся, це допомагає.


9
Я завжди хотів запустити годинникову лінію мікроконтролера за допомогою кнопки. Нехай людина буде годинником. :) Якщо серйозно зауважити, справді приємними речами щодо цих статичних конструкцій є їх енергоспоживання лінійне з тактовою частотою: сповільнюйте годинник та використовуйте менше енергії. Це може бути дуже зручно.
todbot

5
Так, але я хочу зазначити, що споживання електроенергії - це лінійна функція зі зміщенням, навіть без годинника вони все ще споживають енергію, особливо з будь-якими вихідними двигунами. Ми щойно отримали нових стажистів на моїй роботі, я запропоную скористатися кнопкою і подивитися, що станеться.
Кортук

13
@todbot Приємна ідея. :-) Але обов'язково зніміть кнопку.
starblue

4
Спробуйте з "шліфувати кривошип" (як у значенні жаргону: jargon.net/jargonfile/g/grindcrank.html ) :-)) (і так, багато років тому я створив один крок через код, коли я використовував Turbo Pascal у школі :-)
Axeman

@todbot Це насправді не надумано чи важко, якщо ти можеш прийняти грубу абстракцію. Існує кілька прикладів того, як люди використовують такі гаджети, щоб навчити працювати комп'ютерам. У Майка Предко справді хороша книга, і вона навіть постачається з друкованими платами (хоча не для комп'ютерного проекту): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Лу

17

Більшість сучасних конструкцій мікроконтролерів працюватимуть з будь-яким малюнком на вході тактової частоти, за умови лише, що жоден високий імпульс не перевищує певної мінімальної довжини, низький імпульс не перевищує певної мінімальної довжини і немає низького-високого-низького або високого-низького-високого пульсова пара знаходиться нижче певної довжини. По суті, що трапляється, це те, що після того, як чіп виконає всі дії, пов'язані з певним краєм годинника, чіп опиниться в стані, коли він нічого не робить, окрім очікування наступного краю годинника. Якщо наступний край годинника не з’явиться протягом десяти днів (якщо у чіпа немає зовнішньої сторожової собаки), чіп буде в тому ж стані, як якщо б край прибув у той момент, коли чіп був готовий до нього.

Зауважте, що загалом призупинення годинника на мікроконтролері істотно зменшить споживання струму, але не настільки, як використання функції "сну". Споживання струму більшості мікроконтролерів у режимі "запуску" може бути досить добре оцінено як постійний струм спокою плюс певна кількість струму за цикл в секунду (що може бути "природніше", виражене як заряд на цикл). Наприклад, мікросхема може мати струм спокою 10uA плюс струм 0,1mA / MHz (100pC / цикл). Запуск такої мікросхеми на 10 МГц дасть струм 1,01 мА. Запустивши його на частоті 1 МГц, ви отримаєте 0,11 мА. Запуск на 100 КГц дасть 0,02 мА. Запустивши його на 1 Гц, вихід буде 0,0100001 мА. З іншого боку, мікросхема може запропонувати струм сну 1uA. Взагалі, перехід у режим сну повністю відключить ділянки мікросхеми, які не збираються робити нічого корисного, поки чіп не спить, тим самим уникнути будь-якого струму витоку, який може виникнути в таких областях. У деяких випадках це також знизить напругу в таких областях, як файли реєстру, до рівня, коли файли реєстру можуть зберігати їх вміст, але не отримувати доступ до них дуже швидко (оскільки до них взагалі не можна отримати доступ, швидкість доступу не має значення) .

Деякі старі мікропроцесори, мікроконтролери та інші пристрої мали максимальний тактовий та / або тактовий час. Такі процесори використовували динамічну логіку для збереження схеми. Як приклад динамічної логіки розглянемо регістр зсуву: типовий статичний біт реєстру потребує дво транзисторної схеми для утримання значення, тоді як біт динамічного регістра утримує значення на затворі транзистора зчитування. Двофазний синхронізований регістр динамічного зсуву може бути реалізований в NMOS за допомогою чотирьох NFET і двох резисторів на біт. Реєстр статичного зсуву потребує восьми NFET і чотирьох резисторів на біт. Динамічні логічні підходи сьогодні майже не такі поширені. Ще в 1970-х рр. Ємність воріт була значною, і позбутися її не було. Таким чином, не було жодної конкретної причини не скористатися цим. Сьогодні Ємність воріт, як правило, значно нижча, і виробники чіпів активно намагаються зменшити її ще більше. Для надійної роботи динамічної логіки часто потрібно свідомо працювати над збільшенням ємності воріт. У більшості випадків додаткова площа мікросхем, необхідна для збільшення ємності, може бути так само ефективно використана для додавання більшої кількості транзисторів, щоб зробити ємність непотрібною.


Ви згадуєте про NMOS та IIRC. Існує зв'язок між популярністю динамічної логіки та додатковою MOS (CMOS), яка ще не доступна.
jpc

@jpc: Я розглядав схеми різних мікросхем NMOS - деякі з них дуже докладно, зокрема TIA Atari 2600, що є справжньою роботою генія - люди все ще знаходять нові речі, що стосуються цього через три десятиліття. Я думаю, що одна з переваг NMOS порівняно з CMOS з точки зору зручності дизайну полягає в тому, що «простріл» (випадкова одночасна активація приводу з високим і низьким боком) не є фактором, хоча я визнаю деяку цікавість щодо того, чому CMOS не працює при недостатньо низькій напрузі, щоб точка перехрестя на вході залишала відключені драйвери високої та низької сторони, а не активувала обидва.
supercat

@jpc: У NMOS можна реалізувати ворота XOR з двома транзисторами та двома резисторами, якщо входи достатньо "сильні". Навіть якщо потрібно додати інвертори до обох входів, чотирирезисторний чотирирезисторний xor-шлюз був би кращим, ніж багато інших підходів. Я ніколи не бачив застосованого підходу, хоча, коли я створив подібну схему за допомогою BJT приблизно в 1978 році (концепція дизайну краще працюватиме з MOSFETS, але я нічого про них не знав).
supercat

2
+1 - Я відчуваю, що справжній дорогоцінний камінь, про який ви згадали тут, полягає в тому, що менша тактова частота економить енергію, але не стільки, скільки режими сну, спеціально розроблені для оптимізації економії енергії. Моя кишка говорить мені, що ви заощадите більше енергії, працюючи на швидкому осциляторі в поєднанні з розумним використанням режиму сну, над тим, щоб постійно працювати на дуже низькій частоті.
Джоель Б

@JoelB: Це залежить від багатьох факторів. У багатьох процесорах існує затримка між включенням швидкого годинника та можливістю його фактичного використання; за цей час людина буде витрачати сили. Якщо вам доведеться прокинутися, наприклад, 100x / секунду, може бути краще бігати повільно безперервно, ніж постійно стартувати і зупинятися. З іншого боку, якщо хтось збирається запускати та зупиняти швидкий годинник, може бути корисним мінімізувати кількість часу, який він працює, настільки, наскільки це можна зробити, не витрачаючи додаткової енергії. Наприклад ...
supercat

12

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

Потужність майже лінійна з частотою: на 10 МГц мікроконтролер буде споживати в 10 разів більше енергії, ніж на 1 МГц. Це не означає, що при 0 Гц споживання повністю дорівнює нулю. Завжди є статичне розсіювання, але це дуже мало, як правило, 1 мкА або менше.

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


Натиснути кнопку? А як щодо дебютації?
Пітер Мортенсен

1
Дебютування потрібно.
Вованій

10

Запізнившись на це питання, це нагадало мені проект, який я бачив деякий час назад.

Це детектор бит, який більшу частину часу використовує ПОС, що працює на нульовому Гц, а потім спрацьовує за тим самим сигналом, який він виявляє.

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


5
У цьому проекті сигнал є як годинником, так і потужністю до мікросхеми . :)
endolith
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.