Temperatursensoren auslesen

  1. Purzel2000

    Purzel2000 Thread StarterMacUser Mitglied

    Mitglied seit:
    15.01.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Hi all,
    hat jemand Erfahrung bzw. eine Beschreibung, was die Temperatursensoren für Werte anzeigen ?
    Mit dem IORegistryExplorer bekommt man ja die Werte angezeigt, aber wie kommt man von 1802240 (0x1b8000) auf 36,0 Grad Celisius ?

    Purzel
     
    Purzel2000, 28.08.2006
  2. Sojus

    SojusMacUser Mitglied

    Mitglied seit:
    30.05.2006
    Beiträge:
    143
    Zustimmungen:
    3
    36 = 1802240
    1 = (1802240 /36)*1
    1= 50062.2

    wenn mich meine Mathekenntnisse nicht täuschen
     
    Sojus, 29.08.2006
  3. MACzeugs

    MACzeugsMacUser Mitglied

    Mitglied seit:
    27.08.2006
    Beiträge:
    840
    Zustimmungen:
    15
    Das ist natürlich der klassische Dreisatz. Ob das aber stimmt bezweifle ich stark. Ich würde eher mal hiermit mein Glück versuchen:
    http://de.wikipedia.org/wiki/Hexadezimal
    Vielleicht, irgendwie...
     
    MACzeugs, 29.08.2006
  4. lundehundt

    lundehundtMacUser Mitglied

    Mitglied seit:
    22.02.2003
    Beiträge:
    17.769
    Zustimmungen:
    881
    die Schnittstellen um die Sensoren auszulesen sind nicht von Apple dokumentiert. Es wird auch nicht so trivial sein, dass man einfach den hex Wert in Celsius umrechnen kann. Und ich wuerde wenn, dann eher Fahrenheit als Index vermuten :)

    Hier gibt es ein wenig Hintergrundinformation ueber die Sensorik in Macs.
    http://www.bresink.com/osx/216202/issues.html
     
    lundehundt, 29.08.2006
  5. der_Kay

    der_KayMacUser Mitglied

    Mitglied seit:
    02.09.2004
    Beiträge:
    1.685
    Zustimmungen:
    8
    Aber ioreg macht schon einen ganz guten Job; ich denke, M. Bresink machnt auch nichts anderes.
     
    der_Kay, 29.08.2006
  6. Purzel2000

    Purzel2000 Thread StarterMacUser Mitglied

    Mitglied seit:
    15.01.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Ta ta - die Lösung: Darwin sources

    Habe folgenden wurm gefunden
    ---
    ioreg -n IOHWSensor | awk '/location/ || /current-value/ || /"type"/' | sed -e 's/[^"]*"//' -e 's/" =//' -e 's/location//' -e 's/type//' -e 's/"//g' | awk '{ d=($2/65536); if ($1=="current-value") print substr(d,1,7) "\t" ; if ($1!="current-value") print $0 }' | sed -e 's/temperature/Celsius/' -e 's/voltage/volts/' -e 's/fanspeed/fan RPM/' -e 's/current/Amps/' -e 's/^temp$//' -e 's/ //' | awk '{ if ((NR % 3) == 0) print $0; else printf $0 " " }'
    ---
    und der im Vergleich zu Temperaturemonitor gibt (außer für die CPU T-Diode) eigentlich die gleichen Celisius werte raus. Und wie war das noch mit division gleich bitshift ? 65536= 0x10000, dass würde also sagen, dass die unteren 16 Bit ausgeblendet werden. Ahh, ok es wird getrennt: die oberen 16 bit vor dem komma und die unteren als Nachstellen

    okay im Darwin Source für einen der Sensoren habe ich folgendes noch gefunden:
    IOReturn IOI2CLM7x::getTemperature(SInt32 *temperature)
    {
    IOReturn status;
    UInt8 bytes[2];
    SInt16 reading;

    status = readI2C((UInt8 )kTemperatureReg, bytes, 2);
    if(status != kIOReturnSuccess)
    {
    ERRLOG("IOI2CLM7x::getTemperature(0x%x) readI2C failed.\n", getI2CAddress());
    return status;
    }

    reading = *((SInt16 *) bytes);
    // Temperature data is represented by a 9-bit, twoÕs complement word with
    // an LSB equal to 0.5C (least significant 7 bits are undefined).

    // Extra casting is required to make sure we sign-extend the temperature, to
    // handle negative temperatures.
    *temperature = ( ( ( SInt16 ) ( reading & 0xFF80 ) ) << 8 );

    return kIOReturnSuccess;
    }
    Für den Maxim6690 gilt :
    else // format the 16.16 fixed point temperature and return it
    *temp = ( ( ( ( SInt8 ) integer ) << 16 ) | ( ( fraction & 0xE0 ) << 8 );
     
    Purzel2000, 02.09.2006
Die Seite wird geladen...
Ähnliche Themen - Temperatursensoren auslesen
  1. Uniquesone
    Antworten:
    5
    Aufrufe:
    1.226
    Uniquesone
    21.10.2011
  2. Killerplauze
    Antworten:
    0
    Aufrufe:
    707
    Killerplauze
    22.09.2011
  3. Maverick79
    Antworten:
    8
    Aufrufe:
    1.280
    Maverick79
    26.08.2011
  4. Smoothie4
    Antworten:
    8
    Aufrufe:
    1.898