Більшість мікроконтролерів (наприклад, AVR, MSP430, PIC тощо) підтримують ряд різних режимів сну. "Найглибший" режим сну - це той, який передбачає найнижчу потужність (наприклад, "Вимкнення живлення", "Вимкнення"), але всі годинникові системи зазвичай зупинені в цих режимах, і мені здається, що це єдиний спосіб " прокидатися від них відбувається за допомогою зовнішнього стимулу (наприклад, переривання зміни штифта, скидання чіпа). Я щось пропускаю? Чи існують дивовижні методи низької потужності для генерування періодичного сигналу пробудження для MCU?
Припустимо, що моя мета - мінімізувати споживання електроенергії (тобто глибоко спати довше, залишатися неспаним якомога коротше), періодично прокидаючись для виконання функції, який загальний спосіб досягти такого типу поведінки? Щоб додатково спростити питання, давайте припустимо, що моя функція без громадянства (мені не потрібно пам'ятати нічого з минулого, щоб виконувати її).
Я мав певний успіх, використовуючи WDT на MSP430, щоб досягти цього ефекту. Щойно я зробив основну функцію моєї функції: останній рядок дав змогу таймеру сторожового часу закінчитися через певний період і перейти в LPM4.5 або як би там не називався режим "глибокого сну". Чистий результат - функція виконується, MCU спить, WDT закінчується, а чіп скидає, ad nauseum. Здається, працює, просто цікаво, чи існує "кращий" чи "більш елегантний" чи "більш енергоефективний" спосіб такого типу поведінки?
Я ще не пробував такого підходу з AVR, але думаю, що WDT в AVR більше "голодний", ніж на MSP430, тому він може бути менш привабливим для роботи з низькою потужністю. Можливо, не існує «універсального» підходу до малої потужності, і вам доведеться використовувати інструменти, надані певною лінією продуктів? Я знаю, що в новій лінійці picoPower є безліч функцій, що ведуть виклик, таких як система подій і сонний прогулянки, які в деяких випадках навряд чи вимагають від центрального процесора взагалі, якщо ви можете зробити так, щоб ваше додаток вписувалося в цю структуру ...
ОК, досить мого блукання, давайте тут, що вам доведеться сказати :)
Редагувати конкретні приклади, що ілюструють методи, також було б круто!