BASIC4MCU | 질문게시판 | 답변 : Pwm mode에서 분주비 설정
페이지 정보
작성자 master 작성일2020-06-27 23:40 조회3,026회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=12990
본문
분주비와 top값은 모두 timer 세팅 에의해 결정되잖아요.그러면 timer_init 소스를 보고 분주비와 top4값을 변경해야하는데,데이터시트를 보고 변경하는법을 잘 모르겠습니다.문제지문은 다음과 같습니다.3.본 코드에서 사용되는 PWM Mode에서 동일한 주파수를 유지하며 분주비만 변경하 려고 한다이 때 변경 가능한 분주비 설정을 구하는 과정을 서술해라.(답변 필수 Keyword: PWM Mode,첨부 코드의 분주비와 TOP값,변경하려는 분주비 와 TOP값,필요한 수식)Timer init 코드입니다.void timer_init(){TCCR1A|=_BV(COM1B1);TCCR1A&=~_BV(COM1B0);TCCR1A&=~_BV(WGM11);TCCR1A|=_BV(WGM10);TCCR1B&=~_BV(WGM12);TCCR1B|=_BV(WGM13);TCCR1B&=~_BV(CS12);TCCR1B&=~_BV(CS11);TCCR1B|=_BV(CS10);TCCR3A|=_BV(COM3B1);TCCR3A&=~_BV(COM3B0);TCCR3A&=~_BV(WGM31);TCCR3A|=_BV(WGM30);TCCR3B&=~_BV(WGM32);TCCR3B|=_BV(WGM33);TCCR3B&=~_BV(CS32);TCCR3B&=~_BV(CS31);TCCR3B|=_BV(CS30);}//문제이해를 위해서 지문의 답변부탁드립니다.
타이머3이 있는 것을보니 128인가보군요
TCCR1B|=_BV(WGM13);TCCR1B&=~_BV(WGM12);TCCR1A&=~_BV(WGM11);TCCR1A|=_BV(WGM10);모드9는 TOP 레지스터가 OCRxA 레지스터입니다.TCCR1B&=~_BV(CS12);TCCR1B&=~_BV(CS11);TCCR1B|=_BV(CS10);분주비는 1입니다.
분주비는 1,8,64,256,1024로 증가하므로
분주비를 8로 변경하면, 현재 OCRxA 레지스터 값을 1/8로 변경해야지 같은 주파수가 됩니다.
분주비를 64로 변경하면, 현재 OCRxA 레지스터 값을 1/64로 변경해야지 같은 주파수가 됩니다.
TOP이 변경되면 분해능이 달라집니다.
1/8로 변경되었다면 분해능도 1/8이 되는 것이며
듀티를 동일하게 하려면 TOP(OCRxA) 범위 내에서 동일한 듀티값으로 변경하세요
댓글 0
조회수 3,026등록된 댓글이 없습니다.