test

Dependencies:   mbed MMA8452Q

Fork of HelloWorld by Simon Ford

Committer:
kkalsi
Date:
Sun Sep 03 17:06:51 2017 +0000
Revision:
22:706708bc4c1a
Parent:
21:74482f23c8fe
Child:
23:262e3e171aaf
Uart communication fonctional, need to integrate to rest of the code

Who changed what in which revision?

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