임베디드250626 - Cortex M 시리즈
과제리뷰
기존에는 위의 구조였지만 생각해보니
아래구조가 더 좋아 보임
부저
PWM은 TIMER의 기능
TIMER의 주인공은 CNT임
ARR(Auto Reload Register)은 CNT가 증가할 때 가질 수 있는 최댓값
PSC가 100 이다 SystemCLK 100개 발생해야 CLK 1개 발생 (CLK 발생시간 1us) -> CNT 1 증가 시간 (1us)
이 때 ARR이 999면 0부터 999까지 올라가는 시간은 1ms임
ARR * 10^-6 = 주기(s)
ARR만 조절하면 주파수 조절이 가능해짐
주파수 f = 10^6/(ARR )
Duty정하기 -> 기준 값이 있으면 기준값보다 작은 CNT값이 있고, 큰 값이 있음
이 기준보다 크면 Low, 작으면 High 설정
파란색과 분홍색의 주파수는 같지만 duty cycle이 다름
이 기준값은
CCR(Capture Compare Register)로 내가 변경할 수 있음
주파수를 바꾸고 싶다 ? -> ARR 수정
Duty Cycle을 바꾸고 싶다? CCR 수정
Duty Cycle이 90%하고 싶으면 CRR을 ARR의 90%로 설정
CRR 값
CNT가 증가하다가 ARR이 값자기 CNT보다 작아지면 CNT는 계속 증가함(overflow가 날때까지)
-> 이런경우 주파수에 영향을 줄 수 있음
CNT하고 ARR 값이 같아지고 ARR이 바뀔 수 있게 해야 함 -> 이 기능이 arm에 이미 있음
auto-reload preload-> enable하면 CNT하고 ARR이 같아지고 CNT가 overflow가 발생하고 나서야 ARR이 바뀌게 하는 기능
Buzzer는 Blocking 방식으로 작성돼서 짧게하는 것이 좋음
모터
PA8포트 사용
DHT - 11
1. MCU에서 dht11로 신호를 보내야 함 (outmode)
Time Counter의 증가속도를 1us로 해주자
두가지 인터럽트중에 하나 골라서 사용
1.swstack 설명
2.object diagram
3.sequence diagram
FSM은 Listener, Controller, Presenter 전부 공유 가능할 수 있음
FSM에 따라 동작하는 기능이 다르게 할 수도 있음