NXP LPC1768 CMSIS RTC-Alarm deaktivieren

Gast #3676231
Lesenswert?

Hallo,

mit folgendem Code-Schnipsel kann ich per CMSIS einen RTC-Alarm setzen:
1
void main(void) {
2

3
RTC_SetTime(LPC_RTC, RTC_TIMETYPE_SECOND, 0);
4
RTC_SetAlarmTime (LPC_RTC, RTC_TIMETYPE_SECOND, 10);
5

6
}

Blöderweise bekomme ich den Alarm in der ISR dann nicht mehr deaktiviert 
und die ISR wird alle 60 Sekunden erneut ausgelöst:
1
void RTC_IRQHandler(void) {
2

3
  if (RTC_GetIntPending(LPC_RTC, RTC_INT_ALARM))
4
  {
5
    debugMessage("ALARM!");
6
    RTC_ClearIntPending(LPC_RTC, RTC_INT_ALARM);
7
  }
8
}

Weiß jmd. Rat?
Gast #3676338
Lesenswert?

Gemäß der Doku sollte es dann ausreichen wenn das AMR auf 255 gesetzt 
wird, aber das Problem besteht weiterhin
1
void RTC_IRQHandler(void) {
2

3
  if (RTC_GetIntPending(LPC_RTC, RTC_INT_ALARM))
4
  {
5
    debugMessage("ALARM!");
6
    LPC_RTC->AMR = 255;
7
  }
8
}
#3676370
Lesenswert?

Versuche es doch mal mit der Funktion
1
void RTC_CntIncrIntConfig (LPC_RTC_TypeDef *RTCx, uint32_t CntIncrIntType, FunctionalState NewState)
wobei NeState=DISABLE sein sollte.

DISABLE: Counter Increment interrupt for this time type are disabled

Wahlweise kann auch die zugehörige Clock abgeschaltet werden mit
1
void RTC_DeInit(LPC_RTC_TypeDef *RTCx)
#3683371
Lesenswert?

Hallo Karsten,

ich habe keine Erfahrung mit RTC und CMSIS auf ARM Cortex M3, dass aber 
in der umfangreichen Library die Funktionen zum Setzen und Aktivieren 
der Alarm Clock enthalten sein sollen und keine der Funktionen wieder
abschalten kann, ist doch etwas befremdlich. Hat CMSIS schlechte Arbeit 
geleistet oder ist die Doku nicht eindeutig?

http://mbed.org/users/yoonghm/code/CMSIS/docs/tip/group__RTC__Public__Functions.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren