LPTMR(Low-Power Timer)란 ?

2025. 2. 11. 21:50·Embedded/Embedded SW

LPTMR

LPTMR(Low-Power-Timer)란? 저전력 모드에서 동작할 수 있도록 설계된 저전력 타이머이다.
임베디드 시스템에서 배터리로 동작하는 장치나 저전력이 중요한 어플리케이션(자동차, 웨어러블, IoT 기기)에서 주로 사용한다.

LPTMR의 특징

  1. 저전력 모드에서 동작: 일반적으로 타이머는 CPU가 동작 중일 때 사용할 수 있지만, LPTMR은 CPU가 저전력 모드(Sleep모드) 에서도 동작할 수 있다
  2. 낮은 클럭 주파수 사용: 전력을 아끼기 위해 일반적으로 시스템 클럭이 아닌 저속 클럭(LPO, RTC 클럭 등) 을 사용할 수 있다.
  3. 간단한 기능: 16비트 타이머로 카운터 모드 또는 펄스 카운터 모드를 지원한다. 또한, 인터럽트를 발생 시킬 수 있다 인터럽트를 통해 특정 시간이 지나면 CPU를 깨울 수 있다.
  4. 주요 클럭 소스의 사용: LPTMR은 아래의 저전력 클럭 소스를 사용할 수 있다.
    • LPO(Low-Power Oscillator, 1kHz)
    • RTC(Real-Time Clock, 32.768kHz)
    • MCU 내부 버스 클럭
    • 외부 클럭 (32.768kHz Crystal 등)

LPTMR 주요 동작 모드

LPTMR은 두 가지의 동작 모드를 지원한다.

1. 타이머모드
1) 기본적으로 Count Timer로 사용한다.
2) 특정 시간이 지나면 Interrupt 이벤트를 발생시켜 CPU를 Sleep Mode에서 깨운다.
3) 클럭 소스를 설정하고, 특정 카운트 값을 지정하여 원하는 시간 동안 타이머를 동작 시킬 수 있다.

2. 펄스 카운터 모드
1) 특정 입력 핀에서 들어오는 Pulse를 세는 모드
2) 외부에서 신호(펄스)가 들어오면 LPTMR이 이를 카운트 하여 특정 개수에 도달하면 인터럽트 이벤트를 발생 시킬 수 있다.

// Example
int main(void) {
    // LPTMR Driver 초기화
    LPTMR_DRV_Init(INST_LPTMR_1, &lptmr_1_config0, false);
    // 인트럽트 이벤트 핸들러 등록 진행
    INT_SYS_InstallHandler(LPTMR0_IRQn, &LPTMR_ISR, (isr_t*)0);
    // 인터럽트가 발생하면 LPTMR_ISR을 호출 및 활성화할 인터럽트의 IRQ의 번호
    INT_SYS_EnableIRQ(LPTMR0_IRQn);

    // 타이머 동작을 시작하여 주기적 인트럽트를 발생
    LPTMR_DRV_StartCounter(INST_LPTMR_1);               // 시작
    // 타이머 동작을 중지하여 인트럽트 미발생
    LPTMR_DRV_StopCounter(INST_LPTMR_1);                // 정지
}

INT_SYS_InstallHandler : 인터럽트 핸들러 등록 진행하고 LPTMR에서 인터럽트가 발생하면 지정된 핸들러 LPTMR_ISR()이 호출된다.

LPTMR0_IRQn: LPTMR0 모듈의 인터럽트 번호이며, 각 모듈별 고유의 번호가 할당된다.
LPTMR_ISR: 인터럽트 서비스 루틴(ISR)으로 사용할 함수의 주소 -> 인터럽트 발생 시 함수 실행
INT_SYS_EnableIRQ(LPTMR0_IRQn) -> 인터럽트 발생하면 LPTMR_ISR을 호출 활성화할 인터럽트의 IRQ 번호입니다.

LPTMR_DRV_StartCounter: 타이머 동작을 시작하여 주기적 인터럽트를 발생
LPTMR_DRV_StopCounter: 타이머 동작을 멈추어 더 이상 인터럽트를 미발생

'Embedded > Embedded SW' 카테고리의 다른 글

ADC(Analog-to-Digital Converter)  (0) 2025.02.11
PWM(Pulse Width Modulation)  (0) 2025.02.11
LPIT(Low Power Interrupt Timer)  (0) 2025.02.11
Embedded Clock 기초  (0) 2025.02.11
MCU란?  (0) 2025.02.11
'Embedded/Embedded SW' 카테고리의 다른 글
  • ADC(Analog-to-Digital Converter)
  • PWM(Pulse Width Modulation)
  • LPIT(Low Power Interrupt Timer)
  • Embedded Clock 기초
Junsgram
Junsgram
  • Junsgram
    Junsgram
    Junsgram
  • 전체
    오늘
    어제
    • Junsgram (10)
      • CS (0)
      • Embedded (10)
        • CAN (3)
        • Embedded SW (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    can #ecu #can통신 #can이란? #can공부
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Junsgram
LPTMR(Low-Power Timer)란 ?
상단으로

티스토리툴바