Edoardo De Marchi / Mbed 2 deprecated 3D_Accelerometer_Tester

Dependencies:   MMA7660FC MODSERIAL mbed

Files at this revision

API Documentation at this revision

Comitter:
edodm85
Date:
Wed Aug 07 20:10:15 2013 +0000
Commit message:
First version

Changed in this revision

MMA7660FC.lib Show annotated file Show diff for this revision Revisions of this file
MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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