10
10
I2C_READ_LEN = 2048
11
11
SCALEALPHA = 0.000001
12
12
MLX90640_DEVICEID1 = 0x2407
13
- OPENAIR_TA_SHIFT = 8
13
+ OPENAIR_TA_SHIFT = 12
14
14
15
15
class RefreshRate :
16
16
""" Enum-like class for MLX90640's refresh rate """
@@ -722,8 +722,8 @@ class grove_mxl90641(MLX9064X_I2C_Driver):
722
722
alphaPTAT = 0
723
723
gainEE = 0
724
724
tgc = 0
725
- KsTa = 0
726
725
resolutionEE = 0
726
+ KsTa = 0
727
727
ksTo = [0 ] * 8
728
728
ct = [0 ] * 8
729
729
alpha = [0 ] * 192
@@ -735,12 +735,10 @@ class grove_mxl90641(MLX9064X_I2C_Driver):
735
735
kvScale = 0
736
736
cpAlpha = 0
737
737
cpOffset = 0
738
- ilChessC = [0 ] * 3
739
738
brokenPixels = [0xFFFF ] * 5
740
739
cpKta = 0
741
740
cpKv = 0
742
741
emissivityEE = 0
743
-
744
742
def __init__ (self ,address = 0x33 ):
745
743
super (grove_mxl90641 , self ).__init__ (address )
746
744
self .refresh_rate = RefreshRate .REFRESH_0_5_HZ
@@ -1021,13 +1019,29 @@ def _ExtractParameters(self):
1021
1019
self ._ExtractKvPixelParameters ()
1022
1020
self ._ExtractCPParameters ()
1023
1021
self ._ExtractDeviatingPixels ()
1024
-
1022
+ # debug output
1023
+ print ('-' * 40 )
1024
+ print ("kVdd = %d, vdd25 = %d" % (self .kVdd , self .vdd25 ))
1025
+ print ("KvPTAT = %f, KtPTAT = %f, vPTAT25 = %d, alphaPTAT = %f" %
1026
+ (self .KvPTAT , self .KtPTAT , self .vPTAT25 , self .alphaPTAT ))
1027
+ print ("Gain = %d, Tgc = %f, Resolution = %d" % (self .gainEE , self .tgc , self .resolutionEE ))
1028
+ print ("KsTa = %f, ksTo = %s, ct = %s" % (self .KsTa , self .ksTo , self .ct ))
1029
+ print ("cpAlpha:" , self .cpAlpha , "cpOffset:" , self .cpOffset )
1030
+ print ("alpha: " , self .alpha )
1031
+ print ("alphascale: " , self .alphaScale )
1032
+ print ("offset: " , self .offset )
1033
+ print ("kta:" , self .kta )
1034
+ print ("ktaScale:" , self .ktaScale )
1035
+ print ("kv:" , self .kv )
1036
+ print ("kvScale:" , self .kvScale )
1037
+ print (eeData )
1038
+ print ('-' * 40 )
1025
1039
def _ExtractVDDParameters (self ):
1026
1040
# extract VDD
1027
1041
self .kVdd = eeData [39 ]
1028
1042
if self .kVdd > 1023 :
1029
1043
self .kVdd = self .kVdd - 2048
1030
- self .KVdd = 32 * self .kVdd
1044
+ self .kVdd = 32 * self .kVdd
1031
1045
1032
1046
self .vdd25 = eeData [38 ]
1033
1047
if self .vdd25 > 1023 :
@@ -1215,13 +1229,15 @@ def _ExtractKvPixelParameters(self):
1215
1229
kvScale1 = eeData [24 ] >> 5
1216
1230
kvScale2 = eeData [24 ] & 0x001F
1217
1231
for i in range (192 ):
1218
- tempKv = (eeData [448 + i ] >> 5 )
1232
+ tempKv = (eeData [448 + i ] & 0x001F )
1219
1233
if tempKv > 15 :
1220
1234
tempKv = tempKv - 32
1221
1235
kvTemp [i ] = tempKv * math .pow (2 ,kvScale2 )
1222
1236
kvTemp [i ] += kvAvg
1223
1237
kvTemp [i ] /= math .pow (2 ,kvScale1 )
1224
- temp = max (map (abs ,kvTemp ))
1238
+ temp = abs (kvTemp [0 ])
1239
+ for kv in kvTemp :
1240
+ temp = max (temp , abs (kv ))
1225
1241
kvScale1 = 0
1226
1242
while temp < 64 :
1227
1243
temp = temp * 2
@@ -1247,4 +1263,4 @@ def _ExtractDeviatingPixels(self):
1247
1263
pixCnt += 1
1248
1264
if brokenPixCnt > 2 :
1249
1265
raise RuntimeError ("More than 3 broken pixels" )
1250
- print ("Found %d broken pixels" % (brokenPixCnt ))
1266
+ print ("Found %d broken pixels" % (brokenPixCnt ))
0 commit comments