Microcontroladores - os estados de saída são constantes ou multiplexados?

14

Obviamente, o PWM requer recursos de computação (e, portanto, não pode ser feito simultaneamente com outros processos), mas se eu definir um pino como saída 5V ou 0V, esses estados permanecem constantes ou são repetidamente "atualizados" à medida que o microcontrolador trabalha em outros processos ?

Isso é difícil de explicar no texto, então pensei em uma analogia à minha pergunta. Imagine que tenho um copo na mão e sou instruído a colocá-lo sobre a mesa. Então sou instruído a sentar em uma cadeira.

O copo na mesa é um estado. Deixo o copo em cima da mesa ou o pego de volta e me sento e repito muito rapidamente para que você não perceba que o copo foi removido da mesa?


Ou talvez mais simplesmente, o microcontrolador "esquece", se desejar, sobre os estados de seus pinos, a menos que você programa explicitamente uma alteração de estado?

Espero que tenha feito isso o mais confuso possível.

sherrellbc
fonte
4
+1 Pergunta interessante, embora sua primeira declaração esteja incorreta e a ideia de hardware PWM seja para que o processador não precise estar envolvido o tempo todo. Mas deixe assim e tenho certeza de que alguém terá uma boa explicação de como tudo funciona.
precisa saber é
Eu pensei que PWM é tal que o processador está alterando o tempo de ciclo ALTO / BAIXO. Dessa forma, parece que o processador está diretamente envolvido - pelo menos no momento em que o estado é alterado.
precisa saber é o seguinte
1
Para alterar o ciclo de trabalho de, digamos, 10% a 20%, a CPU precisa estar envolvida, mas apenas por alguns ciclos para alterar um registro. Para o PWM de hardware, digamos que uma vez alterado para 20%, mesmo que a frequência do PWM de hardware seja de 1 MHz, ele não afeta mais o processador.
precisa saber é
Você tem bons links para a documentação sobre como o microcontrolador funciona em um nível inferior? Como não entendo suas referências ao registro, não posso apreciar totalmente essas respostas.
precisa saber é o seguinte
1
Não é muito confuso. Tente mais!
precisa saber é o seguinte

Respostas:

16

A maneira como interpreto a questão não tem nada a ver com o PWM, desculpe se estou muito fora da base, mas parece que você a usou como apenas um exemplo.

Praticamente todos os tipos de microcontroladores e dispositivos com E / S usam uma trava / FF para acionar seus circuitos de saída. O que isso significa é que, quando você define um estado, ele permanece nesse estado. Não é como o DRAM, onde as estatísticas de saída precisam ser constantemente "atualizadas" para permanecerem no seu estado.

Com o seu exemplo de vidro, nunca vi nenhum hardware que pudesse pegar e pousar o copo sobre a mesa repetidamente. Ele apenas colocava o copo sobre a mesa e o deixava lá até que uma mudança de estado fosse solicitada.

Voltando ao PWM (no caso de você realmente estar perguntando sobre o PWM). Independentemente de você escolher o bit ou o seu microcontrolador ter dedicado hardware como outras postagens descritas, o bloco de E / S será acessado e modificado apenas se uma alteração de estado for solicitada executando o código ou o periférico PWM.

Kris Bahnsen
fonte
Essa é precisamente minha pergunta, embora pareça que exista muito para os microcontroladores que eu não percebo que não entendo.
sherrellbc
3
Apenas fique de olho nas planilhas de dados, experimente e faça perguntas. Você vai pegar o jeito.
Kris Bahnsen
11

O microcontrolador não precisa atualizar as saídas. Uma vez definidos, eles mantêm seu estado indefinidamente (até que a energia seja removida). Enquanto nos processadores antigos o relógio era necessário para manter o estado do processador, os processadores de hoje são o que é chamado de totalmente estático. Isso significa que o relógio pode realmente ser parado e tudo permanecerá em seu estado atual. Isso ocorre porque todos os registros (incluindo E / S) são feitos usando flip-flops.

Radagast
fonte
E estamos progredindo! Obrigado faz mais sentido agora. Obrigado!
precisa saber é o seguinte
10

A maioria dos microcontroladores modernos possui um periférico PWM de hardware dedicado que cuida do PWM, uma analogia muito grosseira pode ser:

O núcleo do processador diz ao periférico: "alterne este pino em 10kHz e 50% do ciclo de trabalho até que eu diga o contrário". Então o núcleo fica livre para fazer outras coisas. Pode definir uma interrupção, ou seja, pedir ao periférico que informe quando algo de interesse acontecer.
Você pode pensar no núcleo como o "chefe" e nos periféricos como trabalhadores especializados. O núcleo gerencia todo o programa (lê cada instrução e age sobre ele) e "solicita" que os periféricos executem várias tarefas e notifiquem-na quando as concluírem.

Na sua analogia, seria como se outra pessoa estivesse segurando o copo, você as instrui a colocá-lo sobre a mesa enquanto está livre para sentar na cadeira.

Se o micro não tivesse um periférico dedicado, teria que fazê-lo "manualmente" (isto é, ele próprio) e acompanhar o estado dos pinos e o tempo entre as alternâncias. Isso significaria muitos ciclos dedicados a coisas bastante domésticas, que são facilmente manipuladas por um periférico simples.

Aqui está um diagrama do layout de um microcontrolador de 8 bits popular, o PIC16F690 . Observe os periféricos dispostos na parte inferior:

insira a descrição da imagem aqui

Oli Glaser
fonte
Eu não sabia que esses componentes periféricos existiam. Então, esses componentes são pequenos processadores? Faz muito sentido que essas coisas existam.
precisa saber é o seguinte
Não processadores, não - os periféricos são mais como blocos de hardware dedicados projetados especificamente para executar uma determinada tarefa. Por exemplo, um micro típico terá em periféricos de tabuleiro, como ADC, PWM, Timers, UART, SPI, etc.
Oli Glaser
Definitivamente vou me aprofundar nesse assunto, embora minha compreensão desses sistemas seja certamente tendenciosa. Fiquei com a impressão de que o uC faria todo o processamento. As "instruções" fornecidas aos periféricos devem ser interpretadas. Suponho que seja aqui que não estou compreendendo completamente.
precisa saber é o seguinte
2
Adicionei um diagrama de um micro típico - um bom lugar para começar a ler é a folha de dados, à qual também vinculei.
precisa saber é o seguinte
@sherrellbc, é aí que um processador e um microprocessador são diferentes. Em um µC, você pode ver que, por exemplo, RAM, ROM, ALU, porta serial etc. estão todos integrados no mesmo chip. Em um PC, você sabe que o processador está conectado externamente a esses circuitos.
chwi
5

Você está fazendo algumas suposições que não são exatamente válidas. Além disso, sim, você fez a pergunta o mais confusa possível. Seriamente.

O PWM pode ser feito simultaneamente com outros processos. Se feito em software, você usa interrupções no timer para gerar o sinal PWM em um pino GPIO. Outras interrupções podem ser executadas, e o processo principal está fazendo coisas não relacionadas. Além disso, muitos MCUs podem executar o PWM diretamente no periférico do timer, liberando o MCU para fazer outras coisas.

Quanto aos pinos de E / S, eles são multiplexados. Mas você está no controle de como eles são multiplexados, então isso não é realmente um problema.


fonte
Entendo o seu comentário sobre as interrupções do timer PWM - isso faz sentido. Dessa forma, o processador está envolvido apenas no momento em que altera o estado de saída. Embora você diga que os pinos de E / S são multiplexados - ou seja, se eu programar o controlador para emitir um pino HIGH e depois executar algum outro cálculo não relacionado, o pino será momentaneamente definido como LOW enquanto esses processos são executados?
precisa saber é o seguinte
@sherrellbc Você está no controle de como os pinos são multiplexados. Normalmente você os configura no momento da inicialização e não os altera depois disso. Portanto, não seria "momentaneamente baixo", a menos que você diga especificamente para fazer isso.
Peço desculpas se, ao adicionar o exemplo do PWM, confundi os leitores. O objetivo desta pergunta era determinar se um pino de E / S instruído definido como HIGH é multiplexado pelo controlador (ou seja, porque ele deve "atualizar constantemente" os estados dos pinos e fazer apenas uma coisa por vez). No entanto, agora percebo que há muito nos microcontroladores que não entendo (periféricos). Portanto, parece-me que a resposta é não, os pinos de saída são definidos para um estado e permanecem nesse estado perpetuamente até que sejam alterados.
sherrellbc
1

A maioria dos pinos de E / S nos microcontroladores é multifuncional, mas eu não os chamaria de multiplexados.

Por exemplo, vários pinos em um AVR podem ser usados ​​como entrada digital, saída digital ou entrada analógica. Normalmente, você selecionaria a função desejada como parte da inicialização do programa e não a alteraria mais tarde (embora eu possa ver algum motivo para alterar uma entrada analógica para uma entrada digital para visualizar o mesmo sinal).

Para saídas digitais, uma vez que os pinos são definidos como saídas, eles manterão o último valor que o processador escreveu para eles - não é necessário "atualizá-los" periodicamente.

Peter Bennett
fonte
Eles seriam multiplexados se o processador definir o valor, removê-lo, executar outras instruções e, em seguida, fazer um loop e definir o valor original novamente. Essa é a essência da minha pergunta. No entanto, a partir das respostas acima, existem vários peri-hipertais que comportam essas funções e o processador não tem nada a ver com isso até que seja instruído a fazer o contrário; Eu não tinha ideia disso. Muito a aprender. Obrigado pela resposta.
sherrellbc
1

Em um exemplo simples de um periférico PWM de hardware de microcontrolador, um contador de 8 bits pode ser conectado a um comparador digital de 8 bits. O microcontrolador carregaria um número no comparador e aumentaria o contador com o relógio do sistema ou com uma versão dividida em pré-escala. o contador funcionaria livremente, contando de 0 a 255 e retornando a zero repetidamente. O comparador teria uma saída indicando se o valor do contador é maior ou menor que o valor do comparador. Isso se tornaria a saída PWM. O período do PWM seria quanto tempo leva para o contador concluir um ciclo de contagem e o ciclo de serviço seria qual fração da contagem total é representada pelo valor do comparador. O código do microcontrolador não teria nada a fazer, exceto configurar o hardware inicialmente e alterar os dados do comparador quando uma alteração de pwm for desejada. O PWM produziria um fluxo contínuo de pulsos PWM sem a atenção do processador.

Dan
fonte