MICROCONTROLADORES HOLTEK - PARTE 3
Continuando com a série sobre os microcontroladores Holtek HT48EXX, neste artigo farei uma analise dos pinos de I/O e seus registradores de controle, além dos circuitos de reset e clock para os microcontroladores da família HT48EXX.
O QUE JÁ FOI MOSTRADO NESTA SÉRIE Nas duas primeiras partes desta série, foram apresentados os seguintes temas: -
Principais características do microcontrolador Holtek HT48EXX; Se você está interessado em conhecer mais sobre o microcontrolador Holtek - família HT48EXX, recomendo a leitura das partes anteriores (parte 1 e parte 2). Obs.: Conforme detalhado nas partes anteriores, esta série foi baseada no microcontrolador Holtek HT48E10. Porém tudo o que for dito a respeito deste pode ser utilizado com outros membros da mesma família (HT48EXX), sem maiores problemas.
PINOS DE I/O E SEUS REGISTRADORES DE CONTROLE No microcontrolador HT48E10 existem 19 pinos de I/O bidirecionais, divididos em três “portas”: PA, PB e PC. Estas podem ser acessadas através dos endereços de memória (registros) 12H, 14H e 16H respectivamente. Para uma operação segura, a corrente máxima no modo source não deve ultrapassar 10 mA com alimentação de 5 VDC. No modo dreno esta não deve ser superior a 20 mA, para a mesma alimentação (5 VDC). A figura 1 demonstra ambos os modos.
Uma característica importante a respeito dos pinos de I/O na família HT48EXX é a presença de resistores de pull-up (ou pull-high) em todos os pinos para uso no modo “entrada”. Geralmente em um projeto é comum a inserção de tais resistores externamente. A presença dos mesmos internamente no microcontrolador pode ajudar o projetista na redução da PCI e também nos custos finais do projeto. Os resistores pull-high internos podem ser ativados via software (configurados durante a gravação), porém apenas os pinos selecionados como “entrada” apresentarão tal resistor. Não é possível selecionar a presença do resistor de pull-high individualmente para apenas um determinado pino de entrada, mas somente para a porta como um todo (pinos configurados como entrada). Em geral o valor desta resistência é de 30 kOhms com uma alimentação de 5 VDC, sendo que não é possível alterar este valor via software. Alguns pinos de I/O são compartilhados com funções especiais, como Wake-up (retorno do modo Power Down para economia de energia), entrada para interrupção externa, função buzzer, entrada para timer/counter externo, etc. A tabela abaixo descreve estes pinos, assim como suas funções especiais (quando existirem). Tabela – Descrição dos pinos de I/O
Na
figura abaixo você pode ver a estrutura interna dos pinos de I/O do
microcontrolador HT48EXX. Observando a figura pode-se perceber a presença do registro de controle. Estes registros (PAC, PBC e PCC) permitem a seleção de um pino de I/O como entrada ou saída. Estes registros são acessados através dos endereços de memória 13H, 15H e 17H para as portas PA, PB e PC, respectivamente. Ao
inserir, por exemplo, o valor binário “00001111” no
registrador PBC o microcontrolador estará apto a utilizar os
quatro bits mais significativos da porta “B” (PB4 a PB7) como
saída e os quatro bits menos significativos (PB0 a PB3) como
entrada. Desta forma, o “1” lógico configura um pino como
entrada e o “0” lógico configura um pino como saída.Nesta momento não falarei sobre as funções
especiais.
CIRCUITOS E MODO DE OPERAÇÃO DO RESET Um circuito externo típico para reset que pode ser adotado para os microcontroladores HT48EXX é mostrado na figura abaixo. O pino reservado para o reset (re-inicialização do sistema) é na verdade uma entrada tipo Schmitt Trigger ativa em nível lógico “0”. A figura abaixo traz o diagrama interno para a entrada reset no microcontrolador.
Existem alguns modos de reset para a família de microcontroladores HT48EXX que são: - Reset power-up; Reset power-up: muito importante para o correto funcionamento do microcontrolador. Ele garante a inicialização dos registradores (memória) e dos pinos de I/O (todos configurados como entrada) durante o start-up, pois o mesmo ocorre quando a alimentação aplicada ao microcontrolador for maior que 0.9 x VDD. Este tipo de reset é automático e independe de qualquer ação inserida no programa. A figura abaixo demonstra o diagrama de tempo para o reset por power-up.
Reset LVR: acontece sempre que a alimentação chegar a um valor considerado crítico (menor que 0.9 x VDD). Quando isso ocorrer o microcontrolador sofrerá o reset. Este tipo de reset também é automático e sua ação não pode ser impedida pelo programa. A figura abaixo traz o diagrama de tempo para este tipo de operação.
Reset Manual : é provocado pelo usuário. Para isso basta levar o pino /RES ao nível lógico “0”. Isto pode ser feito através do acionamento de uma chave conectada entre o pino /RES e o GND, por exemplo, ou ainda por um circuito externo especialmente preparado para realizar o reset manual. A figura abaixo mostra o diagrama de tempo envolvido desta operação.
Reset por time-out do WDT – operação normal: ocorrerá sempre que o WDT estiver ativado e o mesmo não for re-inicializado antes da contagem do tempo total previsto no WDT. Este tipo de reset é automático e sua ação pode ser impedida com a re-inicialização do WDT através do programa. A figura abaixo mostra o diagrama de tempo para esta condição.
Reset por time-out do WDT – operação modo HALT: pode ocorrer durante o time-out do WDT com o microcontrolador operando no modo HALT. Este tipo de reset é automático e sua ação só pode ser impedida com desabilitação do WDT antes da entrada no modo HALT. Vale lembrar que em alguns casos pode ser interessante ao sistema desenvolvido a entrada no modo HALT e a saída deste através do reset por time-out do WDT após o período estipulado. Para o reset descrito o diagrama de tempo se parecerá como mostrado na figura abaixo.
Obs.:
Não será discutido nesta parte da série o
reset por Wake-up. Caso você tenha interesse neste recurso, leia o manual (datasheet) do fabricante. Como você pode perceber a maioria das condições de reset no microcontrolador HT48EXX são “automáticas” e apenas uma é “manual”. Dentro das condições consideradas automáticas, algumas podem ser “manuseadas” de acordo com o desejado (operação do sistema) dentro do programa. Um outro detalhe importante a ser considerado é que sempre será possível ao programador (através do programa) saber sobre a última condição de reset provocada. Desta forma o programa poderá realizar a analise sobre as reais condições de operação do sistema através da analise do reset (caso este seja constante). Assim será possível encontrar um bug no programa ou ainda uma situação indesejada de operação como, por exemplo, hardware auxiliar incompatível (problemas na fonte de alimentação, por exemplo), problemas no software (erro no programa), entre outras. Os bits TO e PDF do registrador STATUS “guardam” as condições do último reset. A tabela abaixo mostra o estado desses bits de acordo com a condição do último reset. Tabela – Estado lógico dos bits TO e PDF de acordo com último reset
X – não se modifica
CIRCUITOS E MODOS DE OPERAÇÃO DO CLOCK Na família HT48EXX são permitidos três métodos para se gerar o clock necessário à operação do microcontrolador: cristal ou ressonador externo, rede RC externa e em alguns casos, oscilador interno. A figura abaixo demonstra um típico circuito com cristal ou ressonador externo.
Observando atentamente a figura você pode verificar que este circuito é bastante parecido com outros utilizados por outras famílias de microcontroladores. Os pinos OSC1 e OSC2 recebem o cristal ou ressonador, além dos capacitores e de um resistor. Os valores recomendados para os capacitores e o resistor estão inseridos na tabela abaixo. Tabela – Valores para os capacitores C1, C2 e para o resistor R1
É importante salientar que a função do resistor R1 é manter o oscilador operando em uma condição de baixo consumo. Se o microcontrolador em questão possuir a opção LVR e esta estiver ativada, o resistor R1 poderá ser omitido. A figura abaixo demonstra um circuito para oscilação por meio de uma rede RC para os microcontroladores da família HT48EXX.
O valor admitido para o resistor ROSC deve ficar entre 22 kOhms e 1 MOhm e o valor do capacitor deve, necessariamente, ser 470 pF. Para este tipo de oscilador a entrada utilizada será sempre OSC1, sendo que OSC2 apresentará FSYS/4 (freqüência da rede RC dividida por quatro). A precisão do clock neste caso dependerá muito da qualidade dos componentes utilizados (precisão dos mesmos) além da temperatura de operação. O oscilador interno (quando implementado no microcontrolador) permite selecionar uma freqüência de operação igual a: 3.2 Mhz, 1.6 Mhz, 800 khz ou 400 khz. Fica fácil perceber que o valor da freqüência inferior é obtida a partir da divisão por dois da freqüência superior. Um outro detalhe importante sobre o uso do oscilador interno é que quando este é selecionado os pinos OSC1 e OSC2 podem ser utilizados como pinos de I/O.
CONCLUSÃO Nesta terceira parte desta pequena série, apresentei mais algumas informações importantes sobre o hardware da família de microcontroladores HOLTEK HT48EXX. Por hora o conteúdo destá série é basicamente formado por “conceitos teóricos”, porém sem os mesmos não temos como ir adiante com a "prática". Eu sempre acreditei que somente com uma boa base teórica é que podemos nos considerar prontos para a prática tão desejada. Bons estudos e até a próxima! |
Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor. |