Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Analiz_vikhidnikh_danikh (1).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
497.91 Кб
Скачать

1.3 Управління енергоспоживанням і режими сну

Використання режимів сну дозволяє відключати невживані модулі мікроконтролера, тим самим зменшуючи споживану потужність. Мікроконтролер підтримує декілька режимів сну, що дозволяють програмістові оптимізувати енергоспоживання під вимоги програми.

Для переходумікроконтролера в один з шести режимів сну необхідно попередньо встановити біт SE в регістрі MCUCR, а потім виконати інструкцію SLEEP. Біти SM2, SM1 і SM0 регістра MCUCR задають в який саме режим буде переведений мікроконтролер (холостий хід "Idle", зменшення шумів АЦП "ADC NoiseReduction", вимикання "Power-down", економічний "Power-save", черговий "Standby" або розширений черговий "ExtendedStandby") після виконання команди SLEEP.

Вихід з режиму сну відбувається при виникненні дозволеного переривання. У цьому випадку, крім часу старту мікроконтролер призупиняється на 4 машинних цикли, виконує процедуру обробки переривання і продовжує виконувати команди наступні за SLEEP. Вміст файлу регістрів і статичного ОЗП залишається незмінним після виходу з режиму сну. Якщо під час дії режиму сну виникає умова скидання, то мікроконтролер пробуджується і виконує код програми по вектору скидання.

Розряд 5 - SE: Дозвіл перекладу в режим сну

У біт SE повинна бути записана лог. 1, коли необхідно мікроконтролер перевести в режим сну командою SLEEP. Щоб уникнути незапланованого програмістом переходумікроконтролера в режим сну рекомендується встановлювати цей біт безпосередньо перед виконанням інструкції SLEEP і скидати відразу після пробудження.

Розряди 4..2 - SM2..0: Біти 2, 1 і 0 вибору режиму сну

За допомогою даних біт можна вибрати один з шести режимів сну у відповідності з таблицею 1.3.

Таблиця 1.3 - Вибіррежиму сну

SM2

SM1

SM0

Найменування режиму сну

0

0

0

Холостий хід

0

0

1

Зменшення шумів АЦП

0

1

0

Вимикання

0

1

1

Економічний

1

0

0

Зарезервований

1

0

1

Зарезервований

1

1

0

Черговий (1)

1

1

1

Розширений черговий (1)

Режим холостого ходу (Idle)

Якщо значенням біт SM2..0 привласнити 000, то після виконання інструкції SLEEP мікроконтролер переходить в режим холостого ходу, в якому зупиняється ЦПУ, але продовжують роботу SPI, аналоговий компаратор, АЦП, двохпровідний інтерфейс, таймери-лічильники, сторожовий таймер і система переривань. По суті, в даному режимі зупиняється синхронізація ядра ЦПУ і флеш-пам'яті, а решта продовжує роботу.

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

Режим зменшення шумів АЦП (ADC NoiseReduction)

Якщо значенням біт SM2..0 привласнити 001, то виконання інструкції SLEEP приведе до переходумікроконтролера в режим зменшення шумів АЦП, в якому зупиняється ЦПУ, але продовжують роботу АЦП, зовнішні переривання, спостереження за адресою двохпровідної послідовної шини, таймер-лічильник 0 і сторожовий таймер (звичайно, якщо були попередньо активізовані). Фактично в даному режимі припиняється синхронізація вводу-виводу (clkI / O), ядра ЦПУ (clkCPU) і флеш-пам'яті (clkFLASH), а решта синхронізації продовжує роботу.

У цьому режимі створюється більш сприятливі умови для аналогово-

цифрового перетворення з підвищеною роздільною здатністю за рахунок зниження впливу шумів на результат вимірювання. Якщо дозволена робота

АЦП, то перетворення автоматично запускається при перекладі в даний режим. Вихід з даного режиму допускається не тільки при генерації запиту на

переривання по завершенню перетворення АЦП, але і при зовнішньому скиданні, скиданні по сторожовому таймері, скиданні при неприпустимому зниженні живлення, перериванні при виявленні встановленої адреси на двох провідній послідовній шині, перериванні по таймеру-лічильнику 0 , перериванні по готовності SPM / EEPROM, перериванні по зовнішньому рівню на виводах INT7: 4 або зовнішньому перериванні по входах INT3: 0.

Режим виключення (Power-down)

Якщо SM2..0 = 010, то виконаннякоманди SLEEP означаєпереведеннямікроконтролера в режим вимкнення. У даномурежиміприпиняє роботу зовнішній генератор, але в діїзалишаютьсязовнішніпереривання,спостереження за адресою на двохпровіднійпослідовнійшині і сторожовий

таймер (за умови, щовониактивізовані). Вихід з даного режиму можливий

тільки за зовнішнімскиданням, скиданнясторожовим таймером, скиданнюсупервізоромживлення, перериванні по виявленнівстановленоїадреси на двохпровіднійпослідовнійшині, перериванні по зовнішньомурівню на виводах INT7: 4 абозовнішнімперериванні INT3: 0. У даномурежиміфактичновідключенагенераціявсіхтактових частот, тому подальша робота модулівпродовжуєтьсятільки в асинхронному режимі.

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

Вихід з режиму вимкненнясупроводжуєтьсязатримкою з моменту виконанняумовипереривання до ефективногопробудження. Дана затримкадозволяєперезапуститисинхронізацію і дочекатисястабільностіїїроботи. Періодпробудженнявизначаєтьсядеякимиконфігураційнимибітами CKSEL, яківизначаютьперіодзатримки при скиданні.

Економічний режим (Power-save)

Якщо встановити значення біт SM2..0 рівним 011, то дія команди SLEEP приведе до переходумікроконтролера в економічний режим. Даний режим ідентичний режиму вимкнення за деякими винятками:

Якщо таймер-лічильник 0 тактується асинхронно, тобто встановлено біт AS0 в регістрі ASSR, то таймер-лічильник 0 в режимі сну продовжить роботу. Вихід з режиму сну можливий як по переповненню таймера, так і при виконанні умови порівняння, якщо відповідне переривання для таймера-лічильника дозволено в регістрі TIMSK, а також встановлений біт загального дозволу переривань в регістрі SREG.

Якщо для асинхронного таймера не включено асинхронне тактування, то рекомендується використовувати режим виключення замість економічного, тому вміст регістрів асинхронного таймера повинно розглядатися як невизначений після виходу з економічного режиму, в якому значення AS0 дорівнює 0.

У даному режимі сну зупиняються всі тактові джерела за винятком асинхронних (clkASY), що працюють тільки спільно з асинхронними модулями, в т.ч. таймер-лічильник 0 з дозволеною опцією асинхронного тактування.

Черговий режим (Standby)

Після установки значення SM2..0 = 110 і вибору опції тактування від зовнішнього кварцового або керамічного резонатора виконання інструкції SLEEP призводить до переходу мікроконтролера в черговий режим. Даний

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

Розширенийчерговий режим (ExtendedStandby)

Запис у SM2..0 значення 111 з урахуванням вибору в якості тактового джерела зовнішнього кварцового або керамічного резонатора означає, що після виконання команди SLEEP мікроконтролер буде переведений в розширений черговий режим. Даний режим ідентичний економічному за винятком продовження роботи тактового генератора.

Вихід з розширеного чергового режиму відбувається за шість машинних циклів.

Мінімізація споживаної потужності

У процесі оптимізації енергоспоживання можуть виникнути деякі проблеми. У загальному випадку необхідно по можливості максимально використовувати режими сну, а власне режим сну необхідно вибрати виходячи з підтримки тільки необхідних функцій. Всі невживані функції повинні бути відключені. Зокрема, для наступних модулів з метою досягнення найменше можливого енергоспоживання повинні бути враховані деякі рекомендації.

Аналогово-цифровий перетворювач

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

Аналоговий компаратор

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

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

Супервізор живлення

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

Вбудоване джерело опорної напруги

Робота вбудованого джерела опорної напруги дозволяється, якщо необхідно використовувати супервізор живлення, аналоговий компаратор або АЦП. Якщо дані модулі будуть відключені, то вбудований ДОН також буде відключений і не буде споживати потужність. При поновленні його роботи програміст повинен врахувати затримку на встановлення вихідної напруги ДОН перед його використанням. Якщо ДОН залишається включеним в режимі сну, то його можна використовувати відразу після пробудження.

Сторожовий таймер

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

Лінії портів вводу-виводу

Перед переведенням в режим сну всі лінії портів введення-виведення повинні бути налаштовані з урахуванням споживання мінімальної потужності.

Основну увагу слід приділити відсутності резистивних навантажень на виводах. У режимах сну, де відключена синхронізація вводу-виводу (clkI / O) і АЦП (clkADC), вхідні буфери мікроконтролера відключені. Цим гарантується відсутність енергоспоживання невживаної в режимі сну вхідної логіки. У деяких випадках вхідна логіка необхідна для визначення умови пробудження і в цьому випадку повинна бути . Якщо робота вхідного буфера дозволена, а вхідний сигнал виявився відключеним або має рівень близький до VCC / 2, то цей вхідний буфер буде споживати підвищену потужність.

Інтерфейс JTAG і вбудований блок налагодження

Якщо робота вбудованого блоку налагодження дозволена конфігураційним бітом OCDEN, то навіть при перекладі мікроконтролера в економічний режим (Power-save) або режим виключення (Power-down) командою sleep основне тактове джерело продовжить роботу. У цьому випадку мікроконтролер буде споживати істотний струм навіть у цих режимах сну. Уникнути цього можна за допомогою одного з трьох способів:

  • Скинути конфігураційний біт OCDEN;

  • Скинути конфігураційний біт JTAGEN;

  • Встановити біт JTD в регістрі MCUCSR.

Після дозволу роботи інтерфейсу JTAG вивід TDO залишається плаваючим доти поки JTAG TAP-контролер не почне зрушувати дані. Якщо пов'язана з виведенням TDO апаратна частина не виконує підтягування потенцілуАЛП до плюса живлення, то споживана потужність збільшиться. Зверніть увагу, що вивід TDI наступного мікроконтролера в сканованеколо містить підтягуючий резистор для уникнення даної проблеми. Запис у біт

JTD регістра MCUCSR лог. 1 призводить до відключення інтерфейсу JTAG.

1.4 Сумісність ATmega103 та Atmega8

Atmega8 - мікроконтролер високої складності, де кількість місць розташування введення-виведення становить 64 місця розташування, зарезервованих в наборі інструкцій. Для гарантування зворотної сумісності з ATmega103 всі місця розташування введення-виведення ATmega103 збігаються з Atmega8. Деякі позиції введення-виведення додані в розширений простір введення-виведення, починаючи з адреси $ 60 до $ F, (тобто у внутрішньому

ОЗП ATmega103). Доступ до даних місцерозташувань здійснюється тільки за допомогою інструкцій LD / LDS / LDD і ST / STS / STD, а не за допомогою IN і

OUT. Перерозподіл внутрішнього простору ОЗП може стати проблемою для користувачів ATmega103. Крім того, якщо в коді програми використовуються абсолютні адреси переривань, то це також викличе проблему, тому у Atmega8 збільшено число векторів переривань. Для вирішення цих проблем може використовуватися режим сумісності з ATmega103, для чого необхідно запрограмувати конфігураційний біт M103C. У даному режимі не доступні функції з розширеного простору введення-виведення, т.ч. досягнуто розташування внутрішнього ОЗП як у ATmega103. Також видалені розширені вектори переривань.

Atmega8 повністю сумісний по розташуванню виводів з ATmega103 і може бути встановлений на існуючу плату для ATmega103.

Режим сумісності з ATmega103

Якщо запрограмувати конфігураційний біт M103C, то Atmega8 буде функціонувати в режимі сумісності з ATmega103, налаштовуючи ОЗП, лінії вводу-виводу і вектори переривань як описано вище. Однак, деякі нові функції Atmega8 в цьому режимі стануть недоступними. Дані функції перераховані

нижче:

  • Один УСАПП замість двох, тільки асинхронний режим. Доступні тільки 8

молодших розрядів в регістрі швидкості зв'язку;

  • Один 16-розр. таймер-лічильник з двома регістрами порівняння замість

двох 16-розр. таймер-лічильників з трьома регістрами порівняння;

  • Чи не підтримується двох провідній послідовний інтерфейс;

  • Порт C діє тільки на виводи;

  • Порт G виконує тільки альтернативні функції;

  • Порт F діє тільки як цифрове введення в додаток до вводу АЦП;

  • У регістрі MCUCSR присутні тільки EXTRF і PORF;

  • Запити на зовнішні переривання 3 - 0 генеруються тільки за рівнем

вхідного сигнала АЛП.

Невикористовувані біти введення-виведення у ATmega103 повинні бути скинуті (запис 0) для гарантування однакового функціонування у складі

Atmega8.