Temp logger for EE Web part 2

Dependencies:   mbed

Revision:
0:5fefec34f0d3
Child:
1:6db2c0502c2c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 08 07:38:54 2012 +0000
@@ -0,0 +1,203 @@
+#include "mbed.h"
+
+
+void button_FSM( void );
+void max31855( void );
+void init_max31855( void );
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+DigitalIn  button(p21);
+AnalogIn   Ain1(p19);
+AnalogIn   Ain2(p20);
+Serial     pc(USBTX, USBRX);
+DigitalOut spi_clk(p7);
+DigitalOut spi_cs(p8);
+DigitalIn  spi_data(p6);
+
+int enable;
+int button_state;
+int record_state;
+int spi_data_in_temp;
+int spi_data_in;
+float A1, A2;
+
+int main()
+{
+    enable = 0;
+    button_state = 0;
+    record_state = 0;
+    init_max31855();
+    
+    printf("Data Logger Ready\r\n");
+    
+    while(1)
+    {
+        wait(1.0);
+        button_FSM();
+        max31855();
+        if( enable == 1 )
+        {
+            A1 = Ain1.read_u16();
+            A2 = Ain2.read_u16();
+            printf("Ain1=%f Ain2=%f t'c=%d\r\n", A1, A2, spi_data_in);
+        }
+    }
+}
+
+void max31855( void )
+{
+    int bits = 0;
+
+    spi_data_in_temp = 0;
+
+    spi_clk = 0;
+    spi_cs = 0;
+    wait(0.01);
+    
+    while( bits < 32 )
+    {
+        spi_clk = 1;
+        spi_clk = 1;
+        if( bits > 0 && bits < 12 )
+        {
+            spi_data_in_temp = (spi_data_in_temp *2) + spi_data;
+        }
+        spi_clk = 0;
+        bits++;
+    }
+    spi_data_in = spi_data_in_temp;
+    spi_cs = 1;
+}
+
+void init_max31855( void )
+{
+    spi_cs = 1;
+    spi_clk = 0;
+    spi_data_in_temp = 0;
+    spi_data_in = 0;
+}
+
+void button_FSM( void )
+{
+    if( enable == 0 )
+    {
+        switch( button_state )
+        {
+            default:
+            case 0:
+                if( button == 1 )
+                    button_state = 1;
+                else
+                    button_state = 0;
+                break;
+                
+            case 1:
+                if( button == 1 )
+                    button_state = 2;
+                else
+                    button_state = 0;
+                break;
+                
+            case 2:
+                if( button == 1 )
+                    button_state = 3;
+                else
+                    button_state = 0;
+                break;
+                
+            case 3:
+                if( button == 1 )
+                    button_state = 4;
+                else
+                    button_state = 0;
+                break;
+                
+            case 4:
+                enable = 1;
+                button_state = 0;
+                printf("Recording...\r\n");
+                break;
+        }
+    }
+    else
+    {
+        switch( button_state )
+        {
+            default:
+            case 0:
+                if( button == 1 )
+                    button_state = 1;
+                else
+                    button_state = 0;
+                break;
+                
+            case 1:
+                if( button == 1 )
+                    button_state = 2;
+                else
+                    button_state = 0;
+                break;
+                
+            case 2:
+                if( button == 1 )
+                    button_state = 3;
+                else
+                    button_state = 0;
+                break;
+                
+            case 3:
+                if( button == 1 )
+                    button_state = 4;
+                else
+                    button_state = 0;
+                break;
+                
+            case 4:
+                enable = 0;
+                button_state = 0;
+                printf("STOPPED!\r\n");
+                break;
+        }
+    }
+    switch( button_state )
+    {
+        default:
+        case 0:
+            led1 = 0;
+            led2 = 0;
+            led3 = 0;
+            led4 = 0;
+            break;
+            
+        case 1:
+            led1 = 1;
+            led2 = 0;
+            led3 = 0;
+            led4 = 0;
+            break;
+            
+        case 2:
+            led1 = 1;
+            led2 = 1;
+            led3 = 0;
+            led4 = 0;
+            break;
+            
+        case 3:
+            led1 = 1;
+            led2 = 1;
+            led3 = 1;
+            led4 = 0;
+            break;
+            
+        case 4:
+            led1 = 1;
+            led2 = 1;
+            led3 = 1;
+            led4 = 1;
+            break;
+    }
+}