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