2015-02-15

16BIT-TIMMER 관련 질문

서보를 사용하면서 16비트 타이머 관련 질문을 정리한 내용입니다.

출처 : cafe.naver.com/laydigital/


안녕하세여, 오랜만에 질문을 드리네요.

현재 프로젝트로 6DOF - stewart platform을 만들고 있는데요, 16bit timer를 쓸려고 살펴보는 중에 다음과 같은

부분이 이해가 좀 않되서 질문 드립니다.



위의 그림에서 Duty를 주는 부분이 8bit 에서는 TOP값이 고정되어 OCRn이었는데 16bit에서는 WGMn3:0 값에 따라 달라진다고
나와 있는데요,




질문1)  TOP값이 FIXED일 경우, ICRnA의 경우 Duty값으로 비교되는 값이 아래 지문처럼 OCRnA reg를 자유롭게 사용하여 PWM파형을 출력하여 사용한다고 나와 있는데 OCRnA의 경우에 Duty값으로 비교되는 값이 어떤값으로 되는지 어느부분에 명시된건지 잘 파악되지 않아 질문드립니다.




질문2) Figure 52. FAST PWM모드에서 OCRnA이 non fixed TOP일경우 TOP value를 바꿔주므로써 기본 PWM주파수를 의도적으로 바꾸는데 좋은 장점이 있다는 부분이 위 지문에 언급되어 나오는데 이부분이 OCRnA값을 TOP으로 주고 duty값도 OCRnA값으로 비교한다는 말인지, 어떤지 실제로 코드로 구현하면 16bit 타이머1을 시작할때 한번 TOP값을 set 하고 이후에 다시 어떻게 TOP값을 주는다는건지 이해가 않되서 이부분도 질문드립니다.

servo 모터는 skyholic DGS-1188 http://www.servodatabase.com/servo/skyholic/dgs-1188 6개를 구매해서
 http://www.youtube.com/watch?v=ezp4ZvfJv0g 이 친구들처럼 제작해보고자 하는데 진행하면서 질문 좀 드리겠습니다 ㅎ; servo 모터는 8bit timer로 FAST PWM 모드로 61HZ 파형으로 duty를 변경해서 테스트 해본결과 작동은 하는데 50hz 안에서 20ms 주기로 fast pwm으로 6개의 OCn pin을 사용 출력으로 이용해보고자 16bit timer를 살펴보게 됐습니다.



/////////////////////////////////////////////////////////////////////////////////////////////////////////

1) 만약 제가 정상적으로 이해를 했다면
ICRn을 사용하는 경우는 이해를 하신거구
OCRnA를 TOP 값으로 사용한 경우의 비교 값을 말씀하시는 거죠?
OCRnA는 OCR1A,OCR3A 둘중 하나이고(타이머에 따라)
OCR1A 라면 정상적으로 만들 수 있는 PWM 신호는 두개(OCR1B,OCR1C에 의한) 이죠.

2) 
그냥 TOP 에 해당하는 레지스터는 동적으로 바꾸셔도 되는데, 다음의 경우는 조심해야 합니다.
내부 카운터가 이전 TOP을 지나가고 있을떄, 만약 해당 TOP값을 낮은 값으로 바꾸면, 이전에 진행하던
CNT 값이 이미 비교 레지스터를 지나버려서 MAX값까지 올라갔다 오는게 한번 생깁니다.
동작은 내부 TCNT가 있고, 어디까지(TOP)을 설정하는 레지스터(ICRn,OCRnA)와 그 pwm의 듀티
(OCRnA,OCRnB,OCRnC where ICRn을 TOP으로 한 경우, 
OCRnB,OCRnC where OCRnA가 TOP인 경우)


No comments:

Post a Comment

Total Pageviews