Ir ao conteúdo
  • Cadastre-se

RTCC só chama 1 vez a interrupção


osvaldodelira

Posts recomendados

Prezados,

Estou tentando ligar o modulo do rtcc do PIC24fj256gb106, quando há interrupção ele soma 1 e amostra na tela, mas ele só chama a interrupção apenas 1 vez.

o que estou deixando passar?


void RtccInit(void)
{
RTCCUnlock(); //unlock Timer Registers
RTCCOff(); //disable the RTCC peripheral

PADCFG1 = 0x0000; //RTCC pin pad conected to Alarm

/* Enable the RTCC interrupt*/

IFS3bits.RTCIF = 0; //clear the RTCC interrupt flag
IEC3bits.RTCIE = 1; //enable the RTCC interrupt

/* Configure the alarm settings*/
ALCFGRPTbits.CHIME = 0; //no rolloever of the repeat count
ALCFGRPTbits.AMASK = 0; //alarm mask configuration bits
ALCFGRPTbits.ARPT = 0; //alarm repeat counter value bits

RCFGCALbits.RTCOE = 1; //enable RTCC output

/* Load the initial values to the RTCC value registers*/
RCFGCALbits.RTCPTR = 3; //point to Year register

RTCVAL = 0x0013; //Year
RTCVAL = 0x1119; //Month & Day
RTCVAL = 0x0112; //WkDay & Hour
RTCVAL = 0x3456; //Min & Sec

RCFGCALbits.CAL=0x0000; //No calibration

ALCFGRPTbits.ALRMPTR = 2; //Point to Month/Day register

ALRMVAL = 0x0000; //load month & day
ALRMVAL = 0x0000; //load weekday & hour
ALRMVAL = 0x0000; //load minute & seconds
ALCFGRPTbits.ALRMEN = 1; //enable the alarm
RTCCOn(); //enable RTCC peripheral
RTCCLock(); //lock the RTCC value registers

}

void __attribute__((interrupt,no_auto_psv)) _RTCCInterrupt()
{
global++;
IFS3bits.RTCIF = 0;
}

quando ligo, aparece 0(estado inicial ) e 1 logo depois para de funcionar.

agradeço desde já.

Link para o comentário
Compartilhar em outros sites

Olhando rápido e sem ver toda a inicialização,pode ser que o compilador não está achando 'útil' a variável global não fazer nada.

Experimente;

void __attribute__((interrupt,no_auto_psv)) _RTCCInterrupt()
{
IFS3bits.RTCIF = 0;
global++;
}

E DEIXE a variavel 'global' como volatile(volatile int global).

Link para o comentário
Compartilhar em outros sites

obrigado por responder.

infelizmente não é isto(testei).

Esqueci de dizer, eu testei com o timer1 usando interrupção e funcionou, mas alem de não ser a intenção, quando eu leio os valores de RTCVAL eles nao aparecem corretamente. acredito que seja pelo mesmo motivo de eu nao estar conseguindo habilitar corretamente a interrupção.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...