Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HelloWorld by
Revision 26:523ac79471d8, committed 2017-09-08
- Comitter:
- kkalsi
- Date:
- Fri Sep 08 01:54:02 2017 +0000
- Parent:
- 25:16a041dd21db
- Child:
- 27:0f602aca65f1
- Commit message:
- LAST
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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) {
