일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- homeassistant
- 충전기
- STM32
- 보안
- 펌웨어
- 디자인패턴
- esp8266
- lambda
- 플라스크
- 에버온
- IOT Core
- 급속충전기
- AWS
- 전기차충전기
- flask
- thread
- 파이썬
- everon
- 라즈베리파이
- YMODEM
- raspberry
- 안드로이드
- 완속충전기
- dynamodb
- 홈어시스턴트
- 전기차
- OCPP
- 전기차충전
- Android
- 서버리스
- Today
- Total
Louie NRT Story
[펌웨어] STM32F4 강의 - PWM 본문
최초작성일: 21년 3월 10일
준비물: STM32F105, ST-LINK, 오실로스코프
Index
1. PWM 설명
2. PWM 타이머 설정
3. PWM Duty Rate 설정
4. PWM Duty Rate 실시간 변경
1. PWM 설명
- 기본은 Timer 인터럽트에 배경을 두고 있음
- Prescale을 이용하여 HCLK를 일정 줄여줌
- AutoReload Register를 이용하여 해당 값에 도달하면 인터럽트가 발생하며 다시 처음으로 돌아감.
- 타이머 인터럽트 주기 만큼 PWM의 주기가 됨.
- 아래 그림과 같이 타이머가 Up Count 하는 동안 CCR(Capture Compare Register)을 통해 Duty를 조절함.
2. PWM 타이머 설정
1) HCLK 값은 72 MHz 임을 확인함
2) 타이머 설정
- Prescaler = 1+1, Counter Period(AutoReload Register) = 35999 + 1.
- HCLK(72,000,000) ÷ Prescaler(1+1) ÷ AutoReload Register(35999+1) = 0.001.
- 즉 1번 펄스가 발생할 때 0.001초 걸리므로 1초면 1000번 발생하므로 1000 Hz 임을 알 수 있음.
- Pulse(35999+1) 이므로 현재 Duty Rate는 100% 임을 알수 있음.
3. PWM Duty Rate 설정
- PWM을 시작한다는 Start 함수를 실행함
- Channel의 CCR1 값을 변경해줌으로써 Duty Rate를 변경해줌
4. PWM Duty Rate 실시간 변경
- 값을 0 -> 100 으로 1씩 증가하여 Duty Rate를 변경함
※ 강좌에서는 arr을 변경하게 되면 중간에 PWM이 멈춘다고 하여 Prescaler를 변경하였지만
현재 작성하고 있는 시점에는 괜찮음. 버그? 가 해결 된것 같음
Referece:
www.youtube.com/watch?v=2Y_QoSYBJ0U
'전기차충전기' 카테고리의 다른 글
[펌웨어] STM32f4 FreeRTOS (0) | 2021.02.08 |
---|---|
[펌웨어] STM32f4 System Reset - Todo (0) | 2021.02.08 |
[EVERON] 완속충전기 통신 - Todo (0) | 2020.12.29 |
[EVERON] 멀티 완속 충전기 - Todo (0) | 2020.12.28 |
[STM32] CAN 통신 테스트 (1) | 2020.12.22 |