Bonjour à tous,
J'ai un petit programme en C++ qui fonctionne sous WinNT et qui permet de récupérer la température dans le processeur et la vitesse du ventilateur.
Le problème est que ce programme n'est utilisable que pour un chipset donné (ITE IT8705F) et je dois adapter les sources pour un autre (VIA VT 82C686B).
Voici déjà l'essentiel du code source pour le chipset ITE:
J'ai compris que toutes les adresses données sont différentes d'un chipset à un autre. J'ai donc trouvé dans la doc du chipset ITE à quoi elle correspondent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 long CChipsetMonitoringDlg::GetIteDatas() { HANDLE h; //On load le driver giveio h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(h == INVALID_HANDLE_VALUE)//le driver n'est pas installé donc on envoie cette info : 0 { AfxMessageBox("Error while loading giveio"); return; } CloseHandle(h); long divisor , revolution , div ; _outp(0x290 + 0x05 , 0x2a); m_lT1 = (signed char) _inp(0x290 + 0x06 ); // tf = 9*t/5 + 32 ;//Conversion Celsius -> Farenheit _outp(0x290 + 0x05 , 0x2b); m_lT2 = (signed char)_inp(0x290 + 0x06 ); _outp(0x290 + 0x05 , 0x0b); divisor = _inp(0x290 + 0x06 ); _outp(0x290 + 0x05 , 0x0d); revolution = _inp(0x290 + 0x06 ); divisor &= 0x07 ; // 0111 : les trois premiers bits div = (long) pow(2.00,divisor); m_lFanSpeed1 = (long )(1350000.00 / (div * revolution ) ); return 0; }
0x2a TMPIN2 Temperature Reading Register
0x2b TMPIN3 Temperature Reading Register
0x0d Fan Tachometer 1 Reading Register
0x0b Fan Tachometer Divider Register
Adress register Base address + 0x05
Data register Base address + 0x06
Par contre, pas moyen de trouver d'où vient cette valeur pour Base Address : 0x290 :
Dans la doc pour le chipset VIA je pense avoir trouvé les adresses correspondant aux températures et aux vitesses de ventilateur, mais je ne sait pas où trouver l'adresse de base (adresse du port ?).
Je suis complétement débutant dans ce genre de programmation, est-ce que quelqu'un peut me donner des pistes ?
Partager