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

부호 비트에 대해서 1일 경우 영하를 나타내는 것이고 2진수의 보수를 취해서 값을 가져온다고 설명하셨는데
현재 코드르 보면, 단순히 AND 연산을 통해서 부호 bit에 대한 값만 제외하고 값을 구하는 형태가 아닌가요??
Câu trả lời 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);강의 내용도 해당 부분을 수정해서 다 업로드 하겠습니다.
2024년2회15~20
0
2
0
push pop 설명 되어있는 강의가 몇강인가요?
0
35
1
모의고사 파일오류
0
69
3
Segger 사의 SystemView를 이용하여 디버깅해 보고 싶어요
0
33
1
모의고사 다운
0
48
1
업캐스팅 원칙
0
64
2
결과 오류
0
64
3
기초 기자재 목록 문의
0
45
1
6분46초
0
56
2
공략법
0
62
1
모의고사 파일과 이론파일 업데이트
1
70
3
이론 pdf 다운은 어디서 하나요?
0
65
2
13분 40초
0
63
2
제공해주신 tutorial 파일들로 주문을 넣으려니 강의와 bom이 다릅니다
0
35
1
기출문제 재탕
0
57
1
뻬먹은 코드
0
47
1
기출문제 재탕
0
37
0
모의고사1회 2번문제 뭔지 모르겠네요 강의올려주시면안될까요?
0
51
1
ISR에서 xEventGroupSetBitsFromISR() 함수를 사용하려고 합니다.
0
43
1
logicsniffers에서 문맥전환 할때 prvExampleTaskHook() 함수 호출 관련
0
35
2
섹션7에서 개념적 궁금증
0
50
1
강의 영상 음성 겹치는 문제가 있습니다.
0
100
1
VS Code에서 ESP-ide extension 설치 후 명령 팔레트 안뜸
0
412
3
[수강 전 준비 사항 관련]
0
153
1

