A library to interface to the PAW3102DB optical mouse sensor. It cannot write to the sensor as of yet.

PAW3102DB.cpp

Committer:
Pinski1
Date:
2011-06-13
Revision:
0:dda73f38c264

File content as of revision 0:dda73f38c264:

#include "PAW3102DB.h"
#include "mbed.h"

PAW3102DB::PAW3102DB(PinName pMOSI, PinName pMISO, PinName pSCK): sensor(pMOSI, pMISO, pSCK) {
    MOSI = pMOSI;
    MISO = pMISO;
    SCK = pSCK;
    
    sensor.frequency(10000000); // set it to 10MHz
    sensor.format(8, 3); // send 8 bits, change on falling, read on rising
    sensor.slave_format(8); // 8 bits returned
}

unsigned char PAW3102DB::read(unsigned char address) {
    return (char)sensor.write(address & 0x7F);
}

unsigned short PAW3102DB::getProductID(void) {
    return (sensor.write(PRODUCT_ID2) << 4) | (sensor.write(PRODUCT_ID3) >> 4);
}

unsigned short PAW3102DB::getResolution(void) {
    unsigned short resolution = 0;
    unsigned char buffer = sensor.write(MOTION_STATUS);
    buffer = (buffer >> 4) & 0x03;
    switch (buffer)
    {
        case 0:
            resolution = 1000;
            break;
        case 1:
            resolution = 1200;
            break;
        case 2:
            resolution = 1600;
            break;
        case 3:
            resolution = 800;
            break;
        default:
            break;    
    }
    return resolution;
}

signed char PAW3102DB::getDeltaX(void) {
    signed char buffer = read(DELTA_X);
    buffer *= -1; // dirty hack
    return buffer;     
}
signed char PAW3102DB::getDeltaY(void) {
    signed char buffer = read(DELTA_Y);
    buffer *= -1; // dirty hack
    return buffer;   
}