Temperatursensoren auslesen

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von Purzel2000, 28.08.2006.

  1. Purzel2000

    Purzel2000 Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    MacUser seit:
    15.01.2006
    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
     
  2. Sojus

    Sojus MacUser Mitglied

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

    wenn mich meine Mathekenntnisse nicht täuschen
     
  3. MACzeugs

    MACzeugs MacUser Mitglied

    Beiträge:
    840
    Zustimmungen:
    15
    MacUser seit:
    27.08.2006
    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...
     
  4. lundehundt

    lundehundt MacUser Mitglied

    Beiträge:
    19.352
    Zustimmungen:
    881
    MacUser seit:
    22.02.2003
    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
     
  5. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    MacUser seit:
    02.09.2004
    Aber ioreg macht schon einen ganz guten Job; ich denke, M. Bresink machnt auch nichts anderes.
     
  6. Purzel2000

    Purzel2000 Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    MacUser seit:
    15.01.2006
    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 );
     
Die Seite wird geladen...
Ähnliche Themen - Temperatursensoren auslesen
  1. Uniquesone
    Antworten:
    5
    Aufrufe:
    1.202
    Uniquesone
    21.10.2011
  2. Killerplauze
    Antworten:
    0
    Aufrufe:
    673
    Killerplauze
    22.09.2011
  3. Maverick79
    Antworten:
    8
    Aufrufe:
    1.119
    Maverick79
    26.08.2011
  4. Smoothie4
    Antworten:
    8
    Aufrufe:
    1.834
    _ebm_
    10.08.2011
  5. Algoros
    Antworten:
    10
    Aufrufe:
    2.252
    Gondomir
    13.06.2011