User's Manual

Datalogic Scanning, Inc
959 Terry Street
Eugene, Oregon 97402
Page 107 10/23/2009
Revision X2
range 0 to 15.
Key Name Key
Number
Type Default
Setting
PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA 0x03da temperature_calibration[] { -40, -
1 }, { -
30, 0 },
{ 50,
0 },
{ 60,
1 },
{ 100,
2 }
The value consists of a table of pairs of 16-bit signed values, as many pairs as necessary. Each pair is in a
similar format to PSKEY_TEMPERATURE_CALIBRATION
: the first value is a temperature in degrees
Celsius, while in this case the second is a signed correction to be made to the internal PA setting at that
temperature. The value will be interpolated linearly between those settings, but will not be extrapolated
beyond the end of the temperature range. The temperatures should increase monotonically, but the
corrections at each temperature need not.
Key Name Key
Number
Type Default Setting
PSKEY_TEMPERATURE_CALIBRATION 0x03db temperature_calibration 0x0017, 0x6980
This value must be set to enable temperature compensation which is available from some BC2-ROM
versions and all later parts. It is used to calibrate the internal thermometer and can be set separately for each
individual chip. It consists of two words.
The first word is the calibration temperature in degrees Celsius stored as an int16. The second word is a
uint16 comprising of two 8 bit fields.
Pre BC5 they are coded as:
- Lower 8 bits: the value read from ADC channel 1 (at cal temp)
- Upper 8 bits: the value read from ADC channel 36 (at cal temp)
Post BC5 they are coded as:
- Lower 8 bits: ADC channel 1 coded as 10 bits - 700 (at cal temp)
- Upper 8 bits: ADC channel 36 coded as 10 bits - 300 (at cal temp)
All three readings must be made together. Pre BC5 ADC values are simply the values returned from the
standard BCCMD ADC interface.
Post BC5 the (8 bit) BCCMD ADC readings need to be multiplied by 4 and then 700 or 300 subtracted
from the result to obtain the 8 bit values for the pskeys (as shown above).
To turn temperature compensation off, both words should be set to zero. (Note that this must be *two* zero
16-bit words, as zero is an acceptable value for the temperature in degrees Celsius.)
Note that in version 17 of the firmware and before the second reading was made from channel 10. This will
not work for chips starting with BlueCore3. However, from version 18 onwards channel 36 maps to the
correct channel for the temperature reading regardless of the underlying hardware.