윤재에요 2022. 12. 16. 17:11

타이머란

  • 주기적 시간 처리에 사용하는 디지털 카운터 회로 모듈
  • 펄스폭 계측, 주기적인 interrupt 발생 등에 사용
  • 주파수가 높기 때문에 우선 prescaler를 사용하여 주파수를 낮춘 후 낮아진 주파수로 8,16비트 등의 카운터 회로를 사용하여 주기를 얻는다. 
  • STM32 타이머 종류
    • SysTick Timer
    • Watchdog Timer
    • Advanced-control Timer (TIM1, TIM8)
    • General-purpose Timer (TIM2 ~ TIM5)
    • Basic Timer (TIM6, TIM7)

Systick Timer

Real-time operating system 전용이지만 standard down counter로 사용 할 수도 있음

  • 24bit down counter 
  • Autoreload capability
  • Counter가 0에 도달하면 설정에 따라 인터럽트가 발생
  • Programmable clock source

 

IWDG/WWDG Timer-Watching timer

 

WATCHDOG(WDG) 임베디드 시스템 등 특수 상황에서 CPU가 올바르게 작동하지 않을 시 강제로 리셋시키는 기능을 의미한다

  • IWDG/WWDG는 모두 소프트웨어 고장으로 인한 오작동을 감지하고 해결하는 역할을 한다.
  • 카운터가 주어진 시간 초과 값에 도달했을 때 시스템 재설정 또는 인터럽트(only WWDG)를 트리거한다.
  • IWDG
    • IWDG는 LSI 클럭 기반으로 메인 클럭 고장에도 활성 상태 유지 가능
    • 타이밍 정확도 제약이 낮은 애플리케이션에 적합하다.
    • 카운터가 0이 되면 Reset 
  • WWDG
    • 7-bit down counter  
    • WWDG의 클럭은 APB1 클럭을 프리스케일해서 정의 가능
    • 비정상적 어플리케이션 동작 감지를 위해 설정 가능한 time-window가 있다.
    • Time-window 내에서 반응하도록 요구하는 애플리케이션에 적합하다.
    • 카운터가 0x40 보다 작을 경우 또는 카운터가 Time-window 밖에 Reload 됐을 경우 Reset 가능하다.
    • Early wakeup interrupt (EWI) : 카운터가 0x40과 같을 때, EWI 인터럽트 발생하게 설정 가능하다.

 

 

Advanced-control timers (TIM1 & TIM8)

  • The advanced-control timers는 prescaler를 이용해 설정 가능한 16-bit auto-reload counter를 포함하고있다.
  • 입력 신호 펄스 길이 측정(input capture)  또는 출력 파형 생성(output compare, PWM, complementary PWM with dead-time insertion) 등에 사용 가능하다.
  • The advanced-control (TIM1&TIM8) and general-purpose (TIMx)는 자원을 공유하지 않는 독립적인 구조이며, 동기화 시키는 것도 가능하다

 

Basic timer (TIM6 & TIM7)

 

  • 16-bit auto-reload 업카운터
  • 설정 가능한 16-bit prescaler를 이용해 the counter clock 주파수를 나눠서 설정 가능
  • DAC 트리거에 사용
  • 카운터 오버플로우 발생 시 인터럽트/DMA 생성

General-purpose timers (TIM2 to TIM5)

  • General-purpose timer은 prescaler를 이용해 설정 가능한 16-bit up, down, up/down auto-reload counter를 포함하고 있다.
  • 입력 신호의 펄스 길이 측정(input capture) 또는 출력 파형 발생(output compare and PWM) 등 다양한 용도로 사용할 수 있다.
  • 펄스 길이와 파형 주기는 timer prescaler와 the RCC clock controller prescaler를 사용하여 몇 μs에서 몇 ms까지 변조할 수 있다. 타이머들은 완전히 독립적이며, 어떤 자원도 공유하지 않으나 동기화 가능하다

 

 

 

  • 분주란 MCU에서 제공하는 Frequency를 우리가 사용하기 쉬운 값으로 바꾸어 주는 것을 말합니다.
  • Counter clock frequency 를 1~65536의 값으로 나누기 위해 16-bit programmable prescaler사용
  • period 로 몇 번 count하는지 설정

 

 

 

 

 

 

 

 

 

PWM(Pulse Width Modulation)

일정한 주기 내에서 Duty ratio를 변화 시켜서 평균 전압을 제어하는 방법

 

ex) 0~5V의 전력 범위에서 2.5V 전압을 가하고 싶다면, 50% 듀티 사이클 적용

대부분의 서보모터는 50Hz ~ 1000Hz 의 주파수를 요구하고

데이터 시트를 반드시 확인해서 사용해야함.

 

STM32보드 PWM 신호 예시

TIM3의 채널 3 사용 예시

- PB0를 사용해야하며, Alternate function사용    (다른 채널 사용시 다른 핀을 사용해야함.)
 

 

댓글수0