sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget-/translations/zh_CN/hwmon/abituguru-datasheetmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/zh_TW/hwmon/abituguru-datasheetmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/it_IT/hwmon/abituguru-datasheetmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/ja_JP/hwmon/abituguru-datasheetmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/ko_KR/hwmon/abituguru-datasheetmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget-/translations/sp_SP/hwmon/abituguru-datasheetmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(huGuru datasheeth]huGuru datasheet}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhG/var/lib/git/docbuild/linux/Documentation/hwmon/abituguru-datasheet.rsthKubh paragraph)}(hX+First of all, what I know about uGuru is no fact based on any help, hints or datasheet from Abit. The data I have got on uGuru have I assembled through my weak knowledge in "backwards engineering". And just for the record, you may have noticed uGuru isn't a chip developed by Abit, as they claim it to be. It's really just a microprocessor (uC) created by Winbond (W83L950D). And no, reading the manual for this specific uC or mailing Winbond for help won't give any useful data about uGuru, as it is the program inside the uC that is responding to calls.h]hX5First of all, what I know about uGuru is no fact based on any help, hints or datasheet from Abit. The data I have got on uGuru have I assembled through my weak knowledge in “backwards engineering”. And just for the record, you may have noticed uGuru isn’t a chip developed by Abit, as they claim it to be. It’s really just a microprocessor (uC) created by Winbond (W83L950D). And no, reading the manual for this specific uC or mailing Winbond for help won’t give any useful data about uGuru, as it is the program inside the uC that is responding to calls.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h.Olle Sandberg , 2005-05-25h](hOlle Sandberg <}(hhhhhNhNubh reference)}(hollebull@gmail.comh]hollebull@gmail.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:ollebull@gmail.comuh1hhhubh >, 2005-05-25}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hXOriginal version by Olle Sandberg who did the heavy lifting of the initial reverse engineering. This version has been almost fully rewritten for clarity and extended with write support and info on more databanks, the write support is once again reverse engineered by Olle the additional databanks have been reverse engineered by me. I would like to express my thanks to Olle, this document and the Linux driver could not have been written without his efforts.h]hXOriginal version by Olle Sandberg who did the heavy lifting of the initial reverse engineering. This version has been almost fully rewritten for clarity and extended with write support and info on more databanks, the write support is once again reverse engineered by Olle the additional databanks have been reverse engineered by me. I would like to express my thanks to Olle, this document and the Linux driver could not have been written without his efforts.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hNote: because of the lack of specs only the sensors part of the uGuru is described here and not the CPU / RAM / etc voltage & frequency control.h]hNote: because of the lack of specs only the sensors part of the uGuru is described here and not the CPU / RAM / etc voltage & frequency control.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h0Hans de Goede , 28-01-2006h](hHans de Goede <}(hjhhhNhNubh)}(hj.w.r.degoede@hhs.nlh]hj.w.r.degoede@hhs.nl}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:j.w.r.degoede@hhs.nluh1hhjubh >, 28-01-2006}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Detectionh]h Detection}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hhhhhKubh)}(hX'As far as known the uGuru is always placed at and using the (ISA) I/O-ports 0xE0 and 0xE4, so we don't have to scan any port-range, just check what the two ports are holding for detection. We will refer to 0xE0 as CMD (command-port) and 0xE4 as DATA because Abit refers to them with these names.h]hX)As far as known the uGuru is always placed at and using the (ISA) I/O-ports 0xE0 and 0xE4, so we don’t have to scan any port-range, just check what the two ports are holding for detection. We will refer to 0xE0 as CMD (command-port) and 0xE4 as DATA because Abit refers to them with these names.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hj)hhubh)}(hX#If DATA holds 0x00 or 0x08 and CMD holds 0x00 or 0xAC a uGuru could be present. We have to check for two different values at data-port, because after a reboot uGuru will hold 0x00 here, but if the driver is removed and later on attached again data-port will hold 0x08, more about this later.h]hX#If DATA holds 0x00 or 0x08 and CMD holds 0x00 or 0xAC a uGuru could be present. We have to check for two different values at data-port, because after a reboot uGuru will hold 0x00 here, but if the driver is removed and later on attached again data-port will hold 0x08, more about this later.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hj)hhubh)}(hXAAfter wider testing of the Linux kernel driver some variants of the uGuru have turned up which will hold 0x00 instead of 0xAC at the CMD port, thus we also have to test CMD for two different values. On these uGuru's DATA will initially hold 0x09 and will only hold 0x08 after reading CMD first, so CMD must be read first!h]hXCAfter wider testing of the Linux kernel driver some variants of the uGuru have turned up which will hold 0x00 instead of 0xAC at the CMD port, thus we also have to test CMD for two different values. On these uGuru’s DATA will initially hold 0x09 and will only hold 0x08 after reading CMD first, so CMD must be read first!}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hj)hhubh)}(h]To be really sure a uGuru is present a test read of one or more register sets should be done.h]h]To be really sure a uGuru is present a test read of one or more register sets should be done.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hj)hhubeh}(h] detectionah ]h"] detectionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hReading / Writingh]hReading / Writing}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhK6ubh)}(hhh](h)}(h Addressingh]h Addressing}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK9ubh)}(hThe uGuru has a number of different addressing levels. The first addressing level we will call banks. A bank holds data for one or more sensors. The data in a bank for a sensor is one or more bytes large.h]hThe uGuru has a number of different addressing levels. The first addressing level we will call banks. A bank holds data for one or more sensors. The data in a bank for a sensor is one or more bytes large.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjhhubh)}(hThe number of bytes is fixed for a given bank, you should always read or write that many bytes, reading / writing more will fail, the results when writing less then the number of bytes for a given bank are undetermined.h]hThe number of bytes is fixed for a given bank, you should always read or write that many bytes, reading / writing more will fail, the results when writing less then the number of bytes for a given bank are undetermined.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjhhubh)}(hSee below for all known bank addresses, numbers of sensors in that bank, number of bytes data per sensor and contents/meaning of those bytes.h]hSee below for all known bank addresses, numbers of sensors in that bank, number of bytes data per sensor and contents/meaning of those bytes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjhhubh)}(hAlthough both this document and the kernel driver have kept the sensor terminology for the addressing within a bank this is not 100% correct, in bank 0x24 for example the addressing within the bank selects a PWM output not a sensor.h]hAlthough both this document and the kernel driver have kept the sensor terminology for the addressing within a bank this is not 100% correct, in bank 0x24 for example the addressing within the bank selects a PWM output not a sensor.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjhhubh)}(hX0Notice that some banks have both a read and a write address this is how the uGuru determines if a read from or a write to the bank is taking place, thus when reading you should always use the read address and when writing the write address. The write address is always one (1) more than the read address.h]hX0Notice that some banks have both a read and a write address this is how the uGuru determines if a read from or a write to the bank is taking place, thus when reading you should always use the read address and when writing the write address. The write address is always one (1) more than the read address.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjhhubeh}(h] addressingah ]h"] addressingah$]h&]uh1hhjzhhhhhK9ubh)}(hhh](h)}(h uGuru readyh]h uGuru ready}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKRubh)}(h\Before you can read from or write to the uGuru you must first put the uGuru in "ready" mode.h]h`Before you can read from or write to the uGuru you must first put the uGuru in “ready” mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjhhubh)}(hTo put the uGuru in ready mode first write 0x00 to DATA and then wait for DATA to hold 0x09, DATA should read 0x09 within 250 read cycles.h]hTo put the uGuru in ready mode first write 0x00 to DATA and then wait for DATA to hold 0x09, DATA should read 0x09 within 250 read cycles.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjhhubh)}(hNext CMD _must_ be read and should hold 0xAC, usually CMD will hold 0xAC the first read but sometimes it takes a while before CMD holds 0xAC and thus it has to be read a number of times (max 50).h]hNext CMD _must_ be read and should hold 0xAC, usually CMD will hold 0xAC the first read but sometimes it takes a while before CMD holds 0xAC and thus it has to be read a number of times (max 50).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhjhhubh)}(hX5After reading CMD, DATA should hold 0x08 which means that the uGuru is ready for input. As above DATA will usually hold 0x08 the first read but not always. This step can be skipped, but it is undetermined what happens if the uGuru has not yet reported 0x08 at DATA and you proceed with writing a bank address.h]hX5After reading CMD, DATA should hold 0x08 which means that the uGuru is ready for input. As above DATA will usually hold 0x08 the first read but not always. This step can be skipped, but it is undetermined what happens if the uGuru has not yet reported 0x08 at DATA and you proceed with writing a bank address.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hjhhubeh}(h] uguru-readyah ]h"] uguru readyah$]h&]uh1hhjzhhhhhKRubh)}(hhh](h)}(h.Sending bank and sensor addresses to the uGuruh]h.Sending bank and sensor addresses to the uGuru}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hhhhhKeubh)}(hFirst the uGuru must be in "ready" mode as described above, DATA should hold 0x08 indicating that the uGuru wants input, in this case the bank address.h]hFirst the uGuru must be in “ready” mode as described above, DATA should hold 0x08 indicating that the uGuru wants input, in this case the bank address.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghj;hhubh)}(hNext write the bank address to DATA. After the bank address has been written wait for to DATA to hold 0x08 again indicating that it wants / is ready for more input (max 250 reads).h]hNext write the bank address to DATA. After the bank address has been written wait for to DATA to hold 0x08 again indicating that it wants / is ready for more input (max 250 reads).}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhj;hhubh)}(h;Once DATA holds 0x08 again write the sensor address to CMD.h]h;Once DATA holds 0x08 again write the sensor address to CMD.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhj;hhubeh}(h].sending-bank-and-sensor-addresses-to-the-uguruah ]h"].sending bank and sensor addresses to the uguruah$]h&]uh1hhjzhhhhhKeubh)}(hhh](h)}(hReadingh]hReading}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hhhhhKrubh)}(hFirst send the bank and sensor addresses as described above. Then for each byte of data you want to read wait for DATA to hold 0x01 which indicates that the uGuru is ready to be read (max 250 reads) and once DATA holds 0x01 read the byte from CMD.h]hFirst send the bank and sensor addresses as described above. Then for each byte of data you want to read wait for DATA to hold 0x01 which indicates that the uGuru is ready to be read (max 250 reads) and once DATA holds 0x01 read the byte from CMD.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthj~hhubh)}(hOnce all bytes have been read data will hold 0x09, but there is no reason to test for this. Notice that the number of bytes is bank address dependent see above and below.h]hOnce all bytes have been read data will hold 0x09, but there is no reason to test for this. Notice that the number of bytes is bank address dependent see above and below.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj~hhubh)}(hXAfter completing a successful read it is advised to put the uGuru back in ready mode, so that it is ready for the next read / write cycle. This way if your program / driver is unloaded and later loaded again the detection algorithm described above will still work.h]hXAfter completing a successful read it is advised to put the uGuru back in ready mode, so that it is ready for the next read / write cycle. This way if your program / driver is unloaded and later loaded again the detection algorithm described above will still work.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hj~hhubeh}(h]readingah ]h"]readingah$]h&]uh1hhjzhhhhhKrubh)}(hhh](h)}(hWritingh]hWriting}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hFirst send the bank and sensor addresses as described above. Then for each byte of data you want to write wait for DATA to hold 0x00 which indicates that the uGuru is ready to be written (max 250 reads) and once DATA holds 0x00 write the byte to CMD.h]hFirst send the bank and sensor addresses as described above. Then for each byte of data you want to write wait for DATA to hold 0x00 which indicates that the uGuru is ready to be written (max 250 reads) and once DATA holds 0x00 write the byte to CMD.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hpOnce all bytes have been written wait for DATA to hold 0x01 (max 250 reads) don't ask why this is the way it is.h]hrOnce all bytes have been written wait for DATA to hold 0x01 (max 250 reads) don’t ask why this is the way it is.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h6Once DATA holds 0x01 read CMD it should hold 0xAC now.h]h6Once DATA holds 0x01 read CMD it should hold 0xAC now.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX After completing a successful write it is advised to put the uGuru back in ready mode, so that it is ready for the next read / write cycle. This way if your program / driver is unloaded and later loaded again the detection algorithm described above will still work.h]hX After completing a successful write it is advised to put the uGuru back in ready mode, so that it is ready for the next read / write cycle. This way if your program / driver is unloaded and later loaded again the detection algorithm described above will still work.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]writingah ]h"]writingah$]h&]uh1hhjzhhhhhKubh)}(hhh](h)}(hGotchash]hGotchas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXAfter wider testing of the Linux kernel driver some variants of the uGuru have turned up which do not hold 0x08 at DATA within 250 reads after writing the bank address. With these versions this happens quite frequent, using larger timeouts doesn't help, they just go offline for a second or 2, doing some internal calibration or whatever. Your code should be prepared to handle this and in case of no response in this specific case just goto sleep for a while and then retry.h]hXAfter wider testing of the Linux kernel driver some variants of the uGuru have turned up which do not hold 0x08 at DATA within 250 reads after writing the bank address. With these versions this happens quite frequent, using larger timeouts doesn’t help, they just go offline for a second or 2, doing some internal calibration or whatever. Your code should be prepared to handle this and in case of no response in this specific case just goto sleep for a while and then retry.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]gotchasah ]h"]gotchasah$]h&]uh1hhjzhhhhhKubeh}(h]reading-writingah ]h"]reading / writingah$]h&]uh1hhhhhhhhK6ubh)}(hhh](h)}(h Address Maph]h Address Map}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhhhhhKubh)}(hhh](h)}(hBank 0x20 Alarms (R)h]hBank 0x20 Alarms (R)}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhhhhhKubh)}(h}This bank contains 0 sensors, iow the sensor address is ignored (but must be written) just use 0. Bank 0x20 contains 3 bytes:h]h}This bank contains 0 sensors, iow the sensor address is ignored (but must be written) just use 0. Bank 0x20 contains 3 bytes:}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjRhhubhdefinition_list)}(hhh](hdefinition_list_item)}(h{Byte 0: This byte holds the alarm flags for sensor 0-7 of Sensor Bank1, with bit 0 corresponding to sensor 0, 1 to 1, etc. h](hterm)}(hByte 0:h]hByte 0:}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjxubh definition)}(hhh]h)}(hrThis byte holds the alarm flags for sensor 0-7 of Sensor Bank1, with bit 0 corresponding to sensor 0, 1 to 1, etc.h]hrThis byte holds the alarm flags for sensor 0-7 of Sensor Bank1, with bit 0 corresponding to sensor 0, 1 to 1, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjsubjw)}(h|Byte 1: This byte holds the alarm flags for sensor 8-15 of Sensor Bank1, with bit 0 corresponding to sensor 8, 1 to 9, etc. h](j})}(hByte 1:h]hByte 1:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hsThis byte holds the alarm flags for sensor 8-15 of Sensor Bank1, with bit 0 corresponding to sensor 8, 1 to 9, etc.h]hsThis byte holds the alarm flags for sensor 8-15 of Sensor Bank1, with bit 0 corresponding to sensor 8, 1 to 9, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjshhubjw)}(h|Byte 2: This byte holds the alarm flags for sensor 0-5 of Sensor Bank2, with bit 0 corresponding to sensor 0, 1 to 1, etc. h](j})}(hByte 2:h]hByte 2:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hrThis byte holds the alarm flags for sensor 0-5 of Sensor Bank2, with bit 0 corresponding to sensor 0, 1 to 1, etc.h]hrThis byte holds the alarm flags for sensor 0-5 of Sensor Bank2, with bit 0 corresponding to sensor 0, 1 to 1, etc.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjshhubeh}(h]h ]h"]h$]h&]uh1jqhjRhhhhhNubeh}(h]bank-0x20-alarms-rah ]h"]bank 0x20 alarms (r)ah$]h&]uh1hhjAhhhhhKubh)}(hhh](h)}(h,Bank 0x21 Sensor Bank1 Values / Readings (R)h]h,Bank 0x21 Sensor Bank1 Values / Readings (R)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThis bank contains 16 sensors, for each sensor it contains 1 byte. So far the following sensors are known to be available on all motherboards:h]hThis bank contains 16 sensors, for each sensor it contains 1 byte. So far the following sensors are known to be available on all motherboards:}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh bullet_list)}(hhh](h list_item)}(hSensor 0 CPU temph]h)}(hj?h]hSensor 0 CPU temp}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj=ubah}(h]h ]h"]h$]h&]uh1j;hj8hhhhhNubj<)}(hSensor 1 SYS temph]h)}(hjVh]hSensor 1 SYS temp}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjTubah}(h]h ]h"]h$]h&]uh1j;hj8hhhhhNubj<)}(hSensor 3 CPU core volth]h)}(hjmh]hSensor 3 CPU core volt}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1j;hj8hhhhhNubj<)}(hSensor 4 DDR volth]h)}(hjh]hSensor 4 DDR volt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j;hj8hhhhhNubj<)}(hSensor 10 DDR Vtt volth]h)}(hjh]hSensor 10 DDR Vtt volt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j;hj8hhhhhNubj<)}(hSensor 15 PWM temp h]h)}(hSensor 15 PWM temph]hSensor 15 PWM temp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j;hj8hhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1j6hhhKhjhhubjr)}(hhh]jw)}(hXByte 0: This byte holds the reading from the sensor. Sensors in Bank1 can be both volt and temp sensors, this is motherboard specific. The uGuru however does seem to know (be programmed with) what kindoff sensor is attached see Sensor Bank1 Settings description. h](j})}(hByte 0:h]hByte 0:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hThis byte holds the reading from the sensor. Sensors in Bank1 can be both volt and temp sensors, this is motherboard specific. The uGuru however does seem to know (be programmed with) what kindoff sensor is attached see Sensor Bank1 Settings description.h]hThis byte holds the reading from the sensor. Sensors in Bank1 can be both volt and temp sensors, this is motherboard specific. The uGuru however does seem to know (be programmed with) what kindoff sensor is attached see Sensor Bank1 Settings description.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjubah}(h]h ]h"]h$]h&]uh1jqhjhhhhhNubh)}(hXuVolt sensors use a linear scale, a reading 0 corresponds with 0 volt and a reading of 255 with 3494 mV. The sensors for higher voltages however are connected through a division circuit. The currently known division circuits in use result in ranges of: 0-4361mV, 0-6248mV or 0-14510mV. 3.3 volt sources use the 0-4361mV range, 5 volt the 0-6248mV and 12 volt the 0-14510mV .h]hXuVolt sensors use a linear scale, a reading 0 corresponds with 0 volt and a reading of 255 with 3494 mV. The sensors for higher voltages however are connected through a division circuit. The currently known division circuits in use result in ranges of: 0-4361mV, 0-6248mV or 0-14510mV. 3.3 volt sources use the 0-4361mV range, 5 volt the 0-6248mV and 12 volt the 0-14510mV .}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hTemp sensors also use a linear scale, a reading of 0 corresponds with 0 degree Celsius and a reading of 255 with a reading of 255 degrees Celsius.h]hTemp sensors also use a linear scale, a reading of 0 corresponds with 0 degree Celsius and a reading of 255 with a reading of 255 degrees Celsius.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h](bank-0x21-sensor-bank1-values-readings-rah ]h"],bank 0x21 sensor bank1 values / readings (r)ah$]h&]uh1hhjAhhhhhKubh)}(hhh](h)}(hKBank 0x22 Sensor Bank1 Settings (R) and Bank 0x23 Sensor Bank1 Settings (W)h]hKBank 0x22 Sensor Bank1 Settings (R) and Bank 0x23 Sensor Bank1 Settings (W)}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hhhhhKubh)}(hThose banks contain 16 sensors, for each sensor it contains 3 bytes. Each set of 3 bytes contains the settings for the sensor with the same sensor address in Bank 0x21 .h]hThose banks contain 16 sensors, for each sensor it contains 3 bytes. Each set of 3 bytes contains the settings for the sensor with the same sensor address in Bank 0x21 .}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj,hhubjr)}(hhh](jw)}(hVByte 0: Alarm behaviour for the selected sensor. A 1 enables the described behaviour. h](j})}(hByte 0:h]hByte 0:}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjNubj)}(hhh]h)}(hMAlarm behaviour for the selected sensor. A 1 enables the described behaviour.h]hMAlarm behaviour for the selected sensor. A 1 enables the described behaviour.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj`ubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKubjw)}(hWBit 0: Give an alarm if measured temp is over the warning threshold (RW) [1]_ h](j})}(hBit 0:h]hBit 0:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj}ubj)}(hhh]h)}(hOGive an alarm if measured temp is over the warning threshold (RW) [1]_h](hKGive an alarm if measured temp is over the warning threshold (RW) }(hjhhhNhNubhfootnote_reference)}(h[1]_h]h1}(hjhhhNhNubah}(h]id1ah ]h"]h$]h&]refidid4docnamehwmon/abituguru-datasheetuh1jhjresolvedKubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hWBit 1: Give an alarm if measured volt is over the max threshold (RW) [2]_ h](j})}(hBit 1:h]hBit 1:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hOGive an alarm if measured volt is over the max threshold (RW) [2]_h](hKGive an alarm if measured volt is over the max threshold (RW) }(hjhhhNhNubj)}(h[2]_h]h2}(hjhhhNhNubah}(h]id2ah ]h"]h$]h&]jid5jjuh1jhjjKubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hWBit 2: Give an alarm if measured volt is under the min threshold (RW) [2]_ h](j})}(hBit 2:h]hBit 2:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hOGive an alarm if measured volt is under the min threshold (RW) [2]_h](hKGive an alarm if measured volt is under the min threshold (RW) }(hjhhhNhNubj)}(h[2]_h]h2}(hjhhhNhNubah}(h]id3ah ]h"]h$]h&]jjjjuh1jhjjKubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hRBit 3: Beep if alarm (RW) h](j})}(hBit 3:h]hBit 3:}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhj?ubj)}(hhh]h)}(hJBeep if alarm (RW)h]hJBeep if alarm (RW)}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjQubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hQBit 4: 1 if alarm cause measured temp is over the warning threshold (R) h](j})}(hBit 4:h]hBit 4:}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjnubj)}(hhh]h)}(hI1 if alarm cause measured temp is over the warning threshold (R)h]hI1 if alarm cause measured temp is over the warning threshold (R)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hQBit 5: 1 if alarm cause measured volt is over the max threshold (R) h](j})}(hBit 5:h]hBit 5:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hI1 if alarm cause measured volt is over the max threshold (R)h]hI1 if alarm cause measured volt is over the max threshold (R)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hQBit 6: 1 if alarm cause measured volt is under the min threshold (R) h](j})}(hBit 6:h]hBit 6:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]h)}(hI1 if alarm cause measured volt is under the min threshold (R)h]hI1 if alarm cause measured volt is under the min threshold (R)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubjw)}(hBit 7: - Volt sensor: Shutdown if alarm persist for more than 4 seconds (RW) - Temp sensor: Shutdown if temp is over the shutdown threshold (RW) h](j})}(hBit 7:h]hBit 7:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhKhjubj)}(hhh]j7)}(hhh](j<)}(hHVolt sensor: Shutdown if alarm persist for more than 4 seconds (RW)h]h)}(hjh]hHVolt sensor: Shutdown if alarm persist for more than 4 seconds (RW)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(hITemp sensor: Shutdown if temp is over the shutdown threshold (RW) h]h)}(hHTemp sensor: Shutdown if temp is over the shutdown threshold (RW)h]hHTemp sensor: Shutdown if temp is over the shutdown threshold (RW)}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj*ubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jjuh1j6hhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjKhhubeh}(h]h ]h"]h$]h&]uh1jqhj,hhhhhNubhfootnote)}(hIThis bit is only honored/used by the uGuru if a temp sensor is connected h](hlabel)}(h1h]h1}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j`hj\ubh)}(hHThis bit is only honored/used by the uGuru if a temp sensor is connectedh]hHThis bit is only honored/used by the uGuru if a temp sensor is connected}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj\ubeh}(h]jah ]h"]1ah$]h&]jajjuh1jZhhhKhj,hhjKubj[)}(hThis bit is only honored/used by the uGuru if a volt sensor is connected Note with some trickery this can be used to find out what kinda sensor is detected see the Linux kernel driver for an example with many comments on how todo this. h](ja)}(h2h]h2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j`hjubh)}(hThis bit is only honored/used by the uGuru if a volt sensor is connected Note with some trickery this can be used to find out what kinda sensor is detected see the Linux kernel driver for an example with many comments on how todo this.h]hThis bit is only honored/used by the uGuru if a volt sensor is connected Note with some trickery this can be used to find out what kinda sensor is detected see the Linux kernel driver for an example with many comments on how todo this.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]jah ]h"]2ah$]h&](jj(ejjuh1jZhhhKhj,hhjKubjr)}(hhh](jw)}(hvByte 1: - Temp sensor: warning threshold (scale as bank 0x21) - Volt sensor: min threshold (scale as bank 0x21) h](j})}(hByte 1:h]hByte 1:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhjubj)}(hhh]j7)}(hhh](j<)}(h4Temp sensor: warning threshold (scale as bank 0x21)h]h)}(hjh]h4Temp sensor: warning threshold (scale as bank 0x21)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h5Volt sensor: min threshold (scale as bank 0x21) h]h)}(h4Volt sensor: min threshold (scale as bank 0x21)h]h4Volt sensor: min threshold (scale as bank 0x21)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jjuh1j6hhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjubjw)}(hwByte 2: - Temp sensor: shutdown threshold (scale as bank 0x21) - Volt sensor: max threshold (scale as bank 0x21) h](j})}(hByte 2:h]hByte 2:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhjubj)}(hhh]j7)}(hhh](j<)}(h4Temp sensor: shutdown threshold (scale as bank 0x21)h]h)}(hj"h]h4Temp sensor: shutdown threshold (scale as bank 0x21)}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h6Volt sensor: max threshold (scale as bank 0x21) h]h)}(h4Volt sensor: max threshold (scale as bank 0x21)h]h4Volt sensor: max threshold (scale as bank 0x21)}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj7ubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jjuh1j6hhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjhhubeh}(h]h ]h"]h$]h&]uh1jqhj,hhhNhNubeh}(h]Gbank-0x22-sensor-bank1-settings-r-and-bank-0x23-sensor-bank1-settings-wah ]h"]Kbank 0x22 sensor bank1 settings (r) and bank 0x23 sensor bank1 settings (w)ah$]h&]uh1hhjAhhhhhKubh)}(hhh](h)}(hKBank 0x24 PWM outputs for FAN's (R) and Bank 0x25 PWM outputs for FAN's (W)h]hOBank 0x24 PWM outputs for FAN’s (R) and Bank 0x25 PWM outputs for FAN’s (W)}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohhhhhM ubjr)}(hhh](jw)}(hThose banks contain 3 "sensors", for each sensor it contains 5 bytes. - Sensor 0 usually controls the CPU fan - Sensor 1 usually controls the NB (or chipset for single chip) fan - Sensor 2 usually controls the System fan h](j})}(hEThose banks contain 3 "sensors", for each sensor it contains 5 bytes.h]hIThose banks contain 3 “sensors”, for each sensor it contains 5 bytes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhjubj)}(hhh]j7)}(hhh](j<)}(h%Sensor 0 usually controls the CPU fanh]h)}(hjh]h%Sensor 0 usually controls the CPU fan}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(hASensor 1 usually controls the NB (or chipset for single chip) fanh]h)}(hjh]hASensor 1 usually controls the NB (or chipset for single chip) fan}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h)Sensor 2 usually controls the System fan h]h)}(h(Sensor 2 usually controls the System fanh]h(Sensor 2 usually controls the System fan}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jjuh1j6hhhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjubjw)}(hByte 0: Flag 0x80 to enable control, Fan runs at 100% when disabled. low nibble (temp)sensor address at bank 0x21 used for control. h](j})}(hByte 0:h]hByte 0:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhjubj)}(hhh]h)}(h{Flag 0x80 to enable control, Fan runs at 100% when disabled. low nibble (temp)sensor address at bank 0x21 used for control.h]h{Flag 0x80 to enable control, Fan runs at 100% when disabled. low nibble (temp)sensor address at bank 0x21 used for control.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjhhubjw)}(h}Byte 1: 0-255 = 0-12v (linear), specify voltage at which fan will rotate when under low threshold temp (specified in byte 3) h](j})}(hByte 1:h]hByte 1:}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhj" ubj)}(hhh]h)}(ht0-255 = 0-12v (linear), specify voltage at which fan will rotate when under low threshold temp (specified in byte 3)h]ht0-255 = 0-12v (linear), specify voltage at which fan will rotate when under low threshold temp (specified in byte 3)}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj4 ubah}(h]h ]h"]h$]h&]uh1jhj" ubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjhhubjw)}(h~Byte 2: 0-255 = 0-12v (linear), specify voltage at which fan will rotate when above high threshold temp (specified in byte 4) h](j})}(hByte 2:h]hByte 2:}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhjQ ubj)}(hhh]h)}(hu0-255 = 0-12v (linear), specify voltage at which fan will rotate when above high threshold temp (specified in byte 4)h]hu0-255 = 0-12v (linear), specify voltage at which fan will rotate when above high threshold temp (specified in byte 4)}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjc ubah}(h]h ]h"]h$]h&]uh1jhjQ ubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjhhubjw)}(h1Byte 3: Low threshold temp (scale as bank 0x21) h](j})}(hByte 3:h]hByte 3:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMhj ubj)}(hhh]h)}(h(Low threshold temp (scale as bank 0x21)h]h(Low threshold temp (scale as bank 0x21)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhhhMhjhhubjw)}(h2byte 4: High threshold temp (scale as bank 0x21) h](j})}(hbyte 4:h]hbyte 4:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM!hj ubj)}(hhh]h)}(h(High threshold temp (scale as bank 0x21)h]h(High threshold temp (scale as bank 0x21)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhhhM!hjhhubeh}(h]h ]h"]h$]h&]uh1jqhjohhhNhNubeh}(h]Gbank-0x24-pwm-outputs-for-fan-s-r-and-bank-0x25-pwm-outputs-for-fan-s-wah ]h"]Kbank 0x24 pwm outputs for fan's (r) and bank 0x25 pwm outputs for fan's (w)ah$]h&]uh1hhjAhhhhhM ubh)}(hhh](h)}(h-Bank 0x26 Sensors Bank2 Values / Readings (R)h]h-Bank 0x26 Sensors Bank2 Values / Readings (R)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhM$ubh)}(hIThis bank contains 6 sensors (AFAIK), for each sensor it contains 1 byte.h]hIThis bank contains 6 sensors (AFAIK), for each sensor it contains 1 byte.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj hhubjr)}(hhh](jw)}(hSo far the following sensors are known to be available on all motherboards: - Sensor 0: CPU fan speed - Sensor 1: NB (or chipset for single chip) fan speed - Sensor 2: SYS fan speed h](j})}(hKSo far the following sensors are known to be available on all motherboards:h]hKSo far the following sensors are known to be available on all motherboards:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM+hj ubj)}(hhh]j7)}(hhh](j<)}(hSensor 0: CPU fan speedh]h)}(hj( h]hSensor 0: CPU fan speed}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hj& ubah}(h]h ]h"]h$]h&]uh1j;hj# ubj<)}(h3Sensor 1: NB (or chipset for single chip) fan speedh]h)}(hj? h]h3Sensor 1: NB (or chipset for single chip) fan speed}(hjA hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hj= ubah}(h]h ]h"]h$]h&]uh1j;hj# ubj<)}(hSensor 2: SYS fan speed h]h)}(hSensor 2: SYS fan speedh]hSensor 2: SYS fan speed}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM+hjT ubah}(h]h ]h"]h$]h&]uh1j;hj# ubeh}(h]h ]h"]h$]h&]jjuh1j6hhhM)hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhhhM+hj ubjw)}(hOByte 0: This byte holds the reading from the sensor. 0-255 = 0-15300 (linear) h](j})}(hByte 0:h]hByte 0:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM/hj~ ubj)}(hhh]h)}(hEThis byte holds the reading from the sensor. 0-255 = 0-15300 (linear)h]hEThis byte holds the reading from the sensor. 0-255 = 0-15300 (linear)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj ubah}(h]h ]h"]h$]h&]uh1jhj~ ubeh}(h]h ]h"]h$]h&]uh1jvhhhM/hj hhubeh}(h]h ]h"]h$]h&]uh1jqhj hhhNhNubeh}(h])bank-0x26-sensors-bank2-values-readings-rah ]h"]-bank 0x26 sensors bank2 values / readings (r)ah$]h&]uh1hhjAhhhhhM$ubh)}(hhh](h)}(hMBank 0x27 Sensors Bank2 Settings (R) and Bank 0x28 Sensors Bank2 Settings (W)h]hMBank 0x27 Sensors Bank2 Settings (R) and Bank 0x28 Sensors Bank2 Settings (W)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhM2ubh)}(hKThose banks contain 6 sensors (AFAIK), for each sensor it contains 2 bytes.h]hKThose banks contain 6 sensors (AFAIK), for each sensor it contains 2 bytes.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj hhubjr)}(hhh](jw)}(hVByte 0: Alarm behaviour for the selected sensor. A 1 enables the described behaviour. h](j})}(hByte 0:h]hByte 0:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM7hj ubj)}(hhh]h)}(hMAlarm behaviour for the selected sensor. A 1 enables the described behaviour.h]hMAlarm behaviour for the selected sensor. A 1 enables the described behaviour.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhhhM7hj ubjw)}(hJBit 0: Give an alarm if measured rpm is under the min threshold (RW) h](j})}(hBit 0:h]hBit 0:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM:hj ubj)}(hhh]h)}(hBGive an alarm if measured rpm is under the min threshold (RW)h]hBGive an alarm if measured rpm is under the min threshold (RW)}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhhhM:hj hhubjw)}(hJBit 3: Beep if alarm (RW) h](j})}(hBit 3:h]hBit 3:}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM=hj; ubj)}(hhh]h)}(hBBeep if alarm (RW)h]hBBeep if alarm (RW)}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM=hjM ubah}(h]h ]h"]h$]h&]uh1jhj; ubeh}(h]h ]h"]h$]h&]uh1jvhhhM=hj hhubjw)}(hJBit 7: Shutdown if alarm persist for more than 4 seconds (RW) h](j})}(hBit 7:h]hBit 7:}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhM@hjj ubj)}(hhh]h)}(hBShutdown if alarm persist for more than 4 seconds (RW)h]hBShutdown if alarm persist for more than 4 seconds (RW)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hj| ubah}(h]h ]h"]h$]h&]uh1jhjj ubeh}(h]h ]h"]h$]h&]uh1jvhhhM@hj hhubjw)}(h,Byte 1: min threshold (scale as bank 0x26) h](j})}(hByte 1:h]hByte 1:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j|hhhMDhj ubj)}(hhh]h)}(h"min threshold (scale as bank 0x26)h]h"min threshold (scale as bank 0x26)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jvhhhMDhj hhubeh}(h]h ]h"]h$]h&]uh1jqhj hhhhhNubeh}(h]Ibank-0x27-sensors-bank2-settings-r-and-bank-0x28-sensors-bank2-settings-wah ]h"]Mbank 0x27 sensors bank2 settings (r) and bank 0x28 sensors bank2 settings (w)ah$]h&]uh1hhjAhhhhhM2ubeh}(h] address-mapah ]h"] address mapah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hWarning for the adventuroush]hWarning for the adventurous}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMGubh)}(hXcA word of caution to those who want to experiment and see if they can figure the voltage / clock programming out, I tried reading and only reading banks 0-0x30 with the reading code used for the sensor banks (0x20-0x28) and this resulted in a _permanent_ reprogramming of the voltages, luckily I had the sensors part configured so that it would shutdown my system on any out of spec voltages which probably safed my computer (after a reboot I managed to immediately enter the bios and reload the defaults). This probably means that the read/write cycle for the non sensor part is different from the sensor part.h]hXcA word of caution to those who want to experiment and see if they can figure the voltage / clock programming out, I tried reading and only reading banks 0-0x30 with the reading code used for the sensor banks (0x20-0x28) and this resulted in a _permanent_ reprogramming of the voltages, luckily I had the sensors part configured so that it would shutdown my system on any out of spec voltages which probably safed my computer (after a reboot I managed to immediately enter the bios and reload the defaults). This probably means that the read/write cycle for the non sensor part is different from the sensor part.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMIhj hhubeh}(h]warning-for-the-adventurousah ]h"]warning for the adventurousah$]h&]uh1hhhhhhhhMGubeh}(h]uguru-datasheetah ]h"]uguru datasheetah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj0 error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}(1]ja2](jjeurefids}nameids}(j j jwjtj>j;jjj8j5j{jxjjjj j6j3j j jjj)j&jljijjjjj j j j j j j j u nametypes}(j jwj>jj8j{jjj6j jj)jljjj j j j uh}(j hjtj)j;jzjjj5jjxj;jj~j jj3jj jAjjRj&jjij,jjjjj(jjj\jjj joj j j j j j u footnote_refs}(jp ]jajr ](jjeu citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes](j\je citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j> KsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.