![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
this is a first compilation of a library for IQS5xx. For now, it work with the iqs572ev02 devellopment board. The code is inspired with the sample code provide by Azotech. I have some issu with the interrupt pin RDY, which seem to be high even I don't touch de board.
main.cpp@2:bd4b620316aa, 2020-01-01 (annotated)
- Committer:
- skydarc
- Date:
- Wed Jan 01 16:39:19 2020 +0000
- Revision:
- 2:bd4b620316aa
- Parent:
- 1:65f5b13e6177
done ! the rdy pin is functionnal. the "system config 1" register need to be properly configured.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
skydarc | 0:4907da2299a4 | 1 | #include "mbed.h" |
skydarc | 0:4907da2299a4 | 2 | #include <IQS5xx.h> |
skydarc | 0:4907da2299a4 | 3 | |
skydarc | 0:4907da2299a4 | 4 | /***** Object Declarations *****/ |
skydarc | 0:4907da2299a4 | 5 | IQS5xx trackPad(p28, p27, p17); |
skydarc | 0:4907da2299a4 | 6 | |
skydarc | 0:4907da2299a4 | 7 | DigitalOut led1(LED1); |
skydarc | 0:4907da2299a4 | 8 | |
skydarc | 2:bd4b620316aa | 9 | //DigitalIn rdy(p17); |
skydarc | 2:bd4b620316aa | 10 | InterruptIn rdyInter(p17); |
skydarc | 0:4907da2299a4 | 11 | |
skydarc | 0:4907da2299a4 | 12 | void ISR1() { //this is the response to interrupt, i.e. the ISR |
skydarc | 0:4907da2299a4 | 13 | |
skydarc | 2:bd4b620316aa | 14 | uint8_t ui8TempData[30], i; |
skydarc | 0:4907da2299a4 | 15 | |
skydarc | 0:4907da2299a4 | 16 | trackPad.I2C_Read(GestureEvents0_adr, &trackPad.Data_Buff[0], 44); |
skydarc | 0:4907da2299a4 | 17 | |
skydarc | 0:4907da2299a4 | 18 | if((trackPad.Data_Buff[3] & SNAP_TOGGLE) != 0) { |
skydarc | 0:4907da2299a4 | 19 | |
skydarc | 0:4907da2299a4 | 20 | // If there was a change in a snap status, then read the snap status |
skydarc | 0:4907da2299a4 | 21 | // bytes additionally. Keep previous valus to identify a state change |
skydarc | 0:4907da2299a4 | 22 | // |
skydarc | 0:4907da2299a4 | 23 | trackPad.I2C_Read(SnapStatus_adr, &ui8TempData[0], 30); |
skydarc | 0:4907da2299a4 | 24 | for(i = 0; i < 15; i++) { |
skydarc | 0:4907da2299a4 | 25 | trackPad.ui16PrevSnap[i] = trackPad.ui16SnapStatus[i]; |
skydarc | 0:4907da2299a4 | 26 | trackPad.ui16SnapStatus[i] = ((uint16_t)(ui8TempData[2*i])<<8) + (uint16_t)ui8TempData[(2*i)+1]; |
skydarc | 0:4907da2299a4 | 27 | } |
skydarc | 0:4907da2299a4 | 28 | } |
skydarc | 0:4907da2299a4 | 29 | |
skydarc | 0:4907da2299a4 | 30 | // |
skydarc | 0:4907da2299a4 | 31 | // Terminate the communication session, so that the IQS5xx can continue |
skydarc | 0:4907da2299a4 | 32 | // with sensing and processing |
skydarc | 0:4907da2299a4 | 33 | // |
skydarc | 0:4907da2299a4 | 34 | trackPad.Close_Comms(); |
skydarc | 0:4907da2299a4 | 35 | // |
skydarc | 0:4907da2299a4 | 36 | // Process received data |
skydarc | 0:4907da2299a4 | 37 | // |
skydarc | 0:4907da2299a4 | 38 | trackPad.Process_XY(); |
skydarc | 2:bd4b620316aa | 39 | } |
skydarc | 2:bd4b620316aa | 40 | |
skydarc | 2:bd4b620316aa | 41 | int main() { |
skydarc | 2:bd4b620316aa | 42 | |
skydarc | 2:bd4b620316aa | 43 | //rdy.mode(PullUp); |
skydarc | 2:bd4b620316aa | 44 | |
skydarc | 2:bd4b620316aa | 45 | rdyInter.rise(&ISR1); |
skydarc | 2:bd4b620316aa | 46 | |
skydarc | 2:bd4b620316aa | 47 | trackPad.AcknowledgeReset(); |
skydarc | 2:bd4b620316aa | 48 | |
skydarc | 2:bd4b620316aa | 49 | trackPad.checkVersion(); |
skydarc | 2:bd4b620316aa | 50 | |
skydarc | 2:bd4b620316aa | 51 | while(1) { |
skydarc | 2:bd4b620316aa | 52 | |
skydarc | 2:bd4b620316aa | 53 | |
skydarc | 0:4907da2299a4 | 54 | |
skydarc | 0:4907da2299a4 | 55 | led1 = 1; |
skydarc | 2:bd4b620316aa | 56 | wait(0.5); |
skydarc | 0:4907da2299a4 | 57 | led1 = 0; |
skydarc | 2:bd4b620316aa | 58 | wait(0.5); |
skydarc | 0:4907da2299a4 | 59 | } |
skydarc | 0:4907da2299a4 | 60 | } |
skydarc | 0:4907da2299a4 | 61 |