Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 18 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
Всем привет!!!
Долго пытаюсь научится считывать температуру процессора, написал программулину для записи и чтения значений в порты.
Чип винбондовский
Пишу в $205
Читаю из $206
Получаю странные значения и вобщем ничего не получается.
Помогите, плиз, что делать?
Может кто исходничок подкинет или компоненту?
zmenya@inbox.ru

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
AndreyZZ
изучайте исходники lmsensors... более никаких свободнораспространяемых мониторилок с сырцами я не встречал...

Добавлено спустя 2 минуты, 55 секунд:
PS: хома проекта - http://www2.lm-sensors.nu/~lm78/

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
Спасибо, обязательно попробую

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru


 

AndreyZZ читай порты 295h (адресный) и 296h (порт данных). А еще ты можешь поискать здесь на форуме. Помню была ветка про обсуждение чтения температуры и напруги через датчик W83627HF.

Добавлено спустя 1 минуту, 37 секунд:
Root
Цитата:
более никаких свободнораспространяемых мониторилок с сырцами я не встречал...

а что проект OSCI уже не оупен-сорс?[/quote]


 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
Francheska
а OSCI - мониторилка? ;) А сырцы старой версии вроде сейчас доступны. Только была ли там работа с датчиками я не понмю :(

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
А где скачать сырцы OSCI знаете? Я чёт найти немогу никак

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru


 

Member
Статус: Не в сети
Регистрация: 13.11.2004
У меня есть своя прога для чтения данных с датчика мат. платы EP-8RDA. Завтра постараюсь выложить (Программа на Delphi).


 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
AndreyZZ
http://www.topmods.net/OMC/
только это Вам не поможет. гарантирую. лучше бы lmsensors изучали...

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
AndreyZZ извеняюсь, что забыл о вашей давней просьбе :-)
Нижеследующий код когда-то был частью ядра ОМС. Разбирайтесь :-)
Код:
unit OMCcore;

interface

function GetISAReg(Reg: Word):Byte;
procedure SetISAReg(Reg: Word; Data: Byte);
function GetWBVendorID: Word;
function GetWBTemp(index: Byte):single;
function GetWBChipID:byte;
function GetWBVoltage(index: Byte):byte;
function GetWBdivs(index: Byte):byte;
function IdentifyISAChip:boolean;

type
  TISASIOData=packed record
    Vin0, Vin1, Vin2, Vin3, Vin4,
    Vin5, Vin6, Vin7, Vin8:packed record
                             data:single;
                             name:string[10];
                           end;
    temp1, temp2, temp3:packed record
                          data:single;
                          name:string[10];
                        end;
    fan1cnt, fan2cnt, fan3cnt:packed record
                                data:integer;
                                name:string[10];
                              end;
    divs1, divs2, divs3:byte;
    fan1rpm, fan2rpm, fan3rpm:byte;
    fan1pwm, fan2pwm, fan3pwm:byte;
    ChipID:byte;
    VendorID:word;
    ChipName, ChipAccess:string[20];
  end;

var
  ISASIOData:TISASIOData;

implementation

uses DaemonIO, Windows, unit1;

const
  KnownISASIOs=8;

var
  Sensor : array[0..KnownISASIOs] of packed record
                                         ChipID:byte;
                                         VendorID:word;
                                         name:string;
                                       end=
        (
         (ChipID:0;VendorID:0;name:'Unsupported chip'),
         (ChipID:$21;VendorID:$5CA3;name:'Winbond W83627HF/F'),
         (ChipID:$60;VendorID:$5CA3;name:'Winbond W83697HF'),
         (ChipID:$80;VendorID:$5CA3;name:'Winbond W83637HF'),
         (ChipID:$90;VendorID:$5CA3;name:'Winbond W83627THF'),
         (ChipID:$30;VendorID:$5CA3;name:'Winbond W83782D'),
         (ChipID:$10;VendorID:$5CA3;name:'Winbond W83781D'),
         (ChipID:$5;VendorID:$90;name:'ITE IT8705F'),
         (ChipID:$12;VendorID:$90;name:'ITE IT8712F')
        );
  ConfigPort:array[1..4] of byte =($87, $1, $55, $55);

//General ISA functions with H.ODA mutex

function GetISAReg(Reg: Word):Byte;
begin
  // Wait fo release ISA mutex
  WaitforSingleObject(MutexISA,INFINITE);

  PortOut($295, Reg);
  result:=PortIn($296);

  //Release ISA mutex
  ReleaseMutex(MutexISA);
end;

procedure SetISAReg(Reg: Word; Data: Byte);
begin
  // Wait fo release ISA mutex
  WaitforSingleObject(MutexISA,INFINITE);

  PortOut($295,Reg);
  PortOut($296, Data);

  //Release ISA mutex
  ReleaseMutex(MutexISA);
end;

//Winbond ISA SuperIO functions

procedure SelectWBbank(index: Byte);
begin
  SetISAReg($4e,0);
  SetISAReg($4e,index);
end;

function GetWBVendorID: Word;
var
  a,b: Byte;
begin
  result:=0;
  SetISAReg($4e,128);
  a:=GetISAReg($4f);
  SetISAReg($4e,0);
  b:=GetISAReg($4f);
  result:=MakeWord(b,a);
end;

function GetWBChipID:byte;
begin
  result:=0;
  SelectWBbank(0);
  result:=GetISAReg($58);
end;

function GetWBTemp(index: Byte):single;
var
  tmp:byte;
begin
  case index of
    1:begin
      tmp:=GetISAReg($27);
      if ((tmp and $80) shr 7)= 1 then result:=-((tmp xor $FF)+1)
                                   else result:=tmp;
    end;
    2:begin
      SelectWBbank(1);
      tmp:=GetISAReg($50);
      if ((tmp and $80) shr 7)= 1 then result:=-((tmp xor $FF)+1)
                                   else result:=tmp;
      SelectWBbank(1);
      tmp:=GetISAReg($51);
      tmp:=tmp shr 7;
      result:=result+tmp/2;
    end;
    3:begin
      SelectWBbank(2);
      tmp:=GetISAReg($50);
      if ((tmp and $80) shr 7)= 1 then result:=-((tmp xor $FF)+1)
                                   else result:=tmp;
      SelectWBbank(2);
      tmp:=GetISAReg($51);
      tmp:=tmp shr 7;
      result:=result+tmp/2;
    end;
  end;
end;

function GetWBVoltage(index: Byte):byte;
var
  tmp:byte;
begin
  case index of
    0:result:=GetISAReg($20);
    1:result:=GetISAReg($21);
    2:result:=GetISAReg($22);
    3:result:=GetISAReg($23);
    4:result:=GetISAReg($24);
    5:result:=GetISAReg($25);
    6:result:=GetISAReg($26);
    7:begin //5VSB
      SelectWBbank(5);
      result:=GetISAReg($50);
    end;
    8:begin //VBAT
      //Enable VBAT monitoring
      SelectWBbank(0);
      tmp:=GetISAReg($5d);
      tmp:=tmp or 1;
      SetISAReg($5d,tmp);
      //Get VBAT
      SelectWBbank(5);
      result:=GetISAReg($51);
    end;
  end;
end;

function GetWBdivs(index: Byte):byte;
var
  tmp1, tmp2:byte;
begin
  case index of
    1:begin
      tmp1:=GetISAReg($47);
      SelectWBbank(0);
      tmp2:=GetISAReg($5d);
      result:=((tmp1 and $30) shr 4) or ((tmp2 and $20) shr 3);
      result:=1 shl result;
    end;
    2:begin
      tmp1:=GetISAReg($47);
      SelectWBbank(0);
      tmp2:=GetISAReg($5d);
      result:=((tmp1 and $C0) shr 6) or ((tmp2 and $40) shr 4);
      result:=1 shl result;
    end;
    3:begin
      tmp1:=GetISAReg($4b);
      SelectWBbank(0);
      tmp2:=GetISAReg($5d);
      result:=((tmp1 and $C0) shr 6) or ((tmp2 and $80) shr 5);
      result:=1 shl result;
    end;
  end;
end;

function GetWBrpm(index: Byte):byte;
begin
  case index of
    1:result:=GetISAReg($28);
    2:result:=GetISAReg($29);
    3:result:=GetISAReg($2a);
  end;
end;

//ITE ISA SuperIO functions

function GetITEVendorID: Word;
begin
  result:=0;
  result:=GetISAReg($58);
end;

function GetITEChipID:byte;
const
  GCRindexPort=$2e;
  GCRdataPort=$2f;
var
  i:byte;
begin
  result:=0;
  for i:=1 to 4 do
    PortOut($2e,configPort[i]);
  PortOut(GCRindexPort,$21);
  result:=PortIn(GCRdataPort);
end;

//General SuperIO functions

function IdentifyISAChip:boolean;
var
  ChipID:byte;
  VendorID:word;
  i:byte;
begin
  result:=false;
  VendorID:=GetWBVendorID;
  ChipID:=GetWBChipID;

  for i:=1 to KnownISASIOs do
      if (VendorID=Sensor[i].VendorID) and (ChipID=Sensor[i].ChipID)
        then
          begin
            ISASIOData.VendorID:=Sensor[i].VendorID;
            ISASIOData.ChipID:=Sensor[i].ChipID;
            ISASIOData.ChipName:=Sensor[i].name;
            ISASIOData.ChipAccess:='ISA 290h';
            result:=true;
            exit;
          end;

  VendorID:=GetITEVendorID;
  ChipID:=GetITEChipID;

  for i:=1 to KnownISASIOs do
      if (VendorID=Sensor[i].VendorID) and (ChipID=Sensor[i].ChipID)
        then
          begin
            ISASIOData.VendorID:=Sensor[i].VendorID;
            ISASIOData.ChipID:=Sensor[i].ChipID;
            ISASIOData.ChipName:=Sensor[i].name;
            ISASIOData.ChipAccess:='ISA 290h';
            result:=true;
            exit;
          end;

end;

end.


Добавлено спустя 2 минуты, 1 секунду:
Только для Winbond'ов и недописаны вольтажи :-)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 13.11.2004
Опа а как файлы прикрепить к сообщению .... Видать никак, посылаю AndreyZZ на ящик zmenya@inbox.ru .

Добавлено спустя 8 минут, 50 секунд:
Отправил принимай ....


 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
Спасибки Angel_19

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru


 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
Daemon а кде мне DaemonIO взять? Это твои модули чтоли?

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
AndreyZZ угу, это драйвер. Его дать не могу, но подобный есть в старых исходниках OSCI.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
Daemon Ок, спасибо

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru


 

Daemon писал(а):
Код:
....
function GetWBTemp(index: Byte):single;
var
  tmp:byte;
begin
  case index of
    1:begin
      tmp:=GetISAReg($27);
      if ((tmp and $80) shr 7)= 1 then result:=-((tmp xor $FF)+1)
                                   else result:=tmp;
    end;
    2:begin
      SelectWBbank(1);
      tmp:=GetISAReg($50);
      if ((tmp and $80) shr 7)= 1 then result:=-((tmp xor $FF)+1)
                                   else result:=tmp;
      SelectWBbank(1);
      tmp:=GetISAReg($51);
      tmp:=tmp shr 7;
      result:=result+tmp/2;
    end;
    3:begin
      SelectWBbank(2);
      tmp:=GetISAReg($50);
      if ((tmp and $80) shr 7)= 1 then result:=-((tmp xor $FF)+1)
                                   else result:=tmp;
      SelectWBbank(2);
      tmp:=GetISAReg($51);
      tmp:=tmp shr 7;
      result:=result+tmp/2;
    end;
  end;
end;


$27 выдает значение от 12 до 15, остальные 0 или -128. Это что означает? Подскажите плиз (Ep-8RDA3+; Winbond W83627HF)

Добавлено спустя 2 минуты, 1 секунду:
Только для Winbond'ов и недописаны вольтажи :-)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Nick3N
Цитата:
$27 выдает значение от 12 до 15, остальные 0 или -128. Это что означает? Подскажите плиз (Ep-8RDA3+; Winbond W83627HF)
код проверен и работал нормально и на W83627. Насколько мне известно на 8RDA3+ реализованы все три темп. датчика, возможно проблема с драйвером.

_________________
Ку ку


 

Daemon
я использовал GiveIO.sys . С показаниями напряжений вроде все в норме... правда Vbat тоже какую-то ерунду показывает.


 

Member
Статус: Не в сети
Регистрация: 15.07.2005
Откуда: Из Новочека
Жалко, что нет универсальной компоненты или исходника, который бы разом и на все датчики! Причём не только винбонд, но и ITE и др.

_________________
AMD Sempron64 2500+ 256k MB EPOX KDA3J NCP DDR 440MHz Dual 512 Mb CDRW Sony HDD 40Gb ADSL 6Mb/sec Сайт http://www.adzone.nm.ru


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 18 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan