quarta-feira, 15 de fevereiro de 2017

Recursos especiais do PIC (parte 2)

Como prometido, continuo aqui com o último post sobre alguns módulos dos PICs. Lembrando novamente que estamos falando sobre o PIC18F2550/4550 mas isto se aplica a todos que tiverem. Confiram sempre o datasheet do seu microcontrolador para conferir o nome e função dos registradores.

Fail-Safe Clock Monitor

No último post da série, falamos sobre o WDT e como ele pode nos ajudar quando o PIC "trava", mas e a causa deste travamento? Um estouro de pilha? Uma operação ilegal? Uma flutuação de tensão? Ruído na alimentação? Bem, em todos estes casos com certeza o WDT irá atuar e se for algo transiente, o PIC retoma à operação normal. Mas e se ele travou porque houve uma falha no seu Oscilador externo? Se deu defeito no capacitor ou no cristal do circuito de clock? Aí entra o FSCM pra salvar o dia.
 Segundo o datasheet, "O Fail-Safe Clock Monitor (FSCM) permite ao microcontrolador continuar a operar na eventual falha do oscilador externo ao mudar automaticamente o clock do dispositivo para o bloco oscilador interno". Ao detectar uma falha no oscilador externo, o PIC gera uma interrupção (OSCFIF), muda o clock para o interno e limpa o WDT. Com a interrupção você pode optar por dois caminhos: entrar em um dos estados de gerenciamento de energia do PIC ou escolher a próxima fonte de clock.
No programa, tudo que envolver tempo terá que ser ajustado para o novo clock interno, ou você pode usar um cristal sempre da mesma frequência do clock interno escolhida (eu trabalharia com 8MHz).
Para ativar este recurso, primeiro configure o registrador OSCCON selecionando o clock desejado em caso de falha e as interrupções (INTCON). Ative a interrupção pelo bit OSCFIE e a monitore pelo bit OSCFIF. Lembre-se de ativar o bit de configuração FCMEN (CONFIG1H).

Two-Speed Start-up

 Este é o mais simples de todo: ative o bit de configuração IESO (CONFIG1H). Em modos de oscilador que usem um cristal (XT, HS, XTPLL e HSPLL), este recurso permite o microcontrolador rodar no clock interno até que o clock do cristal esteja estável. O sugerido é apenas que a primeira coisa que seu programa deve fazer é configurar o clock interno (escolher a velocidade) através do OSCCON. Assim que o clock do cristal estiver pronto, automaticamente o PIC muda sua fonte de clock para ele. É uma boa alternativa para o Power-Up Timer.

High/Low Voltage Detector

 Este é o tipo de recurso que você quer ter ativado caso esteja alimentando seu circuito com bateria ou fontes que estejam sujeitas a flutuações de tensão. Este módulo é basicamente um comparador de tensão com sua referência ajustável. Quando a tensão no pino RA5 (HLVDIN) ficar acima ou abaixo do nível configurado, é gerada uma interrupção (HLVDIF). Este módulo é configurado pelo registrador HLVDCON. Importante ressaltar que cada vez que você ativa este módulo, ele leva um tempo para estabilizar, e para isto, há um bit que informa quando ele está pronto (IRVST). Segundo o datasheet, para usar ele você deve prosseguir da seguinte forma:
1. Desabilite o módulo limpando o bit HLVDEN (HLVDCON<4>).
2. Escreva o valor aos bits HLVDL3:HLVDL0 que selecionam a tensão de disparo do HLVD desejada.
3. Arme o bit VDIRMAG para detectar uma tensão acima (VDIRMAG=1) ou abaixo (VDIRMAG=0) da tensão de disparo.
4. Habilite o módulo HLVD armando o bit HLVDEN.
5. Limpe a bandeira de interrupção do HLVD, HLVDIF
(PIR2<2>), que pode ter sido armada por uma interrupção anterior.
6. Habilite a interrupção do HLVD, se desejado, armando os bits HLVDIE e GIE/GIEH (PIE2<2> and INTCON<7>). Uma interrução não será gerada até o bit IRVST estar armado.
E pronto! O HLVD estará aí pra te ajudar a saber se uma tensão está abaixo ou acima de um valor desejado. Isto é muito útil pra monitorar a tensão da bateria que alimenta seu circuito, por exemplo.


Estes eram os últimos módulos que faltavam eu comentar. Sei que ficou parecendo estar tudo por cima mas a ideia era apresentar os módulos pra que vocês saibam da existência deles. Recomendo e muito lerem o datasheet para entenderem como eles funcionam e para como usá-los da melhor forma nos seus projetos. Tire sempre o máximo proveito do microcontrolador que você comprou!

Nenhum comentário:

Postar um comentário