Fork me on GitHub

Microcontrolandos

O Blog está passando por uma fase de mudanças. Todos os posts estão sendo atualizados, códigos, links e imagens estão sendo arrumados. Conteúdos novos ainda estão por vir.

Módulo HLVD

Share:

Módulo HLVD



PIC18F4550/2550
Os microcontroladores PIC da família 18F, possuem o módulo HLVD (High/Low Voltage Detect), que dispara uma interrupção quando a tensão de alimentação for menor ou maior que o limite de tensão( trip point).

Alguns PIC, possuem somente o LVD(Low Voltage Detect).


VDIRMAG - Evento de disparo:
1 - Gerar uma interrupção quando a tensão de alimentação for maior ou igual ao limite de tensão.
0 - Gerar uma interrupção quando a tensão de alimentação for menor ou igual ao limite de tensão.

IRVST - Sinalização da tensão de referência interna estabilizada:
1 - A tensão de referência foi estabilizada, e poderá ser gerada uma interrupção.
0 - A tensão de referência não foi estabilizada, e não poderá ser gerada uma interrupção.

HLVDEN - Ativar/Desativar o módulo:
1 - Ativado.
0 - Desativado.

HLVD3:HLVD0 - Limite de tensão:
                                   Vmin.  Vtyp   Vmax

Quando HLVD3:HLVD0 for definido como 1111, o limite de tensão será a tensão na entrada do pino HLVDIN.

EXEMPLO:
#define HLVD_EXT 15
#define HLVD_46 14
#define HLVD_43 13
#define HLVD_41 12
#define HLVD_39 11
#define HLVD_37 10
#define HLVD_35  9
#define HLVD_34  8
#define HLVD_31  7
#define HLVD_29  6
#define HLVD_28  5
#define HLVD_26  4
#define HLVD_24  3
#define HLVD_23  2
#define HLVD_22  1
#define HLVD_21  0

void HLVD_Init()
{
 HLVDCON = 0;
 HLVDCON = HLVD_35; //define trip point
 HLVDCON.VDIRMAG = 0; //gera interrupcao quando VDD <= trip point
 HLVDCON.HLVDEN = 1;
 PIR2.HLVDIF = 0;
 while(HLVDCON.IRVST); //espera a estabilizacao da tensão de referência
 PIE2.HLVDIE = 1;
 INTCON.PEIE = 1;
 INTCON.GIE = 1;
}

void interrupt()
{
 if(PIR2.HLVDIF)
 {
  PORTB.F0 = 1;
  PIR2.HLVDIF = 0;
 }
}

void main()
{
    TRISB.F0 = 0;
    HLVD_Init();
}

Nenhum comentário