![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
test
Fork of HelloWorld by
Diff: main.cpp
- Revision:
- 26:523ac79471d8
- Parent:
- 25:16a041dd21db
- Child:
- 27:0f602aca65f1
--- a/main.cpp Tue Sep 05 20:18:59 2017 +0000 +++ b/main.cpp Fri Sep 08 01:54:02 2017 +0000 @@ -9,75 +9,27 @@ // Communication I2C //I2C i2c(p9,p10); // sda, scl +int main() { + } -void UARTInit() -{ - uint16_t usFdiv; - - // Power up the UART3 it's disabled on powerup. - LPC_SC->PCONP |= (1 << 25); - - // Enable the pins on the device to use UART3 - LPC_PINCON->PINSEL1 |= (3 << 18); /* Pin P0.25 used as TXD0 (Com0) */ - LPC_PINCON->PINSEL1 |= (3 << 20); /* Pin P0.26 used as RXD0 (Com0) */ - - // Setup the PCLK for UART3 - LPC_SC->PCLKSEL1 &= ~(3 << 18); // Clean all to 0 - LPC_SC->PCLKSEL1 |= (1 << 18); // PCLK = CCLK - // Word select 8-bit character length and set DLAB - LPC_UART3->LCR = 0x83; // 0000 0000 1000 0011 - -//Baud rate calculation - usFdiv = (SystemCoreClock / (16*9600)); - LPC_UART3->DLM = usFdiv / 256; - LPC_UART3->DLL = usFdiv % 256; - // Enable and reset UART3 FIFOs. - LPC_UART3->FCR = 0x7; - - // Enable the interrupt - // NVIC_EnableIRQ(UART3_IRQn); - - // Init the UART3 RX interrupt - // LPC_UART3->IER = 0x01; - // Clear DLAB - LPC_UART3->LCR &= ~(1 << 7); - -} - -char UART3Transmit(int out) -{ - LPC_UART3 -> THR = out; - while(! (LPC_UART3->LSR & (0x01 << 0x06))); - - return 1; -} - +// SPI COMMUNICATION +/* int main() { - - //UARTInit(); float x, y, z ; - MMA8452Q acc(p9,p10,0x1d); // acceleration object - //i2c.frequency(100000); - //int cmd[0] = 0x0D; - //12c.write(addr,cmd,1,true); - //i2c.read(addr,cmd,1); - //Clear display SPI - //cs = 0; - //wait(0.1); - //spi.write(0x76); // Clear display - //cs = 1; - //wait(0.1); - //cs = 1; + cs = 0; //Clear display SPI + wait(0.1); + spi.write(0x76); // Clear display + cs = 1; + wait(0.1); + cs = 1; - //clear display UART - //UART3Transmit(0x76); // Clear display - // while (true) { + while (true) { x = acc.getAccX() ; y = acc.getAccY() ; z = acc.getAccZ() ; @@ -98,7 +50,6 @@ pc.printf("valeur rad new= %d", resultatRAD); int degree = resultatRAD * 18000/31400; //Tranfo degree pc.printf("valeur deg new = %d", degree); - //int degreInt = degree; pc.printf("valeur deg new = %d", degree); // extracting digits @@ -113,22 +64,7 @@ ++i; } - // Pour la communication UART - - //UART3Transmit(0x77); // Decimal control command - //UART3Transmit(0x04);// Turn on decimal - - - //UART3Transmit(digits[3]); - //UART3Transmit(digits[2]); - //UART3Transmit(digits[1]); - //UART3Transmit(digits[0]); - //UART3Transmit(0xA5); - - // Pour la communication SPI - - cs = 0; - /* spi.write(0x77); // Decimal control command + spi.write(0x77); // Decimal control command // Pour la communication SPI cs = 1; wait(0.01); cs = 0; @@ -151,18 +87,109 @@ spi.write(digits[0]); cs = 1; */ + /* Test + cs = 0; wait(0.1); spi.write(0x5); cs = 1; - + */ // } - -} +//} +// UART COMMUNICATION +/* +void UARTInit() +{ + uint16_t usFdiv; + + LPC_SC->PCONP |= (1 << 25); // Power up the UART3 it's disabled on powerup. + + LPC_PINCON->PINSEL1 |= (3 << 18); // Pin P0.25 used as TXD0 (Com0) // Enable the pins on the device to use UART3 + LPC_PINCON->PINSEL1 |= (3 << 20); // Pin P0.26 used as RXD0 (Com0) + + LPC_SC->PCLKSEL1 &= ~(3 << 18); // Clean all to 0 // Setup the PCLK for UART3 + LPC_SC->PCLKSEL1 |= (1 << 18); // PCLK = CCLK -/* communication SPI + LPC_UART3->LCR = 0x83; // 0000 0000 1000 0011 // Word select 8-bit character length and set DLAB + + usFdiv = (SystemCoreClock / (16*9600)); //Baud rate calculation + LPC_UART3->DLM = usFdiv / 256; + LPC_UART3->DLL = usFdiv % 256; + + LPC_UART3->FCR = 0x7; // Enable and reset UART3 FIFOs. + + LPC_UART3->LCR &= ~(1 << 7); // Clear DLAB +} + +char UART3Transmit(int out) +{ + LPC_UART3 -> THR = out; + while(! (LPC_UART3->LSR & (0x01 << 0x06))); + + return 1; +} + +int main() { + + UARTInit(); + + float x, y, z ; + + MMA8452Q acc(p9,p10,0x1d); // acceleration object + + UART3Transmit(0x76); // Clear display UART + while (true) { + + x = acc.getAccX() ; + y = acc.getAccY() ; + z = acc.getAccZ() ; + printf("X[%.3f] Y[%.3f] Z[%.3f]\n",x, y, z) ; + wait(0.1); + + int X = x * 1000; //Pour enlever floating point et garder une précision + int Y = y * 1000; + int Z = z * 1000; + + int angle = (1000-(((2*X*X+2*Y*Y)*1000/(X*X+Y*Y+Z*Z)))); //Calcul vectoriel pour calculer l'angle à l'horizontal + + pc.printf("avant acos = %d", angle); + + float ratioZaccel = angle/1000.0; //Remettre en floating point pour acos + int resultatRAD = 500*acos((ratioZaccel)); //Reponse en RAD + + pc.printf("valeur rad new= %d", resultatRAD); + int degree = resultatRAD * 18000/31400; //Tranfo degree + pc.printf("valeur deg new = %d", degree); + + pc.printf("valeur deg new = %d", degree); + + + int digit; // extracting digits + int digits[4] = {0,0,0,0}; + int i = 0; + while(degree > 0) { + digit = degree % 10; //to get the right most digit + digits[i]=digit; + pc.printf("digit %d = %d, degree int: %d", i, digits[i], degree); + degree /= 10; //reduce the number by one digit + ++i; + } + + UART3Transmit(0x77); // Decimal control command // Pour la communication UART + UART3Transmit(0x04);// Turn on decimal + + UART3Transmit(digits[3]); + UART3Transmit(digits[2]); + UART3Transmit(digits[1]); + UART3Transmit(digits[0]); //UART3Transmit(0xA5); + } +} +*/ + + +/* // communication I2C Serial pc(USBTX, USBRX); // tx, rx I2C i2c(p9,p10); @@ -180,7 +207,13 @@ } } */ - /* +// I2C write +//i2c.frequency(100000); +//int cmd[0] = 0x0D; +//12c.write(addr,cmd,1,true); +//i2c.read(addr,cmd,1); + + /* // communication UART Serial pc(USBTX, USBRX); // tx, rx Serial mc(p9,p10); int main() { @@ -194,9 +227,8 @@ } */ - /* -DigitalOut myled(LED2); +DigitalOut myled(LED3); int main() { while(1) {