작성
·
87
·
수정됨
답변 2
0
제가 착각을 했던거 같습니다. 다음 강의를 보니 BNO080 코드 실행시간은 130us대가 맞는거 같고 그렇다면 400Hz는 BNO080센서가 처리를 완료했다고 int핀으로 알려주는 주기가 400Hz인걸로 이해하면 되나요?? 위의 참고사진의 132번째 줄 if문이 true가 되는 주기가 400Hz가 맞는건지 궁금합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 규철님.
BNO080의 출력 주기를 확인하는 방법에 대해 궁금증을 갖고 계신 것 같습니다. 현재 설정하신 방식과 기대한 값 사이의 차이에 대해 설명드리겠습니다.
타이머 설정 관련:
주기 계산:
의심되는 문제점 및 해결 방안:
관련 질문 답변 및 문제 해결을 위한 링크를 아래에 첨부하였습니다:
위의 링크에서 유사한 설정 문제를 다룬 답변들이 있으니 참고하시기 바랍니다. 질문에 대한 추가적인 설명이나 코드의 특정 부분에 대한 검토가 필요하시면, 이어서 질문을 남겨주시면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요!
네 맞습니다. 두 가지 개념이 다른데요,
센서갱신 주기 (2500us)
이건 센서에서 다음 데이터를 보내주는 시간 간격입니다. 센서는 400Hz 마다 새롭게 센서값을 갱신하고 int핀으로 그걸 외부로 알려줍니다. 그럼 STM32는 int핀의 상태가 바뀌면 센서로부터 데이터를 읽어들이면 되겠죠.
센서 읽어들이는 시간 (130us정도)
이건 센서의 데이터가 갱신 됐을 때, 그 데이터를 읽어들이는데 걸리는 시간입니다. SPI통신으로 데이터를 읽어오므로, SPI 클럭과 데이터 양에 의해 결정됩니다. 이걸 직접 계산할 수도 있고, 강의에서 언급한대로 GPIO 핀을 high low 로 번갈아가며 출력하여 그 펄스폭을 오실로스코프로 측정할수도 있고, 님의 방식처럼 타이머를 사용하여 소프트웨어적으로 시간을 측정할 수도 있습니다.