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.
Dependencies: MMA7660FC MODSERIAL mbed
Revision 0:1cef37031a2c, committed 2013-08-07
- Comitter:
 - edodm85
 - Date:
 - Wed Aug 07 20:10:15 2013 +0000
 - Commit message:
 - First version
 
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA7660FC.lib Wed Aug 07 20:10:15 2013 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/edodm85/code/MMA7660FC/#2cc4a317402d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MODSERIAL.lib Wed Aug 07 20:10:15 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/AjK/code/MODSERIAL/#ae0408ebdd68
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 07 20:10:15 2013 +0000
@@ -0,0 +1,113 @@
+/* Author: Edoardo De Marchi 
+ * Note: Firmware for the software 3D Accelerometer Tester v1.1
+ */
+ 
+#include "main.h"
+
+
+void INTSU()
+{
+    led4 = !led4;
+    bCheckINT = true;
+}
+
+void rxCallback(MODSERIAL_IRQ_INFO *q) 
+{
+     new_send = true;
+}
+
+
+int main() 
+{
+    
+    pc.baud(921600);
+    
+    pc.attach(&rxCallback, MODSERIAL::RxIrq);
+    INT.rise(&INTSU);
+    
+    MMA.init();    // Initialization 
+    
+    led1 = 1;
+    led4 = 0;
+           
+    while(1)
+    {    
+        if(new_send)
+        {
+            int i = 0;
+       
+            while(pc.readable())
+            {
+                word[i] = pc.getc();
+                i++;
+            }
+            parse_cmd(); 
+        }else
+        if(bCheckINT)
+        {            
+            if((MMA.read_reg(0x03) & 0x80) != 0)
+            {
+                pc.printf("SHAKE");
+            }else
+            if((MMA.read_reg(0x03) & 0x20) != 0)
+            {
+                pc.printf("TAPE");
+            }else    
+            {
+                strcpy(word,"read_data");
+                parse_cmd();
+            }  
+            bCheckINT = false;
+        }    
+        MMA.read_reg(0x00);       
+        wait_ms(50);
+        
+           
+    }
+}
+
+
+
+void parse_cmd(){
+            new_send = false;
+           
+            if(strcmp("reset", word) == 0)              
+            {
+                    mbed_reset();        
+            }else
+            if(strcmp("read_data", word) == 0)              
+            {
+                    pc.printf("x: %2d", MMA.read_x()+10);          // Print the X axis acceleration
+                    pc.printf("y: %2d", MMA.read_y()+10);          // Print the Y axis acceleration
+                    pc.printf("z: %2d", MMA.read_z()+10);          // Print the Z axis acceleration      
+            }else
+            if(strncmp("w_reg", word, 5) == 0)                 
+            {        
+                    int reg_addr = 0;                
+                    int reg_value = 0;
+                    char temp[3];
+                    strncpy(temp, &word[5], 3);  
+                    reg_addr = atoi(temp);
+                    memset(temp, 0, sizeof(temp));
+                    strncpy(temp, &word[8], 3); 
+                    reg_value = atoi(temp);                     
+                    MMA.write_reg(reg_addr, reg_value);
+                    
+                    memset(temp, 0, sizeof(temp));
+                    memset(word, 0, sizeof(word));
+            }else
+            if(strncmp("r_reg", word, 5) == 0)                 
+            {       
+            
+                    int reg_value = 0;
+                    char temp[3];
+                    strncpy(temp, &word[5], 3);  
+                    reg_value = atoi(temp);   
+                    pc.printf("%x", MMA.read_reg(reg_value));  
+                    
+                    memset(temp, 0, sizeof(temp));              
+                    memset(word, 0, sizeof(word));
+            }           
+            memset(word, 0, sizeof(word));            
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.h Wed Aug 07 20:10:15 2013 +0000 @@ -0,0 +1,26 @@ +#include "mbed.h" +#include "MODSERIAL.h" +#include "MMA7660FC.h" + + +bool bCheckINT = false; +bool new_send = false; + + +#define ADDR_MMA7660 0x98 // I2C SLAVE ADDR MMA7660FC + +MMA7660FC MMA(p9, p10, ADDR_MMA7660); // sda, scl, Addr +InterruptIn INT(p6); // INT pin of the device + +MODSERIAL pc(USBTX, USBRX); + +DigitalOut led1(LED1); +DigitalOut led4(LED4); + +//RESET +extern "C" void mbed_reset(); + +//Serial +char word[25]; + +void parse_cmd(); \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Aug 07 20:10:15 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/b3110cd2dd17 \ No newline at end of file