inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

전동킥보드로 배우는 임베디드 실전 프로젝트

BLDC 구동을 위한 Center Align PWM

Center Align PWM 설정 코드 질문

해결된 질문

100

whej2886

작성한 질문수 2

0

제일 마지막 문장 두개 질문있습니다.

 

While(! (TIM1->CR1 & 0x0010) ); // TIM1 underflow event?

TIM1 -> RCR = 0x0001; // 50us period update (RCR = 1)

 

코드 주석을 보면 TIM1이 Downcount 상태가 된 후 50us(Half PWM Period 두번) 후에 업데이트 이벤트를 발생시킨다고 되어있는데

이러면 전류 센싱을 CNT가 ARR에 도달할때 하게 되는게 아닌가요?

아니면 CNT = ARR-1 상태에서 50us 지난 후 다음 UEV에서 전류센싱이 발생한다고 해석해야할까요?

 

임베디드 stm32 hardware motordriver artwork

답변 1

0

제어쟁이

안녕하세요, 제어쟁이입니다.

먼저 while(!(TIM1->CR1 & 0x0010)); 부분은 엄밀히 말하면 underflow event flag를 보는 코드는 아닙니다.
0x0010은 TIM1_CR1의 DIR bit라서, TIM1 카운터가 down-counting 상태가 되었는지를 확인하는 코드입니다.

이 코드에서는 TIM1을 먼저 center-aligned PWM으로 동작시킨 뒤, 카운터가 down-counting 상태가 된 것을 확인하고 나서 TIM1->RCR = 1을 설정합니다.
이렇게 카운터 동작이 시작된 후 RCR을 설정하면 update event가 ARR 쪽이 아니라 CNT=0, 즉 underflow 쪽에 맞춰 발생하도록 의도한 것입니다.

따라서 전류 센싱은 CNT가 ARR에 도달하는 시점에서 수행된다고 보면 안 됩니다.
이 코드의 의도는 ARR 도달 시점이 아니라 CNT가 0으로 내려온 underflow update event에서 TIM1 update interrupt가 발생하고, 그 interrupt 안에서 전류 ADC를 읽는 구조입니다.

RCR=1은 center-aligned PWM에서 overflow/underflow update 후보 중 한 번을 건너뛰어서 update interrupt 주기를 50 us로 만드는 설정입니다.

정리하면 다음과 같습니다.

while문: underflow event를 직접 기다리는 것이 아니라 down-count 상태 진입을 확인
RCR=1: update interrupt를 50 us마다 한 번으로 제한
RCR 설정 위치: 카운터 시작 후 설정해서 update event를 underflow 쪽으로 정렬
전류 센싱 시점: CNT=ARR이 아니라 CNT=0 underflow update event 시점

image.png

Buck Converter design

0

50

2

uart 실습

0

63

1

VM 배선

0

57

2

듀티 조절 코드 질문

0

50

2

Query Regarding PCB Design and Manufacturing for Firmware Testing

0

51

3

홀카터 질문

0

45

1

C46~C48 크기

0

47

2

Teleplot 문의

0

49

1

MCU 선정 관련 문의

0

67

1

전류 센싱 문의

0

71

2

키트 구매 여부

0

76

3

소형모터 구동

0

49

2

stm 클럭설정

0

53

1

36. 전력은 900W가 될것 같습니다.

0

45

1

34.제너다이오드는 전류 분배기라고 생각하면 될까요 ?

0

40

0

33.제너다이오드와 tvs다이오드 모양이 동일합니다.

0

44

0

쓰로틀 V 변하지 않음

0

89

3

풀업 저항 크기와 커패시터 용량 선정 방법

0

68

2

86, data bit순서가 바뀌어야 할것 같습니다.

0

59

1

85. pwm사용에 기본구조 이해가 같이 요구되네요

0

60

1

dc모터 회전원리

0

66

2

83. volatile로 선언한 이유가 이해 안됩니다.

0

56

1

82. 16:50초 설명에 대한 오해 및 adc mode비교 자료

0

83

2

81. 소프트웨어 작성 방법론에 조언 부탁 드립니다.

0

76

2