LM75A에 대한 온도 값 음수 적용 부분 질문 드립니다.

부호 비트에 대해서 1일 경우 영하를 나타내는 것이고 2진수의 보수를 취해서 값을 가져온다고 설명하셨는데
현재 코드르 보면, 단순히 AND 연산을 통해서 부호 bit에 대한 값만 제외하고 값을 구하는 형태가 아닌가요??
답변 1
0
확인 감사합니다. 질문 주신 내용이 맞습니다.
현재 강의 코드에서는 부호 비트만 제거하는 단순화된 방식으로 처리되고 있어, 설명드린 내용과 완전히 일치하지 않는 부분이 있습니다.
정확히 확인하지 못한 채 설명드려 혼란을 드린 점 죄송합니다. 좋은 지적 감사합니다.
LM75A의 음수 온도 데이터는 단순히 부호 비트만 제외하는 방식이 아니라, 전체 값을 기준으로 2의 보수 처리해야 하기 때문에 아래와 같이 수정하면 영하 데이터도 올바르게 처리할 수 있습니다.
int isNeg = 0;
if (raw[0] & 0x80)
{
isNeg = 1;
}
int16_t data = (raw[0] << 8 | raw[1]) >> 5;
float temperature;
if (isNeg)
{
data |= 0xF800; //음수의 경우 상위 비트를 1로 채워 sign extension 진행
data = ~data + 1; //2의 보수 처리 : 비트를 반전(~)하고 1을 더해서 절대값으로 변환
temperature = data * -0.125; // 최종 온도값은 음수이므로 -0.125를 곱해서 적용
}
else
{
temperature = data * 0.125; // 최종 온도값이 양수이므로 0.125를 곱해서 적용
}
printf("Temperature : %f\n", temperature);강의 내용도 해당 부분을 수정해서 다 업로드 하겠습니다.
결과 오류
0
9
2
기초 기자재 목록 문의
0
9
1
6분46초
0
22
2
공략법
0
21
1
모의고사 파일과 이론파일 업데이트
0
53
2
이론 pdf 다운은 어디서 하나요?
0
48
2
13분 40초
0
46
2
제공해주신 tutorial 파일들로 주문을 넣으려니 강의와 bom이 다릅니다
0
32
1
기출문제 재탕
0
51
1
뻬먹은 코드
0
38
1
기출문제 재탕
0
31
0
모의고사1회 2번문제 뭔지 모르겠네요 강의올려주시면안될까요?
0
41
1
ISR에서 xEventGroupSetBitsFromISR() 함수를 사용하려고 합니다.
0
36
1
logicsniffers에서 문맥전환 할때 prvExampleTaskHook() 함수 호출 관련
0
31
2
영상 다운로드는 안되나요?
0
70
1
Flash 메모리 전원 껐을 때
0
50
1
섹션7에서 개념적 궁금증
0
48
1
26년2회 실기기출은 언제쯤...
0
117
2
이론 공부법 요약본 버전 업데이트 문의
0
91
2
14강 PCB 배선 및 검사 파트 질문
0
58
1
PCB보드 주문 비용
0
55
1
강의 영상 음성 겹치는 문제가 있습니다.
0
98
1
VS Code에서 ESP-ide extension 설치 후 명령 팔레트 안뜸
0
402
3
[수강 전 준비 사항 관련]
0
149
1





