| 
									
										
										
										
											2013-01-05 01:41:19 -08:00
										 |  |  | Kernel driver lm73 | 
					
						
							|  |  |  | ================== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Supported chips: | 
					
						
							|  |  |  |   * Texas Instruments LM73 | 
					
						
							|  |  |  |     Prefix: 'lm73' | 
					
						
							|  |  |  |     Addresses scanned: I2C 0x48, 0x49, 0x4a, 0x4c, 0x4d, and 0x4e | 
					
						
							|  |  |  |     Datasheet: Publicly available at the Texas Instruments website | 
					
						
							|  |  |  |                http://www.ti.com/product/lm73 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Author: Guillaume Ligneul <guillaume.ligneul@gmail.com> | 
					
						
							|  |  |  | Documentation: Chris Verges <kg4ysn@gmail.com> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Description | 
					
						
							|  |  |  | ----------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The LM73 is a digital temperature sensor.  All temperature values are | 
					
						
							|  |  |  | given in degrees Celsius. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Measurement Resolution Support | 
					
						
							|  |  |  | ------------------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The LM73 supports four resolutions, defined in terms of degrees C per | 
					
						
							|  |  |  | LSB: 0.25, 0.125, 0.0625, and 0.3125.  Changing the resolution mode | 
					
						
							|  |  |  | affects the conversion time of the LM73's analog-to-digital converter. | 
					
						
							|  |  |  | From userspace, the desired resolution can be specified as a function of | 
					
						
							|  |  |  | conversion time via the 'update_interval' sysfs attribute for the | 
					
						
							|  |  |  | device.  This attribute will normalize ranges of input values to the | 
					
						
							|  |  |  | maximum times defined for the resolution in the datasheet. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Resolution    Conv. Time    Input Range | 
					
						
							|  |  |  |     (C/LSB)       (msec)        (msec) | 
					
						
							|  |  |  |     -------------------------------------- | 
					
						
							|  |  |  |     0.25          14             0..14 | 
					
						
							|  |  |  |     0.125         28            15..28 | 
					
						
							|  |  |  |     0.0625        56            29..56 | 
					
						
							|  |  |  |     0.03125       112           57..infinity | 
					
						
							|  |  |  |     -------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following examples show how the 'update_interval' attribute can be | 
					
						
							|  |  |  | used to change the conversion time: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $ echo 0 > update_interval | 
					
						
							|  |  |  |     $ cat update_interval | 
					
						
							|  |  |  |     14 | 
					
						
							|  |  |  |     $ cat temp1_input | 
					
						
							|  |  |  |     24250 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $ echo 22 > update_interval | 
					
						
							|  |  |  |     $ cat update_interval | 
					
						
							|  |  |  |     28 | 
					
						
							|  |  |  |     $ cat temp1_input | 
					
						
							|  |  |  |     24125 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $ echo 56 > update_interval | 
					
						
							|  |  |  |     $ cat update_interval | 
					
						
							|  |  |  |     56 | 
					
						
							|  |  |  |     $ cat temp1_input | 
					
						
							|  |  |  |     24062 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $ echo 85 > update_interval | 
					
						
							|  |  |  |     $ cat update_interval | 
					
						
							|  |  |  |     112 | 
					
						
							|  |  |  |     $ cat temp1_input | 
					
						
							|  |  |  |     24031 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | As shown here, the lm73 driver automatically adjusts any user input for | 
					
						
							|  |  |  | 'update_interval' via a step function.  Reading back the | 
					
						
							|  |  |  | 'update_interval' value after a write operation will confirm the | 
					
						
							|  |  |  | conversion time actively in use. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Mathematically, the resolution can be derived from the conversion time | 
					
						
							|  |  |  | via the following function: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    g(x) = 0.250 * [log(x/14) / log(2)] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | where 'x' is the output from 'update_interval' and 'g(x)' is the | 
					
						
							|  |  |  | resolution in degrees C per LSB. | 
					
						
							| 
									
										
										
										
											2013-01-05 01:41:20 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Alarm Support | 
					
						
							|  |  |  | ------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The LM73 features a simple over-temperature alarm mechanism.  This | 
					
						
							|  |  |  | feature is exposed via the sysfs attributes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The attributes 'temp1_max_alarm' and 'temp1_min_alarm' are flags | 
					
						
							|  |  |  | provided by the LM73 that indicate whether the measured temperature has | 
					
						
							|  |  |  | passed the 'temp1_max' and 'temp1_min' thresholds, respectively.  These | 
					
						
							|  |  |  | values _must_ be read to clear the registers on the LM73. |