Dependencies:   MMA8451Q mbed

Fork of Lab3_latest_21_01_2015_aggiornata by SDI 2014/2015

Revision:
7:3abddf195ada
Parent:
6:848474d4d02e
--- a/main.cpp	Tue Jan 20 23:20:03 2015 +0000
+++ b/main.cpp	Sun Feb 08 17:34:52 2015 +0000
@@ -5,10 +5,6 @@
 #include "DigitalIn.h"
 #include "DigitalOut.h"
 
-//--prova--------------------------------------------
-//PinName const INT1 = PTA14 ; //pin interrupt
-//PinName const INT2 = PTA15 ; //pin interrupt
-//--prova--------------------------------------------
 
 #if   defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
 PinName const SDA = PTE25;
@@ -34,11 +30,6 @@
 //instanzia e inizializza oggettto i2c della clase I2C
 I2C i2c(SDA,SCL); // SDA I2C data line pin  
                 //  SCL I2C clock line pin
-//--prova------------------------------------------------------------
-//instanzia e inizializza oggetti int1 e int2 della classe DigitalIn
-//DigitalIn int1(INT1); //inizializza int1
-//DigitalIn int2(INT2); //inizializza int2
-//--prova------------------------------------------------------------
 
 
 //instanzia e inizializza oggettto spi della classe SPI
@@ -68,7 +59,6 @@
 char data = 0x00 ;                      // inizalizza la variabile data con le impostazioni da scrivere su CTRL_REG_1
 
 //--registri aggiunti e settati per prova ------------------------------------------------------------------
-char CTRL_REG_5 = 0x2E ;  //read/write  // register address del CTRL_REG_5
 char FF_MT_CFG = 0x15;    //read/write  // registera addres del FF_MT_CFG (Frefall/Motionn Configuration register
 char FF_MT_THS = 0x17;    //read/write  // register address del FF_MT_THS Freefall and Motion Threshold
 char FF_MT_COUNT = 0x18;  //read/write  //register address del FF_MT_COUNT Debounce Register
@@ -178,25 +168,7 @@
     i2c.write(data);       // scrivi il "data" contenete le impostazioni del ASLP_COUNT
     i2c.stop();    
 
-//---registri impostati per prova ---------------------------------
-
-    
-    // setta impostazioni su CTRL_REG_5 
-    data=0x81; //imposta data con le impostazioni del CTRL_REG_5 attineti alle gestioni dell'interupt nei pin
-    // vedi data-sheet
-    //Bit 7-> INT_CFG_ASLP   = 1 route the auto-sleep interrupt to INT1 ->vedi AN074
-    //Bit 6-> INT_CFG_FIFO   = 0
-    //Bit 5-> INT_CFG_TRANS  = 0
-    //Bit 4-> INT_CFG_LNDPRT = 0         
-    //Bit 3-> INT_CFG_PULSE  = 0 route the pulse interrupt to INT2 ->vedi AN074
-    //Bit 2-> INT_CFG_FF_MT  = 0 route the Motion and Orientation interrupt to INT2 ->vedi AN074
-    //Bit 1-> DON'T CARE   = 0
-    //Bit 0-> INT_CFG_DRDY   = 1 route the data-ready interrupt to INT1 ->vedi AN074
-    i2c.start(); // dai lo start
-    i2c.write(address_wr); // scrivi e passa l'indirizzo del dispositivo con bit di scrittura
-    i2c.write(CTRL_REG_5); // scrivi l'indirizzo del CTRL_REG_5
-    i2c.write(data); // scrivi il "data" contenete le impostazioni del CTRL_REG_5
-    i2c.stop();   
+//---registri impostati per gestire gli interrupt ---------------------------------
 
     // setta impostazioni su FF_MT_CFG (Frefall/Motion Configuration Register (Read/Write)
     data=0xF8; //imposta data con le impostazioni del FF_MT_SRC attineti quando vogliamo svegliare il dispositivo dal wake
@@ -231,7 +203,7 @@
     i2c.write(data); // scrivi il "data" contenete le impostazioni del FF_MT_COUNT
     i2c.stop();    
 
-//---registri impostati per prova ---------------------------------
+//---registri impostati per gestire gli interrupt ---------------------------------
     
     
     //!!! attiva il dispositivo (esce da standby) !!!
@@ -248,7 +220,7 @@
     PwmOut gled(LED2);
     PwmOut bled(LED3);    
     
-    //verifica della corretta scrittura dei registri, mediante lettura Single Byte Read
+    //verifica della corretta scrittura dei principali registri, mediante lettura Single Byte Read
     
     //lettura single byte read del registro CTRL_REG_1
     char ctrl_reg_1 = 0x00; 
@@ -260,7 +232,6 @@
     ctrl_reg_1=i2c.read(0);
     i2c.stop();
     printf("CTRL_REG_1: %1.2x \n", ctrl_reg_1); // in esadecimale
-   
     //lettura single byte read del registro CTRL_REG_2
     char ctrl_reg_2 = 0x00; 
     i2c.start();
@@ -271,8 +242,7 @@
     ctrl_reg_2=i2c.read(0);
     i2c.stop();
     printf("CTRL_REG_2: %1.2x \n", ctrl_reg_2); //in esadecimale
-
-    //lettura single byte read del registro CTRL_REG_3
+   //lettura single byte read del registro CTRL_REG_3
     char ctrl_reg_3 = 0x00; 
     i2c.start();
     i2c.write(address_wr);  // scrivi e passa l'indirizzo del dispositivo con bit di scrittura
@@ -282,7 +252,6 @@
     ctrl_reg_3=i2c.read(0);
     i2c.stop();
     printf("CTRL_REG_3: %1.2x \n", ctrl_reg_3); //in esadecimale
-    
     //lettura single byte read del registro CTRL_REG_4
      char ctrl_reg_4 = 0x00; 
     i2c.start();
@@ -293,7 +262,6 @@
     ctrl_reg_4=i2c.read(0);
     i2c.stop();
     printf("CTRL_REG_4: %1.2x \n", ctrl_reg_4); //in esadecimale
-    
     //lettura single byte read del registro ASLP_COUNT
     char aslp_count = 0x00; 
     i2c.start();
@@ -304,6 +272,7 @@
     aslp_count=i2c.read(0);
     i2c.stop();
     printf("ASLP_COUNT: %1.2x \n", aslp_count); //in esadecimale
+    //verifica della corretta scrittura dei registri principali------------------------------
     
     char sysmod = 0x00;
     
@@ -316,13 +285,11 @@
     
     char    command_location=0x00; // in caso di scrittura 1000 DDD
     
-    //int int1_value = 0;
-    //int int2_value = 0;
     while (true) {
         printf("SYSMOD_pre_read: %1.2x \n", sysmod);
         wait(0.1);
         //lettura dello stato dell'accelerometro wake o sleep
-       // lettura single Byte Read contenuto di SYSMOD System Mode Register
+        //lettura single Byte Read contenuto di SYSMOD System Mode Register
         //  Bit 7-> FGERR   
         //  Bit 6-> FGT_4   
         //  Bit 5-> FGT_3  
@@ -351,37 +318,9 @@
             rled = 0.0f;
             gled = 0.0f;
             bled = 0.0f;
-            //---prova------------------------------------------------
-            //mette il dispositivo in standby
-            //setta impostazioni su CTRL_REG_1
-            data=0x5A ;            // mette a 1 il bit ACTIVE e lascia invariati gli altri (già impostati)
-            i2c.start();           // dai lo start
-            i2c.write(address_wr); // scrivi e passa l'indirizzo del dispositivo con bit di scrittura
-            i2c.write(CTRL_REG_1); // scrivi l'indirizzo del CTRL_REG_1
-            i2c.write(data);       // scrivi il "data" in le impostazioni del CTRL_REG_1
-            i2c.stop();        
-            //attiva il dispositivo
-            //setta impostazioni su CTRL_REG_1
-            data=0x5B ;            // mette a 1 il bit ACTIVE e lascia invariati gli altri (già impostati)
-            i2c.start();           // dai lo start
-            i2c.write(address_wr); // scrivi e passa l'indirizzo del dispositivo con bit di scrittura
-            i2c.write(CTRL_REG_1); // scrivi l'indirizzo del CTRL_REG_1
-            i2c.write(data);       // scrivi il "data" in le impostazioni del CTRL_REG_1
-            i2c.stop();
-            //int1_value=int1.read();
-            //int2_value=int2.read();
-            //printf("INT1_sleep: %1.2d \n",INT1);
-            //printf("INT2_sleep: %1.2d \n",INT2);
-           //---prova------------------------------------------------
-
+            
         } //chiusra del if
         if ( (sysmod &0x01) ==0x01){ // if SYSMOD1,SYSMOD0 = 0,1
-            //---prova-------------------------------------------------
-            //int1_value=int1.read;
-            //int2_value=int2.read;
-            //printf("INT1_wake: %1.2d \n",INT1);
-            //printf("INT2_wake: %1.2d \n",INT2);
-            //---prova-------------------------------------------------
             wait(0.1f);
             printf("Good morning! , SYSMOD: %1.2x \n", sysmod);      
             //lettura degli assi con lettura Single Byte Read   
@@ -414,8 +353,7 @@
             gled = 1.0f - y_axis/64;
             bled = 1.0f - z_axis/64;
             //scrivo sulla seriale
-            printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n", x_axis/64, y_axis/64, z_axis/64);
-            
+            printf("X: %1.2f, Y: %1.2f, Z: %1.2f\n", x_axis/64, y_axis/64, z_axis/64);    
             //SCRIVO DATI SU DISPLAY A SETTE SEGMENTI DELLA SCHEDA DE2 MEDIANTE SPI
             //accelerazione sull'asse x
             x_axis_norm=x_axis/64*99;  // normalizzo tra [0 99]  
@@ -437,6 +375,7 @@
             z_unit_ascii = ( '0' + (z_unit)  ); // ottengo le unità in ASCII   
                       
             //stampo nella seriale componente x,y,z dell'accelereazione normailzzate tra 0 e 99
+            
             printf("ax_norm: %1.2f, ay_norm: %1.2f, az_norm: %1.2f\n", x_axis_norm, y_axis_norm, z_axis_norm);
             //stampo nella seriale le decine delle componenti x,y,z dell'accelereazione normailzzate tra 0 e 99
             printf("ax_tens: %1.2d, ay_tens: %1.2d, az_tens: %1.2d\n", x_tens, y_tens, z_tens);
@@ -446,6 +385,8 @@
             printf("ax_tens_ascii: %1.2c, ay_tens_ascii: %1.2c, az_tens_ascii: %1.2c\n", x_tens_ascii, y_tens_ascii, z_tens_ascii);
             //stampo nella seriale le unità in ascii delle componenti x,y,z dell'accelereazione normailzzate tra 0 e 99
             printf("ax_unit_ascii: %1.2c, ay_unit_ascii: %1.2c, az_unit_ascii: %1.2c\n", x_unit_ascii, y_unit_ascii, z_unit_ascii);
+                      
+            //stampo nella seriale componente x,y,z dell'accelereazione normailzzate tra 0 e 99
             
             //scrivo nei display i valori dell'accelerazione
             
@@ -464,7 +405,6 @@
             spi.write(command_location);
             spi.write(x_unit_ascii);
             slave_select.write(1);
-
             //componente y dell'accelarazione
             //scrivo codice ascii delle decine nel display nel display dedicato 
             command_location = ( command_wr | loc_y_tens ); //1000 010 = 0x82
@@ -479,8 +419,7 @@
             slave_select.write(0); //asserisco lo slave select attivo basso
             spi.write(command_location);
             spi.write(y_unit_ascii);
-            slave_select.write(1); //nego lo slave select attivo basso
-            
+            slave_select.write(1); //nego lo slave select attivo basso          
             //componente z dell'accelarazione
             //scrivo codice ascii delle decine nel display nel display dedicato 
             command_location = ( command_wr | loc_z_tens ); //1000 100 = 0x84
@@ -496,7 +435,7 @@
             spi.write(command_location);
             spi.write(z_unit_ascii);
             slave_select.write(1);   
-                     
+            //scrivo nei display i valori dell'accelerazione                     
         } //close 2nd if
     }//close while
 }//close main