SysTick란?
SysTick은 Cortex-M 계열 마이크로컨트롤러(예: NRF52832)에 내장된 타이머로, 일정한 시간 간격으로 작업을 수행하거나 이벤트를 처리하는 데 사용됩니다. 간단히 말해, 시스템에서 시간 간격을 정확하게 측정하고 작업을 반복적으로 수행하게 해주는 타이머입니다.
SysTick의 주요 특징
- 정확한 타이밍:
- CPU 클럭(예: NRF52832의 시스템 클럭)을 기준으로 동작하여 매우 정확한 타이밍을 제공합니다.
- 주기적 인터럽트:
- 특정 시간 간격마다 인터럽트를 발생시켜 작업을 처리하거나 이벤트를 실행할 수 있습니다.
- 간단한 설정:
- 원하는 시간 간격(밀리초, 마이크로초 등)을 설정하여 반복적인 작업을 자동으로 처리할 수 있습니다.
- CPU와 연계:
- CPU가 활성 상태일 때 동작하며, CPU 클럭 속도에 의존합니다.
- 저전력 상태에서는 RTC보다 전력을 더 소모할 수 있습니다.
SysTick의 구성 요소
- CSR(Control and Status Register):
- SysTick의 활성화/비활성화, 클럭 소스 설정, 인터럽트 활성화를 관리합니다.
- RVR(Reload Value Register):
- 타이머가 얼마나 빠르게 카운트다운할지를 설정합니다.
- CVR(Current Value Register):
- 현재 남은 시간을 나타냅니다.
SysTick의 동작 원리
- RVR에 값 설정:
- 주기 시간에 해당하는 값을 RVR에 설정합니다.
- 카운트다운:
- SysTick은 RVR에서 설정한 값을 기준으로 카운트다운을 시작합니다.
- 0 도달 시 이벤트 발생:
- 카운트가 0에 도달하면 인터럽트가 발생하고, 타이머는 자동으로 초기값으로 재설정되어 반복적으로 동작합니다.
-
- SysTick에는 3개의 주요 레지스터가 있습니다:
- SysTick에는 3개의 주요 레지스터가 있습니다:
SysTick을 효율적으로 사용하는 팁
-
-
- 짧은 시간 간격 작업:
- LED 깜박임(100ms 단위), 데이터를 주기적으로 확인하는 작업에 적합합니다.
- CPU가 항상 켜져 있을 때:
- BLE 이벤트와 같이 CPU가 절전 상태로 들어가지 않고 항상 활성 상태일 때 적합합니다.
- 저전력이 중요하지 않을 때:
- RTC보다 전력을 많이 소모하기 때문에 배터리 기반 장치에서는 제한적으로 사용하는 것이 좋습니다.
- 짧은 시간 간격 작업:
-
RTC 타이머란?
- RTC 타이머는 매우 정확한 시계처럼 동작합니다.
- 시간을 **작은 틱(tick)**으로 나눠서 일정 시간마다 일을 하도록 설정할 수 있습니다.
- 예: 1초마다 LED를 켜거나, 10ms마다 데이터를 확인하기.
- RTC는 전력이 적게 들기 때문에 배터리로 작동하는 장치(스마트워치, IoT 센서)에서 주로 사용됩니다.
RTC 타이머 주요 특징
- 시간 간격 작업:
- 1초마다 온도 센서를 읽고 데이터를 저장.
- 매 100ms마다 BLE 데이터를 송수신.
- 배터리 절약:
- RTC는 전력을 거의 소모하지 않기 때문에 배터리를 아끼는 장치에서 사용됩니다.
- 장치가 쉬는 동안에도 RTC는 작동하며, "정해진 시간에 깨워주는 역할"을 합니다.
- 타이머 기반 이벤트:
- 정해진 주기로 LED 깜박임.
- 알람이나 특정 시간에 작업 실행.
RTC 타이머 동작 원리
- 시계처럼 움직이는 클럭을 사용해 시간이 흐르는 것을 계산합니다.
- NRF52832의 RTC는 32.768kHz라는 초당 32,768번 진동하는 신호를 사용합니다.
- 사용자가 원하는 시간 간격을 설정하면, RTC가 그 시간마다 이벤트를 발생시킵니다.
RTC 타이머의 장점
- 저전력:
- RTC는 저속 클럭을 사용하기 때문에 배터리 소모를 최소화합니다.
- BLE와 함께 사용하면 매우 효율적입니다.
- 긴 주기 작업:
- 몇 초, 몇 분, 몇 시간 단위의 작업에 적합합니다.
- 독립 실행:
- CPU가 잠자기 상태여도 RTC는 계속 작동합니다.
- 작업이 필요할 때 CPU를 깨워서 실행할 수 있습니다.
RTC 타이머를 효율적으로 사용하는 팁
- 배터리 기반 IoT 장치에서 작업 주기를 설정하고 싶을 때.
- BLE 장치에서 주기적으로 데이터를 송수신하거나, 절전 모드를 유지하면서 이벤트를 처리하고 싶을 때.
- 긴 시간 간격(초 단위 이상의 작업)이 필요한 애플리케이션에서.
SysTick과 RTC의 비교
SysTickRTC
CPU 클럭을 사용 | 저속 클럭(LFCLK) 사용 |
주로 짧은 시간 간격 (ms, µs) | 긴 시간 간격 (초, 분, 시간) |
전력 소모가 더 높음 | 전력 소모가 매우 적음 |
CPU가 활성 상태여야만 동작 | CPU가 절전 모드에서도 동작 가능 |
짧은 주기 작업에 적합 | 배터리 기반, 긴 주기 작업에 적합 |
1. CPU 클럭과 저속 클럭(LFCLK)란?
- CPU 클럭:
- CPU(Core)에서 모든 작업을 처리할 때 사용하는 고속 클럭.
- NRF52832의 경우 주로 64MHz 클럭을 사용.
- BLE, UART 같은 작업에서 빠르게 처리해야 하는 작업에 사용.
- 저속 클럭(LFCLK):
- CPU가 꺼져 있을 때에도 작동할 수 있는 저전력 클럭.
- NRF52832의 경우 32.768kHz의 낮은 주파수를 사용.
- 주로 RTC(Real-Time Counter)와 같이 장시간 정확한 시간을 측정해야 하는 작업에서 사용.
2. 주요 차이점
특징CPU 클럭 (HFCLK)저속 클럭 (LFCLK)
속도 | 고속 (예: 64MHz) | 저속 (예: 32.768kHz) |
정확도 | 매우 정확 | 매우 정확 |
전력 소모 | 전력 소모가 큼 | 전력 소모가 적음 |
사용 환경 | 빠른 작업 처리 (BLE, 데이터 송수신 등) | 긴 주기의 작업 (RTC, Deep Sleep 등) |
CPU 의존성 | CPU가 활성 상태여야 함 | CPU가 꺼진 상태에서도 동작 가능 |
대표 사용 사례 | - BLE 이벤트 처리 | - RTC 타이머 |
- LED 깜박임 (빠르게) | - 절전 모드에서 일정 시간마다 작업 |
3. 차이점에 따른 동작 방식
(1) CPU 클럭 (HFCLK)
- 작동 원리:
- CPU에서 동작하며, 고속 연산과 데이터 처리에 사용.
- BLE 데이터 처리, GPIO 빠른 제어 등 빠른 반응이 필요한 작업에 적합.
- 한계:
- CPU가 활성 상태일 때만 작동하므로, CPU가 잠자기(Sleep) 모드로 들어가면 클럭도 멈춤.
- 배터리 소모가 크기 때문에, 지속적으로 실행하는 작업에는 적합하지 않음.
- 장점:
- 매우 빠른 속도로 데이터를 처리할 수 있어 BLE 같은 고속 통신 작업에 유리.
(2) 저속 클럭 (LFCLK)
- 작동 원리:
- NRF52832에서 사용하는 LFCLK는 32.768kHz로 작동.
- 주로 RTC, Watchdog Timer(WDT)와 같은 주기적인 타이밍 작업에 사용.
- 장점:
- CPU가 Sleep 모드에 있거나 시스템이 낮은 전력 상태로 들어가도 작동.
- 배터리 소모가 적어 IoT 디바이스, 웨어러블과 같은 장기 사용 장치에 적합.
- 한계:
- 속도가 느리기 때문에 고속 연산 작업에는 적합하지 않음.
- BLE 이벤트와 같은 짧고 빠른 응답이 필요한 작업에는 적절하지 않음.
5. 전력 소비 외 주요 차이
(1) 시간 간격
-
-
- CPU 클럭은 정밀한 짧은 시간(예: 마이크로초 단위) 측정에 적합.
- 예: LED를 100ms 간격으로 깜박이기.
- 저속 클럭은 긴 시간 간격(예: 초 단위 이상) 측정에 적합.
- 예: 1시간마다 온도 센서를 읽고 데이터 저장.
- CPU 클럭은 정밀한 짧은 시간(예: 마이크로초 단위) 측정에 적합.
-
(2) 시스템 전반 영향
-
-
- CPU 클럭은 CPU가 항상 깨어 있어야 하므로 시스템 전체 전력을 높임.
- 저속 클럭은 CPU가 꺼진 상태에서도 동작 가능하므로 시스템 전력을 절약.
-
'nRF52' 카테고리의 다른 글
[nRF52] undefined reference to `nrfx_twim_tx' ERROR 해결 (2) | 2023.06.13 |
---|---|
[nRF52] header file ERROR 해결 (3) | 2023.06.08 |
[nRF52] TWI ERROR 해결 (0) | 2023.06.07 |