Как считать температуру с датчиков на материнской плате?

0

Попытка получить температуру процессора.

Вы уже пробовали использовать WQL (класс WMI MSAcpi_ThermalZoneTemperature), но, по-видимому, он еще не реализован для всех платформ. На большинстве машин он просто возвращает каждое существующее сообщение об ошибке через возвращаемое значение HRESULT. Сама температура не возвращается.

Идея состоит в том, чтобы прочитать эту температуру непосредственно через порт шины. Я нашел библиотеку, которая предоставляет функциональные возможности функций outp и inp, и с ним удалось запустить инициирование соединения (NTPort), однако вопрос становится тем, к какому порту подключиться, чтобы читать данные. Микроконтроллер IT8728F. SpeedFan (приложение, которое может читать температуру) в своих журналах говорит, что считывает данные с порта 0x290. Однако при подключении к нему данные, которые возвращаются, не выглядят как температура (он всегда возвращает 29).

Так что следующая вещь, которая была опробована, состояла в том, чтобы читать из любого порта, пытаясь определить, были ли какие-либо данные, которые прошли, выглядели как температура. Однако из каждого порта поступали некоторые данные, которые были либо слишком низкими, либо слишком высокими, чтобы быть реальной температурой.

int CPU_TEMP;
Outp(INDEX, BANK_SET);
Outp(DATA, Inp(DATA)|0x01);
for(CPU_TEMP=0x0;CPU_TEMP<0x999;CPU_TEMP++)
{
  Outp(INDEX, CPU_TEMP);
  printf("CPU temp: %iC\n", Inp(DATA));
}
Теги:
bus
temperature
isa

1 ответ

0

возможно, ваш процессор составляет 29 градусов по Цельсию и стабилен. Это кажется законным для процессора.

Также: 0x00000029 или DEC 29? что имеет большое значение

  • 0
    Проверка температуры с помощью программного обеспечения, такого как SpeedFan, показывает, что это не так. Также попытались «прогреть» процессор с помощью цикла перед проверкой, не помогло.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню