해결된 질문
작성
·
121
·
수정됨
0
안녕하세요 강사님, 항상 열정적으로 강의해주셔서 감사합니다.
다름이 아니라, 온도센서 구현 중에 발견한 문제점으로 질문을 남기게 되었습니다.
Ds18b20_Init(); 함수를 호출하기 전과 후를 비교해서 강의에서 보는 바와 같이 Address[0] ~ [7] 까지의 값이 실시간으로 0에서 다른 값으로 바뀌어야 되는데, Live expressions로 본 결과 바뀌지 않고 있습니다.
사실, 온도 센서를 모듈과 결합할 때 피복을 벗겨낼 필요 없이 핀으로 되어있었다는 것을 뒤늦게 알아서 Vcc, GND, DAT 선 모두 구리선 몇 가닥으로 연결된 상태입니다. ㅠㅠ
코드는 강의 그대로 따라서 오류 없이 작성한 상태인데, HW 모듈 자체 문제인지, 모듈과 온도 센서와의 접합 부분의 문제인 것인지, 소스코드 문제인지, 정확한 디버깅이 어려운 상태입니다.
참고로, PA3은 DAT 핀, Vcc는 3.3V, GND는 GND 핀에 연결해둔 상태입니다. ioc 클락 설정은 (8-1), 0xFFFF이며, PLL을 사용하지 않고 HSI 그대로 받아서 사용 중입니다.
답변 2
0
안녕하세요.
고생하고 계시는군요.
임베디드 개발은 고통이 수반됩니다.
특히, 하드웨어와 소프트웨어 중 무엇이 문제인지, 혹은 설정이 문제인지 모를 때...
이런 상황은 임베디드 개발을 하다 보면 자주 마주치게 됩니다.
여기서 가장 중요한 건, 문제를 잘게 쪼개는 것입니다.
먼저 코드에 문제가 없다면, 설정을 꼼꼼히 확인하세요.
그리고 그 과정에서 단순히 설정을 따라 하기보다는,
각 설정이 왜 그렇게 되어 있는지, 의미를 하나하나 이해하면서 넘어가시는 걸 추천드립니다.
그러다 보면, 생각지도 못한 실수를 발견하게 될 수도 있습니다.
이것저것 다 점검했는데도 문제가 없다면,
이제는 하드웨어 디버깅으로 들어가야 합니다.
물론, 센서 고장일 가능성도 있습니다.
하지만 실제로는 그 빈도가 생각보다 낮기 때문에,
오실로스코프로 하나하나 찍어보는 것을 추천드립니다.
일단 전압이 제대로 인가되고 있는지 보시고,
정말 기초적이지만 자주 하는 실수인 배선 상태도 확인하세요.
배선이 연결되어 있다고 해도, 단선 가능성이 있으니 쇼크 테스트도 꼭 해보시고요.
끝단과 끝단이 실제로 전기적으로 연결되어 있는지 확인하세요.
그 다음에는,
내 보드 핀에서 신호가 제대로 나가고 있는지 확인해보세요.
보드에서 신호가 나가는데도 센서가 응답하지 않는다면,
데이터시트를 보고, 온도 센서가 수신할 수 있는 클럭 주파수(Hz)가 맞는지 확인하세요.
그것도 맞다면,
이제 온도 센서 자체의 문제를 의심할 단계입니다.
이때가 오면, 저에게 연락 주세요.
온도 센서 하나 보내드리겠습니다.
👉ohjiwan@gmail.com 으로 연락 주세요.
그리고 센서를 교체했는데도 안 된다?
그럴 리가 없습니다... ㅠ_ㅠ
0
안녕하세요, 인프런 AI 인턴입니다.
신재훈님, DS18B20 센서를 사용하여 주소값이 0에서 변경되지 않는 문제에 대해 고민이 많으신 것 같습니다. 이 문제는 주로 하드웨어 연결 또는 설정과 관련이 있을 수 있으며, 여러 가지 확인해볼 사항이 있습니다.
하드웨어 연결 점검:
전원 및 지상 확인:
소프트웨어 코드 검토:
Ds18B20_Init()
함수가 올바르게 호출되는지, 또는 초기화가 정상적으로 진행되는지 확인하세요. 이것은 디버거에서 브레이크포인트를 사용하여 가능합니다.HAL_TIM_Base_Start_IT
함수가 올바르게 작동하고 있는지도 확인하세요. 이 함수가 잘못 동작하면 타이머 값을 제대로 업데이트 하지 못할 수 있습니다.라이브러리 및 설정:
이미 유사한 사례를 처리한 게시물이 있으니 아래의 링크도 참조하시면 도움이 될 것입니다:
- DS18B20 온도 센서의 주소 값이 갱신되지 않을 때 확인할 사항
- DS18B20 센서 초기화 및 데이터 수신 문제 해결 방법
이 링크들에서는 주로 하드웨어 문제나 초기화 설정 확인에 대한 안내가 포함되어 있습니다.
문제 해결이 잘 되길 바라며, 지속적으로 문제가 해결되지 않을 경우, 강의 내 ‘문의하기’ 기능을 통해 강사님께 직접 문의해 보시는 것도 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
(8-1)와 (0xffff)로 설정했을 때는 동작 안하다가, (72-1)와 (0xffff)로 설정하니, 강의와 동일하게 작동하는 것을 확인할 수 있었습니다..!
이론 상 8MHz 일 때도, 동작해야할 것 같은데 왜 동작을 하지 않았는지는 아직은 잘 모르겠네요.
최근 며칠동안 고민하고 있다가 강사님 댓글에 힘입어 다시 시도해본 결과 성공하였습니다. 감사합니다!