@@ -42,12 +42,11 @@ def __init__(self, dr_pin=None):
42
42
raise OSError ("Cirque Pinnacle ASIC not responding" )
43
43
# init internal attributes w/ factory defaults after power-on-reset
44
44
self ._mode = 0 # 0 means relative mode which is factory default after power-on-reset
45
- self .clear_flags ()
46
45
self .detect_finger_stylus ()
47
- self ._rap_write (7 , 14 ) # enables all compensations
48
46
self ._rap_write (0x0A , 30 ) # z-idle packet count
49
47
self ._rap_write_bytes (3 , [0 , 1 , 2 ]) # configure relative (& absolute mode)
50
48
self .set_adc_gain (0 )
49
+ self .calibrate (True ) # enables all compensations
51
50
52
51
@property
53
52
def feed_enable (self ):
@@ -73,15 +72,15 @@ def data_mode(self, mode):
73
72
raise ValueError ("unrecognised input value for data mode. Use 0 for Relative mode, "
74
73
"1 for AnyMeas mode, or 2 for Absolute mode." )
75
74
self ._mode = mode
75
+ sys_config = self ._rap_read (3 ) & 0xE7 # clear flags specific to AnyMeas mode
76
76
if mode in (RELATIVE , ABSOLUTE ): # for relative/absolute mode
77
- sys_config = self ._rap_read (3 ) & 0xE7 # clear flags specific to AnyMeas mode
78
77
if self .data_mode == ANYMEAS : # if leaving AnyMeas mode
79
78
self ._rap_write_bytes (3 , [
80
79
sys_config ,
81
80
1 | mode , # set new mode's flag & enables feed
82
81
2 ]) # disables taps in Relative mode
83
82
self .sample_rate = 100
84
- self ._rap_write (7 , 14 ) # enables all compensations
83
+ self ._rap_write (7 , 0x1E ) # enables all compensations
85
84
self ._rap_write (0x0A , 30 ) # 30 z-idle packets
86
85
else : # ok to write appropriate mode
87
86
self ._rap_write (4 , 1 | mode )
@@ -132,8 +131,8 @@ def report(self, only_new=True):
132
131
((temp [4 ] & 0x0F ) << 8 ) | temp [2 ], # x
133
132
((temp [4 ] & 0xF0 ) << 4 ) | temp [3 ], # y
134
133
temp [5 ] & 0x3F ] # z
135
- return_vals [1 ] = min (128 , max (1920 , return_vals [1 ]))
136
- return_vals [2 ] = min (64 , max (1472 , return_vals [2 ]))
134
+ return_vals [1 ] = max (128 , min (1920 , return_vals [1 ]))
135
+ return_vals [2 ] = max (64 , min (1472 , return_vals [2 ]))
137
136
elif self .data_mode == RELATIVE : # if in relative mode
138
137
temp = self ._rap_read_bytes (0x12 , 4 )
139
138
return_vals = bytearray ([temp [0 ] & 7 , temp [1 ], temp [2 ]])
@@ -210,7 +209,7 @@ def calibration_matrix(self):
210
209
"""This attribute returns a `list` of the 46 signed 16-bit (short) values stored in the
211
210
Pinnacle ASIC's memory that is used for taking measurements."""
212
211
# combine every 2 bytes from resulting buffer to form a list of signed 16-bits integers
213
- return list (unpack ('46h' , self ._era_read_bytes (0x01DF , 46 * 2 )))
212
+ return list (unpack ('46h' , self ._era_read_bytes (0x01DF , 92 )))
214
213
215
214
@calibration_matrix .setter
216
215
def calibration_matrix (self , matrix ):
0 commit comments