
Semestrálna práca VÝTAH Roman Ciesarík
FreeFall.cpp@11:a9918a8441a9, 2018-01-08 (annotated)
- Committer:
- Ciesarik3
- Date:
- Mon Jan 08 17:47:48 2018 +0000
- Revision:
- 11:a9918a8441a9
- Parent:
- 10:346a5a5936b9
dorobena dokumentacia;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ciesarik3 | 9:51cf1120b4f4 | 1 | #include "FreeFall.h" |
Ciesarik3 | 9:51cf1120b4f4 | 2 | #include "headre.h" |
Ciesarik3 | 9:51cf1120b4f4 | 3 | |
Ciesarik3 | 9:51cf1120b4f4 | 4 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
Ciesarik3 | 9:51cf1120b4f4 | 5 | |
Ciesarik3 | 9:51cf1120b4f4 | 6 | PinName const SDA = PTE25; |
Ciesarik3 | 9:51cf1120b4f4 | 7 | PinName const SCL = PTE24; |
Ciesarik3 | 9:51cf1120b4f4 | 8 | |
Ciesarik3 | 9:51cf1120b4f4 | 9 | DigitalOut freeFall_LED(LED_RED); |
Ciesarik3 | 9:51cf1120b4f4 | 10 | InterruptIn acc(PTA15); |
Ciesarik3 | 9:51cf1120b4f4 | 11 | I2C i2c(SDA, SCL); |
Ciesarik3 | 9:51cf1120b4f4 | 12 | |
Ciesarik3 | 9:51cf1120b4f4 | 13 | bool freeFall_check; |
Ciesarik3 | 9:51cf1120b4f4 | 14 | |
Ciesarik3 | 9:51cf1120b4f4 | 15 | void freeFall() |
Ciesarik3 | 9:51cf1120b4f4 | 16 | { |
Ciesarik3 | 9:51cf1120b4f4 | 17 | uint8_t IntSourceSystem = 0; |
Ciesarik3 | 9:51cf1120b4f4 | 18 | char t[1] = {0x0C}; |
Ciesarik3 | 9:51cf1120b4f4 | 19 | i2c.write(MMA8451_I2C_ADDRESS , t, 1, true); |
Ciesarik3 | 9:51cf1120b4f4 | 20 | i2c.read(MMA8451_I2C_ADDRESS , (char *)&IntSourceSystem, 1); |
Ciesarik3 | 9:51cf1120b4f4 | 21 | |
Ciesarik3 | 11:a9918a8441a9 | 22 | if ((IntSourceSystem&0x04)==0x04) |
Ciesarik3 | 11:a9918a8441a9 | 23 | { |
Ciesarik3 | 9:51cf1120b4f4 | 24 | char DATA [] = {0x01}; |
Ciesarik3 | 9:51cf1120b4f4 | 25 | poslemSpravu(BRZDA, 0xcc, 0x01, DATA ); |
Ciesarik3 | 9:51cf1120b4f4 | 26 | freeFall_LED = 0; |
Ciesarik3 | 9:51cf1120b4f4 | 27 | freeFall_check = 1; |
Ciesarik3 | 9:51cf1120b4f4 | 28 | } |
Ciesarik3 | 9:51cf1120b4f4 | 29 | } |
Ciesarik3 | 9:51cf1120b4f4 | 30 | |
Ciesarik3 | 9:51cf1120b4f4 | 31 | |
Ciesarik3 | 9:51cf1120b4f4 | 32 | void init_freeFall() |
Ciesarik3 | 9:51cf1120b4f4 | 33 | { |
Ciesarik3 | 9:51cf1120b4f4 | 34 | //https://www.nxp.com/docs/en/application-note/AN4070.pdf?&fasp=1&WT_TYPE=Applicatio |
Ciesarik3 | 9:51cf1120b4f4 | 35 | uint8_t data1[2] = {0x2A, 0x20}; // Deaktivacia senzora |
Ciesarik3 | 9:51cf1120b4f4 | 36 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data1, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 37 | uint8_t data2[2] = {0x15, 0xB8}; |
Ciesarik3 | 9:51cf1120b4f4 | 38 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data2, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 39 | uint8_t data3[2] = {0x17, 0x03}; |
Ciesarik3 | 9:51cf1120b4f4 | 40 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data3, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 41 | uint8_t data4[2] = {0x18, 0x06}; |
Ciesarik3 | 9:51cf1120b4f4 | 42 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data4, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 43 | uint8_t data5[2] = {0x2D, 0x04}; |
Ciesarik3 | 9:51cf1120b4f4 | 44 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data5, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 45 | uint8_t data6[2] = {0x2E, 0x00}; |
Ciesarik3 | 9:51cf1120b4f4 | 46 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data6, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 47 | uint8_t data7[2]= {0x2A, 0x09 }; //Frekvencia je nastavena na 400 Hz, aktivacia senzora |
Ciesarik3 | 9:51cf1120b4f4 | 48 | i2c.write(MMA8451_I2C_ADDRESS , (char *)data7, 2); |
Ciesarik3 | 9:51cf1120b4f4 | 49 | |
Ciesarik3 | 9:51cf1120b4f4 | 50 | freeFall_check = false; |
Ciesarik3 | 9:51cf1120b4f4 | 51 | freeFall_LED = 1; |
Ciesarik3 | 9:51cf1120b4f4 | 52 | |
Ciesarik3 | 9:51cf1120b4f4 | 53 | acc.fall(&freeFall); |
Ciesarik3 | 9:51cf1120b4f4 | 54 | } |
Ciesarik3 | 9:51cf1120b4f4 | 55 | |
Ciesarik3 | 9:51cf1120b4f4 | 56 | bool freeFall_status() |
Ciesarik3 | 9:51cf1120b4f4 | 57 | { |
Ciesarik3 | 9:51cf1120b4f4 | 58 | return freeFall_check; |
Ciesarik3 | 9:51cf1120b4f4 | 59 | } |