Cadastre seu e-mail para receber as novidades desse blog. Você pode cancelar a qualquer momento.

Delivered by FeedBurner

Assista ao vídeo descritivo acima; depois clique na imagem abaixo para adquirir o seu GUIA PRÁTICO PARA PASSAR EM CONCURSO PÚBLICO EM UM ANO.

Google Website Translator

Postagem em destaque

Automação Residencial com arduíno

Já pensou em criar sua própria casa inteligente, com automações em todos os cômodos? Sem gastar muito? Sem ser um engenheiro ou algo parecid...

Pesquise nesse Blog e na WEB com o Google

sexta-feira, 23 de dezembro de 2011

Microcontroladores

Os microcontroladores têm uma grande quantidade de utilidades. São pequenos processadores que utilizam o conceito de máquina de estados para controlar objetos. Por exemplo, podemos fazer um pequeno controlador para dois semáforos. Veja os esquemas:


Um microcontrolador simples para dois semáforos.

Esquema da máquina de estados.


Há dois sinais de entrada: clk (clock) e rst (reset). O clock é o sinal que faz com que o microcontrolador mude de estado, e deve ser gerado por outro circuito externo gerador de clock. O reset é o um sinal que faz o circuito voltar para o estado inicial e é utilizado quando o circuito é ligado (iniciado).
A caixa amarela no esquema contém a máquina de estados que envia os sinais corretos para a saída do controlador. Esses sinais devem ser interpretados por outro circuito que liga as luzes corretas nos dois semáforos.





Há ainda três portas lógicas do tipo "OU" que completam a lógica do circuito.
As saídas do microcontrolador são: count (contador), que informa em qual estado está o circuito, semaforo1 e semaforo2 que ligam as luzes corretas nos dois semáforos. Os esquemas acima foram criados no programa Quartus II. Abaixo está o resultado de uma simulação do circuito feita no mesmo programa:


Simulação. Observe que o sinal clk (clock) controla o circuito e o ativamento das luzes.

IRQs

1 – Para que servem

A arquitetura dos PCs é estruturada de tal modo a permitir extrema flexibilidade de expansão e também grande capacidade de adaptação. Dentre os recursos que garantem estas facilidades estão os eventos de IRQ (Interrupt Request-Requisição de interrupção) e os processos de DMA (Direct Memory Access-Acesso direto á memória), aliados também aos espaços de memória conhecidos como regiões de I/O. Fica a cargo da equipe de programação de drivers adaptar o software e os dispositivos para um padrão básico.
Muito do que está por trás desta flexibilidade é para a manutenção da compatibilidade com as gerações anteriores de PCs. Os mecanismos de geração e utilização de IRQ e DMA continuam muito similares aos dos PCs XT. O novo barramento PCI e obviamente seu derivado AGP são os que introduziram algumas novidades. A estrutura básica do hardware manteve-se quase inalterada durante as mudanças de gerações, havendo muito mais progressos relativos ao software e à abordagem do tratamento e interpretação das sinalizações. Este último aspecto é bastante sensível no que diz respeito aos drivers. O hardware fica, mas os drivers precisam ser atualizados ou reescritos.





2 – Conceito.

IRQ é um evento que pode ocorrer em qualquer instante por conta de diversos tipos de atividades, servindo então, para anunciar que algo esperado ou inesperado ocorreu.
Uma IRQ é utilizada por dispositivos anexados ao PC quando é necessária a atenção do sistema. Geralmente as IRQs são endereçadas aos drivers de dispositivos ou ao Bios. Essas duas entidades são capazes de reconhecer o que o subsistema requer ou está anunciando.
Se não fosse pelo mecanismo de geração de controle de IRQs, os PCs estariam condenados a pouca flexibilidade dos sistemas de monitoração periódica, ou em inglês, técnicas de polling, (pesquisa). No modo de polling, com certa regularidade, o PC deve questionar a toda possível porta de conexão, se o subsistema precisa de alguma coisa ou tem algo a oferecer. Fica claro que este mecanismo é um devorador de tempo, só sendo viável se um subsistema dedicado fosse o responsável e não a própria CPU, mas nesse caso o custo de implementação seria mais elevado do que o de IRQs.
Pelo menos um subsistema do PC ainda funciona pelo método de polling. Trata-se do joystick, já que as rotinas de leitura devem ser implementadas pelo próprio programa consumindo assim recursos preciosos da CPU.
Geralmente toda placa auxiliar requer a alocação de uma IRQ. Um caso bastante conhecido de subsistema que não requer este sinal são as placas aceleradoras 3D que utilizam o chipset Voodoo e Voodoo2 da 3dfx. Toda a comunicação com o sistema é feita por meio do sistema de vídeo principal, através dos elaborados drivers da placa.


3 – Exemplo prático.

Uma central de alarme informatizada. Pode-se construir uma matriz de sensores e conecta-la a um circuito lógico que armazene a condição de cada sensor. Não é difícil que este circuito perceba que algum dos sensores mudou de estado. Assim que este evento ocorre, uma IRQ pode ser acionada e assim o programa de monitoração pode tomar alguma atitude, como alterar o estado de um desenho na tela indicando qual sensor disparou o evento. O circuito lógico de controle pode armazenar o estado de todos os sensores num buffer local, que após a transferência para a memória acessível pela CPU pode indicar como alterar o desenho na tela.

4 – Sinais de IRQ

Uma IRQ é naturalmente um evento gerado por hardware. Na verdade há também IRQs geradas por software, geradas para auxiliar a execução de um programa ou simular uma ocorrência no hardware.
As IRQs disponíveis para hardware são em número de 16 nos PCs AT (IRQ0 a IRQ15) e em número de 8 nos PCs XT (IRQ0 a IRQ7). Por software há um total de 239 (256 ao todo – 16 de hardware – 1 de NMI).
Entre as interrupções geradas por software, há uma classe especial não inclusa nas 16 computadas anteriormente, reunidas numa única chamada de NMI (NonMaskable Interrupt). Ela não pode ser ignorada pelo PC com concordância da CPU, ou seja , via programação – o processo chamado de “mascaramento” que serve para impedir que as interrupções sejam atendidas pela CPU. As interrupções que ativam a NMI sempre são fatais, como erro de paridade da memória ou alguma anormalidade em um dos subsistemas da placa-mãe especialmente detectada pelo chipset. O sinal desta interrupção NMI é diretamente ligado à CPU por uma via de mesmo nome, com o objetivo de parar imediatamente a atual tarefa e fazer-se manifestar ao usuário. Sempre que uma NMI é gerada, o sistema só pode sair deste estado sendo resetado ou desligado.
As 16 IRQs disponíveis atualmente são gerenciadas no hardware pelo chipset da placa-mãe, normalmente o Soulth Bridge, também responsável pela oferta de uma controladora IDE/ATA.
No processador há apenas uma via que indica que há serviços de IRQ pendentes (INTR). A identificação da IRQ gerada dá-se por meio de registradores do chipset.
No chipset há vias específicas para levantar uma IRQ. No barramento ISA 16 bits, (o ISA com extensão), há 11 vias nomeadas de IRQ3 a IRQ14, com exceção da IRQ8. Já no barramento PCI há apenas 4 vias.






5 – IRQs por software.

O PC oferece 256 interrupções, das quais no máximo 239 podem ser acessadas via software. As interrupções de software mais conhecidas são aquelas oferecidas pelos serviços do Bios. Um programador também pode criar serviços próprios que atendam um pedido de interrupção gerado por um outro programa. Sob Windows é complicado criar este tipo de serviço normalmente e há outros recursos como múltiplas tarefas e threads que podem quase sempre atender aos mesmos objetivos.

6 – Tratamento de IRQs.

Quando acontece a inicialização da máquina, os dispositivos onboard ativos (não desabilitados pelo usuário), recebem determinadas IRQs escolhidas pelo usuário ou realmente fixas por projeto. As demais IRQs são alocadas quando acontece a inicialização de drivers associados com seus respectivos dispositivos, caracterizando o Plug and Play.
Assim que uma interrupção é requisitada, alguma medida deve ser tomada. É sempre um programa, seja ele um driver, ou um programa no hardware (firmware) que é chamado pelo processador para resolver a interrupção. Na inicialização do PC, cada IRQ aponta para um endereço na memória correspondente a um programa que supostamente sabe interpretar o pedido de interrupção. Absolutamente toda IRQ é associada a uma rotina de tratamento, nem que essa rotina não faça nada além do mínimo requerido, simplesmente para que o sistema não trave caso uma IRQ sem utilidade seja acidentalmente ativada.

7 – Utilização das IRQs.

Na primeira concepção do PC os projetistas acreditavam que cada dispositivo que necessitasse de uma IRQ deveria ter uma exclusiva para si. O resultado foi um barramento ISA com diversas vias elétricas dedicadas exclusivamente á sinalização individual de IRQs. Nem ao menos utilizou-se uma forma de multiplexação para economizar na quantidade de vias. Por exemplo, com apenas três vias seria possível sinalizar todas as oitos interrupções do PC XT. Com mais uma, todas as dezesseis dos PCs atuais.
À medida que o PC foi evoluindo e novos periféricos foram sendo adicionados, praticamente todas as IRQs disponíveis foram tomadas. Num PC moderno típico, com direito a USB, não restam mais do que duas ou três IRQs pra placas adicionais, caso as placas não possam compartilhar IRQs.
Com auxílio do Windows 95 OSR2.x, do Windows 98 e dos novos Bios, as IRQs associadas a dispositivos PCI podem potencialmente ser compartilhadas. As IRQs associadas a dispositivos ISA não podem ser compartilhadas. Todas as IRQs disponíveis podem ser utilizadas tanto no barramento ISA quanto no PCI, entretanto para haver compartilhamento, uma mesma IRQ deve ser utilizada exclusivamente por dispositivos PCI.
Desde o início algumas diferenças no método de ativação das IRQs do PCI o tornou diferente. O barramento PCI não está em comunicação direta com o controlador de IRQs assim como ocorre com o ISA. Há um subsistema intermediário chamado PCI Interrupt Router ( PIR – roteador de interrupções PCI).


8 – Compartilhamento de IRQs no PCI.

Muitos dos drivers de dispositivos PCI não se importam em compartilhar IRQs entre si. O sistema operacional será o maior gerente dessas operações. Quando uma IRQ é compartilhada, as rotinas ou tarefas de tratamento associadas são consultadas segundo uma ordem hierárquica baseada na solicitação temporal ao sistema, ou seja, os drivers carregados primeiro são consultados primeiro. Cabe à rotina associada informar ao sistema operacional a IRQ era esperada e que ela já foi tradada. Caso a rotina não reconheça o pedido, então o sistema operacional o passa adiante até que uma rotina a trate. Se por infelicidade nenhum driver assumir a responsabilidade pela IRQ, o sistema simplesmente trava, afinal a função da IRQ é paralisar o sistema para realizar uma operação prioritária e cabe a rotina de tratamento restabelecer o curso normal anterior à interrupção.