해결된 질문
작성
·
25
1
안녕하세요. 좋은 강의를 열강 하다 보니 질문이 계속 생겨서 귀찮게 해드리는거 같아서 죄송합니다.
2가지 질문이 있습니다.
SMPR2 주석에 6.2us의 주기가 있는데, 이것이 혹시 Tconv 시간을 말씀하시는건가요? 맞다면, 6.2us가 아니라 7.5us가 아닌가요?
(Tconv = (sampling + conversion)*CLK = (56+12)* 111.1ns(9MHz) = 7.5us)
이번강좌에서 쓰로틀을 ADC로 읽는 과정에서 ADC Conversion mode를 single 로 하셨는데,
이렇게 되면 매번 코드에 SWSTART 반복과 EOC 대기를 을 진행해야 해서 CPU에 부하가 많이 걸리지 않나요?
어차피 While문 루프고, 쓰로틀은 계속적인 모니터링이 필요한 Analog 값이니 Continuous Conversion을 통해 1번만 트리거를 걸고 지속적으로 값을 모니터링을 하는게 더 효율적인 방법인거죠?
답변 1
0
질문 많이 해주시면 좋습니다! 부담 갖지 마시고 언제든지 질문해주세요.
결론부터 말씀드리면, 우선 주석의 6.2us는 T_conv가 아닌 T_sample을 의미합니다. 현재 실습코드에서는 샘플 타임이 56cycle로 설정하였습니다. ADC 클럭은 PCLK2/6 = 9Mhz이고 주기는 1/9Mhz = 111.111ns가 나오죠. ADC 클럭을 이용해서 샘플링 타임을 구하면 111.111ns x 56 = 6.222us입니다.
네 맞습니다. 현재 실습에서는 효율은 고려하지 않고, 기능 구현을 목표로 진행해보았습니다. 다만 추후에 전동킥보드 펌웨어에서는 While문에서 ADC를 하지 않고, 타이머 인터럽트에서 진행합니다. 이 점 참고해주시길 바랍니다.