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).
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