test

Dependencies:   mbed MMA8452Q

Fork of HelloWorld by Simon Ford

Committer:
kkalsi
Date:
Fri Sep 01 17:41:34 2017 +0000
Revision:
21:74482f23c8fe
Parent:
20:107380f7eeb9
Child:
22:706708bc4c1a
Code including UART config for transmission

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kkalsi 6:62e39c103d12 1 #include "mbed.h"
kkalsi 9:f36f1506a840 2 #include "MMA8452Q.h"
kkalsi 7:32229ffff57e 3
kkalsi 2:42408ce8f4ae 4 Serial pc(USBTX, USBRX); // tx, rx
kkalsi 10:386a3a12f3cf 5 SPI accel(p11,p12,p13);
kkalsi 10:386a3a12f3cf 6 DigitalOut cs(p14);
kkalsi 10:386a3a12f3cf 7 // Communication I2C
kkalsi 9:f36f1506a840 8 //I2C comI2C(p9,p10); // sda, scl
kkalsi 10:386a3a12f3cf 9
kkalsi 3:8494c3f7108d 10 int main() {
kkalsi 6:62e39c103d12 11
kkalsi 21:74482f23c8fe 12
kkalsi 21:74482f23c8fe 13 // Power up the UART3 it's disabled on powerup.
kkalsi 21:74482f23c8fe 14 LPC_SC->PCONP |= (1UL << 25);
kkalsi 21:74482f23c8fe 15
kkalsi 21:74482f23c8fe 16 // Setup the PCLK for UART3
kkalsi 21:74482f23c8fe 17 // LPC_SC->PCLKSEL1 &= ~(3UL << 18); // Clean
kkalsi 21:74482f23c8fe 18 LPC_SC->PCLKSEL1 |= (1UL << 18); // PCLK = CCLK
kkalsi 21:74482f23c8fe 19
kkalsi 21:74482f23c8fe 20 // Setup the baud rate for 9600
kkalsi 21:74482f23c8fe 21 LPC_UART3->LCR = 0x80; // LPC_UART3->LCR |= (1UL << 7);
kkalsi 21:74482f23c8fe 22 LPC_UART3->DLM = 0x2;
kkalsi 21:74482f23c8fe 23 LPC_UART3->DLL = 0x71;
kkalsi 21:74482f23c8fe 24 LPC_UART3->LCR = 0x3; // 8-bit character length
kkalsi 21:74482f23c8fe 25
kkalsi 21:74482f23c8fe 26 // Enable the pins on the device to use UART3
kkalsi 21:74482f23c8fe 27 LPC_PINCON->PINSEL0 |= (3UL << 18);
kkalsi 21:74482f23c8fe 28 LPC_PINCON->PINSEL0 |= (3UL << 20);
kkalsi 21:74482f23c8fe 29
kkalsi 21:74482f23c8fe 30 // Enable and reset UART3 FIFOs.
kkalsi 21:74482f23c8fe 31 LPC_UART3->FCR = 0x7;
kkalsi 21:74482f23c8fe 32
kkalsi 21:74482f23c8fe 33 // Enable the interrupt
kkalsi 21:74482f23c8fe 34 NVIC_EnableIRQ(UART3_IRQn);
kkalsi 21:74482f23c8fe 35
kkalsi 21:74482f23c8fe 36 // Init the UART3 RX interrupt
kkalsi 21:74482f23c8fe 37 LPC_UART3->IER = 0x01;
kkalsi 21:74482f23c8fe 38
kkalsi 21:74482f23c8fe 39 LPC_UART3->LCR &= ~(1UL << 7);
kkalsi 21:74482f23c8fe 40
kkalsi 21:74482f23c8fe 41 LPC_UART3->THR = 7;
kkalsi 21:74482f23c8fe 42
kkalsi 21:74482f23c8fe 43 /*
kkalsi 21:74482f23c8fe 44 while(LPC_UART3->THRE = 0)
kkalsi 21:74482f23c8fe 45 {
kkalsi 21:74482f23c8fe 46
kkalsi 21:74482f23c8fe 47 }
kkalsi 21:74482f23c8fe 48 */
kkalsi 21:74482f23c8fe 49
kkalsi 21:74482f23c8fe 50
kkalsi 21:74482f23c8fe 51 /*
vincentlabbe 17:c463c5a434ec 52 float x, y, z ;
kkalsi 9:f36f1506a840 53
kkalsi 15:b4b2e73faefb 54 MMA8452Q acc(p9,p10,0x1d); // acceleration object
kkalsi 9:f36f1506a840 55
vincentlabbe 17:c463c5a434ec 56 while (true) {
vincentlabbe 17:c463c5a434ec 57 x = acc.getAccX() ;
vincentlabbe 17:c463c5a434ec 58 y = acc.getAccY() ;
vincentlabbe 17:c463c5a434ec 59 z = acc.getAccZ() ;
vincentlabbe 19:992f183385e8 60 printf("X[%.3f] Y[%.3f] Z[%.3f]\n",x, y, z) ;
kkalsi 9:f36f1506a840 61 wait(0.1);
vincentlabbe 13:64137db317ab 62
vincentlabbe 19:992f183385e8 63 int X = x * 1000;
vincentlabbe 19:992f183385e8 64 int Y = y * 1000;
vincentlabbe 19:992f183385e8 65 int Z = z * 1000;
kkalsi 18:171cb8d2f243 66
vincentlabbe 19:992f183385e8 67 int angle = (1000-(((2*X*X+2*Y*Y)*1000/(X*X+Y*Y+Z*Z))));
kkalsi 18:171cb8d2f243 68
vincentlabbe 19:992f183385e8 69 pc.printf("avant acos = %d", angle);
vincentlabbe 17:c463c5a434ec 70 //float resultat = ((3.14/2.0) -( angle + (angle *angle * angle)/6.0 + (3*angle*angle*angle*angle*angle)/40.0))/2;
vincentlabbe 19:992f183385e8 71 float angleAcos = angle/1000.0;
kkalsi 18:171cb8d2f243 72
vincentlabbe 19:992f183385e8 73 int resultat = 500*acos((angleAcos));
kkalsi 18:171cb8d2f243 74 pc.printf("valeur rad new= %d", resultat);
vincentlabbe 20:107380f7eeb9 75 int degree = resultat * 18000/31400;
kkalsi 18:171cb8d2f243 76 pc.printf("valeur deg new = %d", degree);
kkalsi 18:171cb8d2f243 77 //degree = degree * 10;
kkalsi 18:171cb8d2f243 78 int degreInt = degree;
vincentlabbe 17:c463c5a434ec 79 pc.printf("valeur deg new = %d", degreInt);
kkalsi 15:b4b2e73faefb 80
vincentlabbe 16:0b58c14b639d 81 int rep;
kkalsi 15:b4b2e73faefb 82 // extracting digits
vincentlabbe 16:0b58c14b639d 83 int digits[4] = {0,0,0,0};
kkalsi 15:b4b2e73faefb 84 int i = 0;
kkalsi 15:b4b2e73faefb 85 while(degreInt > 0) {
vincentlabbe 16:0b58c14b639d 86 rep = degreInt % 10; //to get the right most digit
vincentlabbe 16:0b58c14b639d 87 digits[i]=rep;
vincentlabbe 16:0b58c14b639d 88 pc.printf("digit %d = %d, degree int: %d", i, digits[i], degreInt);
kkalsi 15:b4b2e73faefb 89 degreInt /= 10; //reduce the number by one digit
kkalsi 15:b4b2e73faefb 90 ++i;
kkalsi 15:b4b2e73faefb 91 }
kkalsi 15:b4b2e73faefb 92
vincentlabbe 17:c463c5a434ec 93 cs = 0;
vincentlabbe 17:c463c5a434ec 94 accel.write(0x76); // Clear display
vincentlabbe 17:c463c5a434ec 95 cs = 1;
vincentlabbe 17:c463c5a434ec 96 wait(0.1);
vincentlabbe 17:c463c5a434ec 97 cs = 0;
vincentlabbe 17:c463c5a434ec 98 accel.write(0x77); // Decimal control command
vincentlabbe 17:c463c5a434ec 99 accel.write(0x04);// Turn on decimal
vincentlabbe 17:c463c5a434ec 100 cs = 1;
vincentlabbe 17:c463c5a434ec 101 wait(0.01);
kkalsi 10:386a3a12f3cf 102 cs = 0;
vincentlabbe 16:0b58c14b639d 103 accel.write(digits[3]);
vincentlabbe 16:0b58c14b639d 104 cs = 1;
vincentlabbe 17:c463c5a434ec 105 wait(0.01);
vincentlabbe 16:0b58c14b639d 106 cs = 0;
vincentlabbe 16:0b58c14b639d 107 accel.write(digits[2]);
kkalsi 10:386a3a12f3cf 108 cs = 1;
vincentlabbe 17:c463c5a434ec 109 wait(0.01);
vincentlabbe 16:0b58c14b639d 110 cs = 0;
vincentlabbe 16:0b58c14b639d 111 accel.write(digits[1]);
vincentlabbe 16:0b58c14b639d 112 cs = 1;
vincentlabbe 17:c463c5a434ec 113 wait(0.01);
vincentlabbe 16:0b58c14b639d 114 cs = 0;
vincentlabbe 16:0b58c14b639d 115 accel.write(digits[0]);
vincentlabbe 16:0b58c14b639d 116 cs = 1;
vincentlabbe 17:c463c5a434ec 117 wait(0.1);
vincentlabbe 17:c463c5a434ec 118 }
kkalsi 21:74482f23c8fe 119 */
kkalsi 3:8494c3f7108d 120 }
kkalsi 3:8494c3f7108d 121
kkalsi 3:8494c3f7108d 122
kkalsi 21:74482f23c8fe 123
kkalsi 21:74482f23c8fe 124
kkalsi 21:74482f23c8fe 125
kkalsi 21:74482f23c8fe 126
kkalsi 21:74482f23c8fe 127
kkalsi 21:74482f23c8fe 128
kkalsi 21:74482f23c8fe 129
kkalsi 3:8494c3f7108d 130 /* communication SPI
kkalsi 3:8494c3f7108d 131 Serial pc(USBTX, USBRX); // tx, rx
kkalsi 2:42408ce8f4ae 132 SPI acc(p11,p12,p13);
kkalsi 2:42408ce8f4ae 133 DigitalOut cs(p14);
kkalsi 2:42408ce8f4ae 134 int main() {
kkalsi 2:42408ce8f4ae 135 while(1){
kkalsi 2:42408ce8f4ae 136 int nombre = 0;
kkalsi 2:42408ce8f4ae 137 pc.printf("Entrez un nombre de 4 chiffres : ");
kkalsi 2:42408ce8f4ae 138 pc.scanf("%d", &nombre);
kkalsi 2:42408ce8f4ae 139 pc.printf("Votre numero entrez est le : %d", nombre);
kkalsi 2:42408ce8f4ae 140
kkalsi 2:42408ce8f4ae 141 cs = 0;
kkalsi 3:8494c3f7108d 142 acc.write(nombre);
kkalsi 2:42408ce8f4ae 143 cs = 1;
kkalsi 2:42408ce8f4ae 144 wait(0.2);
kkalsi 2:42408ce8f4ae 145 cs = 0;
kkalsi 2:42408ce8f4ae 146 wait(1);
kkalsi 2:42408ce8f4ae 147 }
kkalsi 3:8494c3f7108d 148 }*/
kkalsi 2:42408ce8f4ae 149 /*
kkalsi 2:42408ce8f4ae 150 Serial pc(USBTX, USBRX); // tx, rx
kkalsi 2:42408ce8f4ae 151 Serial mc(p13,p14);
kkalsi 2:42408ce8f4ae 152 int main() {
kkalsi 2:42408ce8f4ae 153
kkalsi 2:42408ce8f4ae 154 int nombre = 0;
kkalsi 2:42408ce8f4ae 155 pc.printf("Entrez un nombre de 4 chiffres : ");
kkalsi 2:42408ce8f4ae 156 pc.scanf("%d", &nombre);
kkalsi 2:42408ce8f4ae 157 pc.printf("Votre numero entrez est le : %d", nombre);
kkalsi 2:42408ce8f4ae 158 mc.printf(nombre);
kkalsi 2:42408ce8f4ae 159 }
kkalsi 2:42408ce8f4ae 160 */
simon 0:fb6bbc10ffa0 161
kkalsi 2:42408ce8f4ae 162
kkalsi 2:42408ce8f4ae 163 /*
kkalsi 2:42408ce8f4ae 164 DigitalOut myled(LED2);
simon 0:fb6bbc10ffa0 165
simon 0:fb6bbc10ffa0 166 int main() {
simon 0:fb6bbc10ffa0 167 while(1) {
simon 0:fb6bbc10ffa0 168 myled = 1;
simon 0:fb6bbc10ffa0 169 wait(0.2);
simon 0:fb6bbc10ffa0 170 myled = 0;
simon 0:fb6bbc10ffa0 171 wait(0.2);
simon 0:fb6bbc10ffa0 172 }
simon 0:fb6bbc10ffa0 173 }
kkalsi 2:42408ce8f4ae 174 */