Skip to content

Commit af9afdc

Browse files
committed
after some debugging
1 parent 5f77b09 commit af9afdc

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

circuitpython_cirque_pinnacle.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)