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




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

Member
Статус: Не в сети
Регистрация: 22.01.2004
Откуда: Новосибисрк
Привет ВСЕМ!
Предлагаю в этой ветке обсуждать у кого что получилось по работе с чипами ITE.

Тема создана в продолжение ветки: http://forums.overclockers.ru/viewtopic.php?p=692919#692919



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Гоша я по крайней мере читал всё кроме температуры. Если что, то могу поделиться рабочим кодом. Как прочитать Chip ID кто-нибудь все-таки знает?

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 20.06.2003
Откуда: Ижевск
У кого есть такой чип мониторинга, проверьте плиз мой скринсэйвер с http://people.overclockers.ru/awl/files
А то писал юнит для ITE вслепую :(


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
awl на чем писал??? Скринсейвер, ого!
awl а Chip ID читал?

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 20.06.2003
Откуда: Ижевск
Daemon
Цитата:
на чем писал???

На дельфях писал :)
А ChipID вроде как из 58h регистра читается, для IT8205 он по даташиту равен 90h.
И вообще, в даташитах на ITE есть все что нужно, вроде бы..

PS: Самое главное-то - мониторинг ITE работает или нет? ;)
Мне даже проверить не на чем, одни винбонды под рукой :(


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
awl как раз из 58h читаеться Vendor ID - наш дорогой ITE, для всех ITE чипов одинаков, это у винбонда отуда читаеться Chip ID причем 90h он у w83782D кажись.
Цитата:
И вообще, в даташитах на ITE есть все что нужно, вроде бы..

Я не могу вкурить где он там :sad:

Цитата:
PS: Самое главное-то - мониторинг ITE работает или нет?
Мне даже проверить не на чем, одни винбонды под рукой

К сожалению мне тоже не начем. Я вообще пишу практически для всех чипов вслепую, особенно управление фанами.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 22.01.2004
Откуда: Новосибисрк
Daemon Было бы интерсно посмотреть код! А ты на чём пишешь?
А ChipID можно узнать из 20h и 21h регистров значения для ITE-8712F должны быть 87h и 12h соответсвенно.

awl Что-то не могу скачать файл.. :(


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Гоша качать надо эксплорером по прямой ссылке с персональной странички.

Как найду код сразу выложу, пишу на Делфи + ассемблер(если надо)
Цитата:
А ChipID можно узнать из 20h и 21h регистров значения для ITE-8712F должны быть 87h и 12h соответсвенно.

А банк, либо что нужно перед этим записать в регистры? Поскольку-то напряжения читаються из 20h-27h

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
К сожалению код был безвозвратно утрачен, вчера с утреца написал новый, но незнаю как он работает. Ты скачай с ftp.i.com.ua логин evilsoul и пароль evilevil файлик - поймешь какой. Сделай скрин и кинь сюда, если будет все правильно я выложу код. Не волнуйся там нет ничего лишнего.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 22.01.2004
Откуда: Новосибисрк
Daemon Не получается скачать, можешь мне на мыло выслать: goshich@mail.ru


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon Так ты про этот chipid меня спрашивал на форуме по програмингу? Кстати мне было бы тоже охото глянуть на код по работе с этим делом. Все никак не доберусь до него.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams неа, там же про видеокарты ишла речь, а тут речь о SuperIO, ладно как хотите, код написан за 15 мин по даташиту и толком не был проверен, вот в принцыпе что было написано:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var fan1div, fan2div, fan3div:byte;
begin
//Voltages Reading
PortOut($295,$20);
Vin1.Caption:=Vin1.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$21);
Vin2.Caption:=Vin2.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$22);
Vin3.Caption:=Vin3.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$23);
Vin4.Caption:=Vin4.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$24);
Vin5.Caption:=Vin5.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$25);
Vin6.Caption:=Vin6.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$26);
Vin7.Caption:=Vin7.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$27);
Vin8.Caption:=Vin8.Caption+' '+FloatToStr(PortIn($296)*0.016);
PortOut($295,$28);
Vbat.Caption:=Vbat.Caption+' '+FloatToStr(PortIn($296)*0.016);
//Temperatures Reading
PortOut($295,$29);
temp1.Caption:=temp1.Caption+' '+FloatToStr(PortIn($296));
PortOut($295,$2a);
temp2.Caption:=temp2.Caption+' '+FloatToStr(PortIn($296));
PortOut($295,$2b);
temp3.Caption:=temp3.Caption+' '+FloatToStr(PortIn($296));
//Fans divisors reading
fan3div:=2;
//Fan1div
PortOut($295,$0b);
fan1div:=PortIn($296);
asm
  mov al,fan1div
  and al,00000111b
  mov fan1div,al
end;
case fan1div of
  0:fan1div:=1;
  1:fan1div:=2;
  2:fan1div:=4;
  3:fan1div:=8;
  4:fan1div:=16;
  5:fan1div:=32;
  6:fan1div:=64;
  7:fan1div:=128;
end;
//Fan2div
PortOut($295,$0b);
fan2div:=PortIn($296);
asm
  mov al,fan2div
  and al,00111000b
  shr al,3
  mov fan2div,al
end;
case fan2div of
  0:fan2div:=1;
  1:fan2div:=2;
  2:fan2div:=4;
  3:fan2div:=8;
  4:fan2div:=16;
  5:fan2div:=32;
  6:fan2div:=64;
  7:fan2div:=128;
end;
fan1divi.caption:=fan1divi.caption+' '+FloatToStr(fan1div);
fan2divi.caption:=fan2divi.caption+' '+FloatToStr(fan1div);
fan3divi.caption:=fan3divi.caption+' '+FloatToStr(fan1div);
//Fans Reading
PortOut($295,$0d);
fan1.Caption:=fan1.Caption+' '+FloatToStr(1350000/(PortIn($296)*fan1div));
PortOut($295,$0e);
fan2.Caption:=fan2.Caption+' '+FloatToStr(1350000/(PortIn($296)*fan2div));
PortOut($295,$0f);
fan3.Caption:=fan3.Caption+' '+FloatToStr(1350000/(PortIn($296)*fan3div));
end;

Короче, несложно, но тут не обрабатываються 2 случая с фанами, когда каунтер равен 255 или 0, то и обороты равны 0. И еще напряжения не высчитываються, а домножаються на 16 миливольт, есть разные реализации этого SuperIO, по этому конкретные формулы подставлять нестал.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Оки, дома попробую. Может получится присобачу как плагин для ATT :)


 

Member
Статус: Не в сети
Регистрация: 22.01.2004
Откуда: Новосибисрк
Ray Adams Было-бы наверное совсем не плохо!
Daemon Привожу пример кода для считывания ChipID
Код:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "winio.h"

byte configPort[4]={0x87, 0x01, 0x55, 0x55};
WORD indexPort = 0x2e;
WORD dataPort = 0x2f;
WORD addressPortEC = 0, dataPortEC = 0;

DWORD readFromPort(WORD index) {
   bool result = false;
   DWORD portValue = 0;

   result = SetPortVal(indexPort, index, 1);
   
   if (result) {
      result = GetPortVal(dataPort, &portValue, 1);
      if (result) {
         return portValue;
      }
      printf("Ошибка при чтении значения из порта.\n");
      return 0;
   }
   else {
      printf("Ошибка при записи значения в порт.\n");
      return 0;
   }
}

bool writeToPort(WORD index, DWORD value, byte numBytes=1) {
   bool result = false;
   short a = 0;

   a = outp(indexPort, index);

   if (result) {
      result = SetPortVal(dataPort, value, 1);
      if (result) {
         return true;
      }
      printf("Ошибка при записи значения в порт.\n");
      return false;
   }
   else {
      printf("Ошибка при записи значения в порт.\n");
      return false;
   }
}

void main()
{
   bool bResult;
   DWORD res;

   bResult = InitializeWinIo();

   if (bResult)
   {
      for (int i=0; i<4; i++) {
          SetPortVal(0x2e, configPort[i], 1);
      }
      
      res = readFromPort(0x20);
      if ((byte)res==0x87) {
         res = readFromPort(0x21);
         if ((byte)res==0x12) {
            printf("Initialize ITE-8712 - OK.\n");
         }
         else {
            printf("Error during initialize ITE-8712.\n");
         }
      }
      else {
         printf("Error during initialize ITE-8712.\n");
      }
      ShutdownWinIo();
   }
   else
   {
      printf("Error during initialization of WinIo.\n");
      exit(1);
   }
}


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Гоша сори, мылом не могу. Там все просто, заходишь на фтп под логином и паролем и скачиваешь, сейчас там 3 архива. Если нужно конечно.
Ray Adams если бы я умел программировать без VCL, сам бы написал плагин. :-)
Млин опять C, да ж это такое :sad:

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 22.01.2004
Откуда: Новосибисрк
Daemon Понятно, буду пробывать. У меня просто почему-то на ftp не хочет заходить.. :( Моежт и моя прокся виновата.
Что было под рукой, на том иписал. В принципе там нет ни какой специфики от С.

Daemon Только подключился и попробывал зайти (логин: evilsoul, пароль: evilevil) говорить, что нет доступа... :(


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams могу еще кое-что запостить - более популярный чип:
Код:
$21:begin  // Winbond W83627HF/F
           //Voltages
       PortOut($295,$20);  //Vcore reading
       monm[1]:=PortIn($296);
       PortOut($295,$21);  //Vin1 reading
       monm[2]:=PortIn($296);
       PortOut($295,$22);  //+3.3Vin reading
       monm[3]:=PortIn($296);
       PortOut($295,$23);  //+5Vin reading
       monm[4]:=PortIn($296);
       PortOut($295,$24);  //+12Vin reading
       monm[5]:=PortIn($296);
       PortOut($295,$25);  //-12Vin reading
       monm[6]:=PortIn($296);
       PortOut($295,$26);  //-5Vin reading
       monm[7]:=PortIn($296);
       PortOut($295,$4e);  //+5VSB reading
       PortOut($296,5);
       PortOut($295,$50);
       monm[8]:=PortIn($296);
       PortOut($295,$4e);  //VBAT reading
       PortOut($296,5);
       PortOut($295,$51);
       monm[9]:=PortIn($296);
          //Temperatures
       PortOut($295,$27);  //Temp1 reading
       monm[14]:=PortIn($296);
       PortOut($295,$4e);  //Temp2 reading
       PortOut($296,1);
       PortOut($295,$50);
       monm[15]:=PortIn($296);
       PortOut($295,$4e);  //Temp3 reading
       PortOut($296,2);
       PortOut($295,$50);
       monm[16]:=PortIn($296);
          //Fans
       PortOut($295,$28);  //Fan1 reading
       monm[10]:=PortIn($296);
       PortOut($295,$29);  //Fan2 reading
       monm[11]:=PortIn($296);
       PortOut($295,$2a);  //Fan3 reading
       monm[12]:=PortIn($296);
         //Divisors
       PortOut($295,$47);  //Fan1 & Fan2 divisor reading
       temp:=PortIn($296);
       asm
         mov al,temp
         and al,00110000b
         shr al,4
         mov fan1divw,al

         mov al,temp
         and al,11000000b
         shr al,6
         mov fan2divw,al
       end;
       PortOut($295,$4e);
       PortOut($296,0);
       PortOut($295,$5d);
       temp:=PortIn($296);
       asm
         mov al,temp
         and al,00100000b
         shr al,3
         or fan1divw,al

         mov al,temp
         and al,01000000b
         shr al,4
         or fan2divw,al
       end;
       case fan1divw of
        0:fan1divw:=1;
        1:fan1divw:=2;
        2:fan1divw:=4;
        3:fan1divw:=8;
        4:fan1divw:=16;
        5:fan1divw:=32;
        6:fan1divw:=64;
        7:fan1divw:=128;
       end;
       case fan2divw of
        0:fan2divw:=1;
        1:fan2divw:=2;
        2:fan2divw:=4;
        3:fan2divw:=8;
        4:fan2divw:=16;
        5:fan2divw:=32;
        6:fan2divw:=64;
        7:fan2divw:=128;
       end;
       PortOut($295,$4b);  //Fan3 divisor reading
       temp:=PortIn($296);
       asm
         mov al,temp
         and al,11000000b
         shr al,6
         mov fan3divw,al
       end;
       PortOut($295,$4e);
       PortOut($296,0);
       PortOut($295,$5d);
       temp:=PortIn($296);
       asm
         mov al,temp
         and al,10000000b
         shr al,5
         or fan3divw,al
       end;
       case fan3divw of
        0:fan3divw:=1;
        1:fan3divw:=2;
        2:fan3divw:=4;
        3:fan3divw:=8;
        4:fan3divw:=16;
        5:fan3divw:=32;
        6:fan3divw:=64;
        7:fan3divw:=128;
       end;
    end;


Мож где-то и криво, но смысел понятен, а это просчет:

Код:
$21:begin  // Winbond W83627HF/F standart 1
           //Voltages
       monm[1]:=monm[1]*0.016; //Vcore calculating
       monm[2]:=monm[2]*0.016; //Vin1 calculating
       monm[3]:=monm[3]*0.016; //+3.3Vin calculating
       monm[4]:=monm[4]*0.016*1.68; //+5Vin calculating
       monm[5]:=monm[5]*0.016*3.8; //+12Vin calculating
       monm[6]:=((monm[6]*0.016)-3.6)*5.14+3.6; //-12Vin calculating
       monm[7]:=((monm[7]*0.016)-3.6)*3.14+3.6;  //-5Vin calculating
       monm[8]:=monm[8]*0.016*1.515{7}; //+5VSB calculating
       monm[9]:=monm[9]*0.016; //VBAT calculating
           //Temperatures
       if (monm[14]<-100) or (monm[14]>150) then monm[14]:=-250;
       if (monm[15]<-100) or (monm[15]>150) then monm[15]:=-250;
       if (monm[16]<-100) or (monm[16]>150) then monm[16]:=-250;
           //Fans
       if monm[10]=255 then monm[10]:=0
                       else if monm[10]=0 then monm[10]:=-250
                                           else monm[10]:=1350000/(monm[10]*fan1divw);
       if monm[11]=255 then monm[11]:=0
                       else if monm[11]=0 then monm[11]:=-250
                                           else monm[11]:=1350000/(monm[11]*fan2divw);
       if monm[12]=255 then monm[12]:=0
                       else if monm[12]=0 then monm[12]:=-250
                                           else monm[12]:=1350000/(monm[12]*fan3divw);
     
    end;

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Так, может кто-то пытался на ITE чипах регулировать скорость фанов? А то я глядел в даташит IT8705 увидел только как можно активировать SmartFan, а так что бы в ручную?

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 14.04.2003
Откуда: Минск, Беларусь
Daemon
Цитата:
Так, может кто-то пытался на ITE чипах регулировать скорость фанов?

На 8712 есть три регистра, работают на ура.
Цитата:
case fan3divw of
0:fan3divw:=1;
1:fan3divw:=2;
2:fan3divw:=4;
3:fan3divw:=8;
4:fan3divw:=16;
5:fan3divw:=32;
6:fan3divw:=64;
7:fan3divw:=128;
end;

Замени на
fan3divw:=1 shl fan3divw;
Попробуй, будешь приятно удивлен.

И второе - процедуры пусть враг(Вирт) пишет?

И последнее, что эта ветка в ПО делает? ей место в программировании

_________________
"Помогите, 20 беспроводных мышей общаются сквозь стены!"
--- SweetLow ---


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
SweetLow
Цитата:
Замени на
fan3divw:=1 shl fan3divw;
Попробуй, будешь приятно удивлен.

Незнал, что в Делфи есть shl/shr, а вообще-то тот кусок был на ассемблере, просто переделал на всякий случай :-)
Цитата:
И второе - процедуры пусть враг(Вирт) пишет?

Не понял сути вопроса, какие процедуры, для дивайзоров что ли? Зачем они тут нужны, написание универсальной процедуры, только услажняет читабельность кода в последствии.
Цитата:
И последнее, что эта ветка в ПО делает? ей место в программировании

Модераторы спят :-)
Цитата:
На 8712 есть три регистра, работают на ура.

А носом не ткнешь, а то смотрю и фижу фигу. Нет под рукой мамки с таким чипом, что бы самому попробывать.

_________________
Ку ку


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 35 • Страница 1 из 21  2  >
-

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


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

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


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

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