@@ -42,12 +42,11 @@ def __init__(self, dr_pin=None):
4242 raise OSError ("Cirque Pinnacle ASIC not responding" )
4343 # init internal attributes w/ factory defaults after power-on-reset
4444 self ._mode = 0 # 0 means relative mode which is factory default after power-on-reset
45- self .clear_flags ()
4645 self .detect_finger_stylus ()
47- self ._rap_write (7 , 14 ) # enables all compensations
4846 self ._rap_write (0x0A , 30 ) # z-idle packet count
4947 self ._rap_write_bytes (3 , [0 , 1 , 2 ]) # configure relative (& absolute mode)
5048 self .set_adc_gain (0 )
49+ self .calibrate (True ) # enables all compensations
5150
5251 @property
5352 def feed_enable (self ):
@@ -73,15 +72,15 @@ def data_mode(self, mode):
7372 raise ValueError ("unrecognised input value for data mode. Use 0 for Relative mode, "
7473 "1 for AnyMeas mode, or 2 for Absolute mode." )
7574 self ._mode = mode
75+ sys_config = self ._rap_read (3 ) & 0xE7 # clear flags specific to AnyMeas mode
7676 if mode in (RELATIVE , ABSOLUTE ): # for relative/absolute mode
77- sys_config = self ._rap_read (3 ) & 0xE7 # clear flags specific to AnyMeas mode
7877 if self .data_mode == ANYMEAS : # if leaving AnyMeas mode
7978 self ._rap_write_bytes (3 , [
8079 sys_config ,
8180 1 | mode , # set new mode's flag & enables feed
8281 2 ]) # disables taps in Relative mode
8382 self .sample_rate = 100
84- self ._rap_write (7 , 14 ) # enables all compensations
83+ self ._rap_write (7 , 0x1E ) # enables all compensations
8584 self ._rap_write (0x0A , 30 ) # 30 z-idle packets
8685 else : # ok to write appropriate mode
8786 self ._rap_write (4 , 1 | mode )
@@ -132,8 +131,8 @@ def report(self, only_new=True):
132131 ((temp [4 ] & 0x0F ) << 8 ) | temp [2 ], # x
133132 ((temp [4 ] & 0xF0 ) << 4 ) | temp [3 ], # y
134133 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 ]))
137136 elif self .data_mode == RELATIVE : # if in relative mode
138137 temp = self ._rap_read_bytes (0x12 , 4 )
139138 return_vals = bytearray ([temp [0 ] & 7 , temp [1 ], temp [2 ]])
@@ -210,7 +209,7 @@ def calibration_matrix(self):
210209 """This attribute returns a `list` of the 46 signed 16-bit (short) values stored in the
211210 Pinnacle ASIC's memory that is used for taking measurements."""
212211 # 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 )))
214213
215214 @calibration_matrix .setter
216215 def calibration_matrix (self , matrix ):
0 commit comments