Мікроконтролери - постійні чи мультиплексовані вихідні стани?


14

PWM, очевидно, вимагає обчислювальних ресурсів (і, отже, це не може бути виконано одночасно з іншими процесами), але якщо я повинен встановити штифт як вихід 5V або 0V, чи залишаються ці стани постійними або вони багаторазово «оновлюються», оскільки мікроконтролер працює на інших процесах ?

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

Склянка на столі - це стан. Чи залишаю я склянку на столі, або я піднімаю її назад, сідаю, і повторюю дуже швидко, щоб ви не розуміли, що келих колись виймали зі столу?


Або, мабуть, простіше, чи не забуде мікроконтролер, про стан його штифтів, якщо ви прямо не запрограмуєте зміни стану?

Сподіваюся, я зробив це якомога заплутаніше.


4
+1 Цікаве запитання, хоча ваше перше твердження є невірним, і ідея апаратної ШІМ така, що процесор не повинен бути задіяний весь час. Але залиште це так, і я впевнений, що хтось буде добре пояснити, як це все працює.
PeterJ

Я подумав, що ШІМ такий, що процесор змінює час циклу ВИСОКИЙ / НИЗЬКИЙ. Таким чином, здається, що безпосередньо пов'язаний процесор - принаймні час, в який змінюється стан.
sherrellbc

1
Щоб змінити робочий цикл від скажімо 10% до 20%, потрібно змінити процесор, але лише кілька циклів, щоб змінити регістр. Що стосується апаратної ШІМ, то скажімо, що вона зміниться до 20%, навіть якщо частота апаратних ШІМ становить 1 МГц, це більше не впливає на процесор.
PeterJ

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

1
Не дуже заплутано. Намагатися!
radagast

Відповіді:


16

Те, як я трактую питання, не має нічого спільного з ШІМ, вибачте, якщо я далеко від бази, але це здається, що ви використовували його як просто приклад.

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

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

Повернення до ШІМ (про всяк випадок, коли ви насправді запитували про ШІМ). Незалежно від того, чи ви його зробили, або ваш мікроконтролер має спеціальне обладнання, як зазначено в інших публікаціях, до блоку вводу / виводу можна отримати доступ і змінити лише в тому випадку, якщо вимагається зміна стану за допомогою запущеного коду або PWM-периферії.


Це саме моє питання, хоча мікроконтролерам, здається, є багато чого, що я не розумію, що не розумію.
sherrellbc

3
Просто тримайте ніс у таблицях, експериментуйте та задавайте питання. Ви отримаєте повісити його.
Кріс Бансен

11

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


І ми прогресуємо! Вдячність зараз має більше сенсу. Дякую!
sherrellbc

10

Більшість сучасних мікроконтролерів мають спеціальну апаратну PWM-периферію, яка піклується про ШІМ, дуже груба аналогія може бути:

Ядро процесора каже периферійному пристрою: "перемикайте цей штифт на 10 кГц і 50% робочого циклу, поки я не скажу вам інакше". Тоді ядро ​​вільно робити інші речі. Він може встановити переривання, тобто попросити периферійну апаратуру сказати, коли щось цікавить.
Ви, можливо, можете подумати про серцевину як «начальника», а про периферію як про спеціалістів. Ядро управляє цілою програмою (читає кожну інструкцію та діє на неї) і "просить" периферійних пристроїв виконувати різні завдання та повідомляти про них після їх виконання.

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

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

Ось схема компонування популярного 8-бітового мікроконтролера PIC16F690 . Зауважте периферійні пристрої, розташовані внизу:

введіть тут опис зображення


Я не розумів, що існують такі периферійні компоненти. Тож ці компоненти досить невеликі процесори? Має великий сенс такі речі існують.
sherrellbc

Ні процесори, ні - периферійні пристрої більше схожі на виділені апаратні блоки, розроблені спеціально для виконання певного завдання. Наприклад, типовий мікрофон буде мати на борту периферійні пристрої, такі як АЦП, ШІМ, таймери, UART, SPI тощо.
Олі Глазер

Я, безумовно, заглиблююся в цю тему, хоча моє розуміння цих систем, якщо, безумовно, упереджене. У мене було враження, що UC буде робити всю обробку. "Інструкції", надані периферійним пристроям, повинні тлумачитися. Я вважаю, що це я не повністю розумію.
sherrellbc

2
Я додав схему типового мікро - хорошим місцем для початку читання є таблиця даних, з якою я також зв’язався.
Олі Глазер

@sherrellbc, саме там процесор і мікропроцесор відрізняються. У µC ви бачите, що, наприклад, оперативна пам’ять, ROM, ALU, послідовний порт тощо, інтегровані в один чип. У ПК ви знаєте, що процесор підключений зовні до таких схем.
chwi

5

Ви робите деякі припущення, які не є дійсними. Також так, ви зробили це питання максимально заплутаним. Серйозно.

ШІМ можна робити одночасно з іншими процесами. Якщо це зроблено в програмному забезпеченні, ви використовуєте таймери переривання для генерування ШІМ-сигналу на штифті GPIO. Інші переривання можуть працювати, а основний процес - це робити непов'язані речі. Крім того, багато MCU можуть робити ШІМ безпосередньо в периферійному таймері, звільняючи MCU робити інші дії.

Що стосується вводу-виводу штифтів, то вони мультиплексовані. Але ви контролюєте, як вони мультиплексовані, тож насправді це не проблема.


Я розумію, що ваш коментар щодо переривання таймеру ШІМ - це має сенс. Таким чином процесор бере участь лише в той момент, коли він змінює вихідний стан. Хоча, ви кажете, що штифти вводу / виводу є мультиплексованими - так, якщо я запрограмував контролер на виведення ПІВ-ВИСОКОГО, а потім виконувати якийсь інший не пов'язаний обчислення, то штифт на мить встановлюється на НИЗКО, поки виконуються такі процеси?
sherrellbc

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

Я прошу вибачення, якщо додавши приклад ШІМ, я збентежив читачів. Завдання цього питання полягала в тому, щоб визначити, чи регульований контролером мультиплексований контрольований штифт вводу / виводу, встановлений на HIGH (тобто тому, що він повинен постійно "оновлювати" стани шпильок і робити одночасно одночасно). Однак зараз я розумію, що мікроконтролерам є багато чого, що я не розумію (периферія). Тож мені подобається, що відповідь «ні», вихідні штифти встановлюються в стан і залишаються в такому стані постійно, поки не будуть змінені.
sherrellbc

1

Більшість контактів вводу / виводу на мікроконтролерах є багатофункціональними, але я б не називав їх мультиплексними.

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

Для цифрових виходів, коли штифти будуть встановлені як виходи, вони матимуть останнє значення, яке процесор написав їм - не потрібно періодично "оновлювати" їх.


Вони були б мультиплексовані, якби процесор встановив значення, видалив це значення, виконав інші вказівки, а потім петлював і знову встановлював початкове значення. У цьому суть мого питання. Однак із наведених вище відповідей є різні перигенерали, які формують ці функції, і процесор не має нічого спільного з цим, поки не буде доручено робити інше; Я про це не здогадувався. Багато вчитися. Дякую за відповідь.
sherrellbc

1

У простому прикладі апаратної PWM периферійної апаратури мікроконтролера може бути підключений 8-бітний лічильник до 8-бітового цифрового компаратора. Мікроконтролер завантажив би номер у компаратор і збільшив лічильник за допомогою системного годинника або якогось розділеного на нього додаткового варіанту. Тоді лічильник буде вільним бігом, рахуючи від 0 до 255 і повертаючись до нуля повторно. У порівняльника буде вихід, який вказує, чи є значення лічильника більше або менше порівняльного значення. Це стане результатом ШІМ. Період PWM був би тим, скільки потрібно часу, щоб лічильник пройшов цикл підрахунку, а робочий цикл був би часткою від загального підрахунку представленою величиною порівняльника. Код мікроконтролера нічого не повинен робити, крім того, щоб спочатку налаштувати обладнання та змінити дані компаратора, коли потрібна зміна pwm. ШІМ виводить безперервний потік ШІМ імпульсів без уваги процесора.

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