aboutsummaryrefslogtreecommitdiff
path: root/drivers/sensors/adns5050.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/sensors/adns5050.c')
-rw-r--r--drivers/sensors/adns5050.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/sensors/adns5050.c b/drivers/sensors/adns5050.c
index e7273977d..254ef2ee8 100644
--- a/drivers/sensors/adns5050.c
+++ b/drivers/sensors/adns5050.c
@@ -17,7 +17,6 @@
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */ 18 */
19 19
20
21#include "adns5050.h" 20#include "adns5050.h"
22#include "wait.h" 21#include "wait.h"
23#include "debug.h" 22#include "debug.h"
@@ -61,13 +60,9 @@ void adns_sync(void) {
61 writePinHigh(ADNS_CS_PIN); 60 writePinHigh(ADNS_CS_PIN);
62} 61}
63 62
64void adns_cs_select(void) { 63void adns_cs_select(void) { writePinLow(ADNS_CS_PIN); }
65 writePinLow(ADNS_CS_PIN);
66}
67 64
68void adns_cs_deselect(void) { 65void adns_cs_deselect(void) { writePinHigh(ADNS_CS_PIN); }
69 writePinHigh(ADNS_CS_PIN);
70}
71 66
72uint8_t adns_serial_read(void) { 67uint8_t adns_serial_read(void) {
73 setPinInput(ADNS_SDIO_PIN); 68 setPinInput(ADNS_SDIO_PIN);
@@ -121,7 +116,7 @@ uint8_t adns_read_reg(uint8_t reg_addr) {
121 // We don't need a minimum tSRAD here. That's because a 4ms wait time is 116 // We don't need a minimum tSRAD here. That's because a 4ms wait time is
122 // already included in adns_serial_write(), so we're good. 117 // already included in adns_serial_write(), so we're good.
123 // See page 10 and 15 of the ADNS spec sheet. 118 // See page 10 and 15 of the ADNS spec sheet.
124 //wait_us(4); 119 // wait_us(4);
125 120
126 uint8_t byte = adns_serial_read(); 121 uint8_t byte = adns_serial_read();
127 122
@@ -138,7 +133,7 @@ uint8_t adns_read_reg(uint8_t reg_addr) {
138 133
139void adns_write_reg(uint8_t reg_addr, uint8_t data) { 134void adns_write_reg(uint8_t reg_addr, uint8_t data) {
140 adns_cs_select(); 135 adns_cs_select();
141 adns_serial_write( 0b10000000 | reg_addr ); 136 adns_serial_write(0b10000000 | reg_addr);
142 adns_serial_write(data); 137 adns_serial_write(data);
143 adns_cs_deselect(); 138 adns_cs_deselect();
144} 139}
@@ -155,7 +150,7 @@ report_adns_t adns_read_burst(void) {
155 // We don't need a minimum tSRAD here. That's because a 4ms wait time is 150 // We don't need a minimum tSRAD here. That's because a 4ms wait time is
156 // already included in adns_serial_write(), so we're good. 151 // already included in adns_serial_write(), so we're good.
157 // See page 10 and 15 of the ADNS spec sheet. 152 // See page 10 and 15 of the ADNS spec sheet.
158 //wait_us(4); 153 // wait_us(4);
159 154
160 uint8_t x = adns_serial_read(); 155 uint8_t x = adns_serial_read();
161 uint8_t y = adns_serial_read(); 156 uint8_t y = adns_serial_read();
@@ -180,13 +175,11 @@ int8_t convert_twoscomp(uint8_t data) {
180} 175}
181 176
182// Don't forget to use the definitions for CPI in the header file. 177// Don't forget to use the definitions for CPI in the header file.
183void adns_set_cpi(uint8_t cpi) { 178void adns_set_cpi(uint8_t cpi) { adns_write_reg(REG_MOUSE_CONTROL2, cpi); }
184 adns_write_reg(REG_MOUSE_CONTROL2, cpi);
185}
186 179
187bool adns_check_signature(void) { 180bool adns_check_signature(void) {
188 uint8_t pid = adns_read_reg(REG_PRODUCT_ID); 181 uint8_t pid = adns_read_reg(REG_PRODUCT_ID);
189 uint8_t rid = adns_read_reg(REG_REVISION_ID); 182 uint8_t rid = adns_read_reg(REG_REVISION_ID);
190 uint8_t pid2 = adns_read_reg(REG_PRODUCT_ID2); 183 uint8_t pid2 = adns_read_reg(REG_PRODUCT_ID2);
191 184
192 return (pid == 0x12 && rid == 0x01 && pid2 == 0x26); 185 return (pid == 0x12 && rid == 0x01 && pid2 == 0x26);