BASIC4MCU | 질문게시판 | 답변 : 9비트 분해능의 Fast PWM 모드, 64분주, Duty 비 70%
페이지 정보
작성자 master 작성일2018-06-03 11:12 조회14,492회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1368
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-05-23 오전 11:17:18// by Ok-Hyun Park//// 타이머3 10비트 Fast PWM Mode // COM3x=2 Bottom(0x00)~OCR2구간 Set(5V), OCR2~TOP구간 Clear(0V)TCCR3A=0x83; TCCR3B=0x09; //주기=16000000/ 1/1024=15625Hz=64usTCCR3A=0x83; TCCR3B=0x0A; //주기=16000000/ 8/1024=1953.125Hz=512usTCCR3A=0x83; TCCR3B=0x0B; //주기=16000000/ 64/1024=244.140625Hz=4.096msTCCR3A=0x83; TCCR3B=0x0C; //주기=16000000/ 256/1024=61.03515625Hz=16.384msTCCR3A=0x83; TCCR3B=0x0D; //주기=16000000/1024/1024=15.2587890625Hz=65.536ms// 타이머3 10비트 Fast PWM Mode // COM3x=3 Bottom(0x00)~OCR2구간 Clear(0V), OCR2~TOP구간 Set(5V)TCCR3A=0xC3; TCCR3B=0x09; //주기=16000000/ 1/1024=15625Hz=64usTCCR3A=0xC3; TCCR3B=0x0A; //주기=16000000/ 8/1024=1953.125Hz=512usTCCR3A=0xC3; TCCR3B=0x0B; //주기=16000000/ 64/1024=244.140625Hz=4.096msTCCR3A=0xC3; TCCR3B=0x0C; //주기=16000000/ 256/1024=61.03515625Hz=16.384msTCCR3A=0xC3; TCCR3B=0x0D; //주기=16000000/1024/1024=15.2587890625Hz=65.536ms
위 강좌글은 OC3A 설정예만 적어 놨습니다.OC3C만 사용한다면TCCR3A=0x0B; TCCR3B=0x0D; //주기=16000000/1024/1024=15.2587890625Hz=65.536msTCCR3A=0x0F; TCCR3B=0x0D; //주기=16000000/1024/1024=15.2587890625Hz=65.536ms모드 설정은 이 두 개 중의 하나가 될테고요TCCR3A=0x0B; TCCR3B=0x0D; //주기=16000000/1024/1024=15.2587890625Hz=65.536ms일반적인 설정은 Bottom에서 High가 되는 위 설정을 많이 사용합니다.듀티비는 OCR3C 레지스터를 설정하면 되는데0~0x3FF까지 TCNT3이 증가하므로이 중 60%인 값을 OCR3C에 입력하면 됩니다.10비트 1023*0.6=613.8 근사치 614614(0x266)을 OCR1C에 입력하세요
OCR3C=0x0266; TCCR3A=0x0B; TCCR3B=0x0D; //주기=16000000/1024/1024=15.2587890625Hz=65.536ms//60%듀티
DDRE=0x20; // PE5(OC3C) 출력설정OC3C핀도 출력으로 설정해야겠죠
//FAST PWM을 하기 전에오버플로우 인터럽트와 CTC 비교매치 인터럽트를 먼저 공부하셔야합니다.비교매치 인터럽트를 이해하고 나야지 PWM 모드를 이해하기 쉽습니다.//----------------------------------------------10비트 60%의 답변을 복사해왔습니다.게시판의 아랫 글에보면 9비트 설정예도 있는데요위 설명을 참고하면 이해하는데 어렵지 않을겁니다.9비트 경우에는 0~511이므로511*0.7=357.7 근사치인 358을 설정하면 되겠죠
댓글 0
조회수 14,492등록된 댓글이 없습니다.