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

14

Очевидно, что для ШИМ требуются вычислительные ресурсы (и, следовательно, они не могут быть выполнены одновременно с другими процессами), но если бы мне пришлось установить вывод в качестве выхода 5 В или 0 В, остаются ли эти состояния постоянными или они постоянно «обновляются», так как микроконтроллер работает с другими процессами ?

Это трудно объяснить в тексте, поэтому я подумал об аналогии с моим вопросом. Представьте, что у меня в руке стакан, и я получил указание поставить его на стол. Затем я получил указание сесть в кресло.

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


Или, может быть, проще - микроконтроллер «забывает», если хотите, о состояниях своих выводов, если вы явно не запрограммировали изменение состояния?

Надеюсь, я сделал это как можно более запутанным.

sherrellbc
источник
4
+1 Интересный вопрос, хотя ваше первое утверждение неверно и идея аппаратного ШИМ такова, что процессор не должен быть задействован все время. Но оставьте это так, и я уверен, что у кого-то будет хорошее объяснение того, как все это работает.
PeterJ
Я думал, что ШИМ таков, что процессор меняет время цикла ВЫСОКИЙ / НИЗКИЙ. Таким образом, кажется, что процессор вовлечен непосредственно - по крайней мере, в тот момент, когда состояние изменяется.
sherrellbc
1
Чтобы изменить коэффициент заполнения, скажем, с 10% до 20%, необходимо задействовать процессор, но только на несколько циклов, чтобы изменить регистр. Для аппаратного ШИМ, скажем, однажды он изменился на 20%, даже если аппаратная частота ШИМ равна 1 МГц, он больше не влияет на процессор.
PeterJ
У вас есть хорошие ссылки на документацию о том, как микроконтроллер работает на более низком уровне? Я не понимаю ваших ссылок на реестр, поэтому не могу полностью оценить эти ответы.
sherrellbc
1
Не очень запутанно. Стараться!
Радагаст

Ответы:

16

То, как я интерпретирую вопрос, не имеет никакого отношения к ШИМ, извините, если я далеко от базы, но похоже, что вы использовали его в качестве примера.

Почти все типы микроконтроллеров и устройств с вводом / выводом используют защелки / FF для управления своими выходными цепями. Это означает, что когда вы устанавливаете состояние, оно остается в этом состоянии. Это не похоже на DRAM, где выходная статистика должна постоянно обновляться, чтобы оставаться в своем состоянии.

На вашем примере со стеклом я никогда не видел оборудования, которое бы неоднократно брало и ставило стекло на стол. Он только поставит стекло на стол и оставит его там до тех пор, пока не будет запрошено изменение состояния.

Возвращаясь к ШИМ (на тот случай, если вы на самом деле спрашивали о ШИМ). Независимо от того, используете ли вы этот бит или ваш микроконтроллер имеет выделенное оборудование, как указано в других сообщениях, доступ к блоку ввода-вывода и его изменение возможен только в том случае, если изменение состояния запрашивается при запуске кода или периферийного устройства ШИМ.

Крис Бансен
источник
Это как раз мой вопрос, хотя для микроконтроллеров кажется, что я не понимаю, чего я не понимаю.
sherrellbc
3
Просто держите нос в таблицах данных, экспериментируйте и задавайте вопросы. Вы получите навык этого.
Крис Бансен
11

Микроконтроллер не должен обновлять выходы. Как только они установлены, они сохраняют свое состояние в течение неопределенного времени (до тех пор, пока власть не будет снята). В то время как в старых процессорах для поддержания состояния процессора требовались часы, современные процессоры называются полностью статичными. Это означает, что часы действительно могут быть остановлены, и все останется в своем текущем состоянии. Это потому, что все регистры (включая ввод / вывод) создаются с использованием триггеров.

Radagast
источник
И мы делаем успехи! Спасибо теперь имеет больше смысла. Спасибо!
sherrellbc
10

Большинство современных микроконтроллеров имеют выделенную аппаратную периферию PWM, которая заботится о PWM, очень грубая аналогия может быть:

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

По вашей аналогии, это будет похоже на то, как если бы другой человек держал стакан, вы велели ему поставить его на стол, пока вы можете свободно сидеть на стуле.

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

Вот схема компоновки популярного 8-битного микроконтроллера PIC16F690 . Обратите внимание на периферию, расположенную внизу:

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

Оли Глейзер
источник
Я не осознавал, что такие периферийные компоненты существуют. Так эти компоненты довольно маленькие процессоры? Это имеет большой смысл, такие вещи существуют.
sherrellbc
Не процессоры, нет - периферия больше похожа на выделенные аппаратные блоки, разработанные специально для выполнения определенной задачи. Например, типичная микросхема будет иметь на борту периферийные устройства, такие как АЦП, ШИМ, таймеры, UART, SPI и т. Д.
Оли Глейзер,
Я определенно углублюсь в эту тему, хотя мое понимание этих систем, безусловно, предвзято. У меня сложилось впечатление, что ОК будет выполнять всю обработку. «Инструкции», данные периферийным устройствам, должны быть интерпретированы. Я полагаю, что это то, где я не полностью понимаю.
sherrellbc
2
Я добавил диаграмму типичного микро - хорошее место, чтобы начать чтение - это таблица данных, с которой я также связан.
Оли Глейзер
@sherrellbc, вот где процессор и микропроцессор различны. В микроконтроллере вы можете видеть, что, например, RAM, ROM, ALU, последовательный порт и т. Д. Все интегрированы в один чип. В ПК вы знаете, что процессор подключен извне к таким цепям.
Чу
5

Вы делаете некоторые предположения, которые не совсем верны. Кроме того, да, вы сделали вопрос как можно более запутанным. Шутки в сторону.

ШИМ может выполняться одновременно с другими процессами. Если это сделано программно, вы используете прерывания по таймеру для генерации ШИМ-сигнала на выводе GPIO. Другие прерывания могут выполняться, и основной процесс - это делать не связанные вещи. Кроме того, многие MCU могут выполнять ШИМ непосредственно в периферийном устройстве таймера, освобождая MCU для других целей.

Что касается выводов ввода / вывода, они мультиплексированы. Но вы контролируете, как они мультиплексируются, так что это не проблема.


источник
Я понимаю ваш комментарий относительно прерываний таймера ШИМ - это имеет смысл. Таким образом, процессор включается только в тот момент, когда он меняет состояние вывода. Хотя вы говорите, что выводы ввода / вывода являются мультиплексированными, то есть, если я запрограммирую контроллер на вывод вывода ВЫСОКИЙ, а затем выполню какой-то другой несвязанный расчет, тогда вывод будет мгновенно установлен на НИЗКИЙ, пока выполняются такие процессы?
sherrellbc
@sherrellbc Вы управляете мультиплексированием контактов. Обычно вы настраиваете их во время загрузки и не меняете их после этого. Так что он не будет «мгновенно низким», если вы специально не скажете ему это сделать.
Извиняюсь, если, добавив пример ШИМ, я запутал читателей. Цель этого вопроса состояла в том, чтобы определить, мультиплексирован ли контролируемый вывод ввода-вывода, установленный на HIGH, контроллером (то есть потому, что он должен постоянно «обновлять» состояния выводов и выполнять одновременно только одну операцию). Однако теперь я понимаю, что в микроконтроллерах есть много чего я не понимаю (периферийные устройства). Поэтому мне кажется, что ответ - нет, выходные выводы установлены в состояние и остаются в этом состоянии постоянно до тех пор, пока не будут изменены.
sherrellbc
1

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

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

Для цифровых выходов, после того, как выводы установлены как выходы, они будут хранить последнее значение, записанное им процессором, - нет необходимости периодически «обновлять» их.

Питер Беннетт
источник
Они будут мультиплексированы, если процессор установит значение, удалит это значение, выполнит другие инструкции, а затем зациклится и снова установит исходное значение. Это суть моего вопроса. Однако из приведенных выше ответов есть различные периферийные устройства, которые формируют эти функции, и процессор не имеет к этому никакого отношения, пока не получит указание поступить иначе; Я понятия не имел об этом. Много учиться. Спасибо за ответ.
sherrellbc
1

В простом примере аппаратного ШИМ периферийного устройства микроконтроллера 8-разрядный счетчик может быть подключен к 8-разрядному цифровому компаратору. Микроконтроллер будет загружать число в компаратор и увеличивать счетчик системными часами или какой-либо его предварительно разделенной версией. затем счетчик будет работать в автономном режиме, отсчитывая от 0 до 255 и возвращаясь к нулю несколько раз. Компаратор будет иметь вывод, указывающий, является ли значение счетчика большим или меньшим, чем значение компаратора. Это станет выходом ШИМ. Период ШИМ будет означать, сколько времени потребуется счетчику для завершения цикла счета, а рабочий цикл будет равен доле общего счета, представленной значением компаратора. Код микроконтроллера не будет иметь ничего общего с первоначальной настройкой аппаратного обеспечения и изменением данных компаратора при желании изменить шим. ШИМ будет выводить непрерывный поток импульсов ШИМ без внимания процессора.

Дэн
источник