Temp logger for EE Web part 2

Dependencies:   mbed

Committer:
monpjc
Date:
Mon Oct 08 07:38:54 2012 +0000
Revision:
0:5fefec34f0d3
Child:
1:6db2c0502c2c
Temp Logger for EE Web - part 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
monpjc 0:5fefec34f0d3 1 #include "mbed.h"
monpjc 0:5fefec34f0d3 2
monpjc 0:5fefec34f0d3 3
monpjc 0:5fefec34f0d3 4 void button_FSM( void );
monpjc 0:5fefec34f0d3 5 void max31855( void );
monpjc 0:5fefec34f0d3 6 void init_max31855( void );
monpjc 0:5fefec34f0d3 7
monpjc 0:5fefec34f0d3 8 DigitalOut led1(LED1);
monpjc 0:5fefec34f0d3 9 DigitalOut led2(LED2);
monpjc 0:5fefec34f0d3 10 DigitalOut led3(LED3);
monpjc 0:5fefec34f0d3 11 DigitalOut led4(LED4);
monpjc 0:5fefec34f0d3 12 DigitalIn button(p21);
monpjc 0:5fefec34f0d3 13 AnalogIn Ain1(p19);
monpjc 0:5fefec34f0d3 14 AnalogIn Ain2(p20);
monpjc 0:5fefec34f0d3 15 Serial pc(USBTX, USBRX);
monpjc 0:5fefec34f0d3 16 DigitalOut spi_clk(p7);
monpjc 0:5fefec34f0d3 17 DigitalOut spi_cs(p8);
monpjc 0:5fefec34f0d3 18 DigitalIn spi_data(p6);
monpjc 0:5fefec34f0d3 19
monpjc 0:5fefec34f0d3 20 int enable;
monpjc 0:5fefec34f0d3 21 int button_state;
monpjc 0:5fefec34f0d3 22 int record_state;
monpjc 0:5fefec34f0d3 23 int spi_data_in_temp;
monpjc 0:5fefec34f0d3 24 int spi_data_in;
monpjc 0:5fefec34f0d3 25 float A1, A2;
monpjc 0:5fefec34f0d3 26
monpjc 0:5fefec34f0d3 27 int main()
monpjc 0:5fefec34f0d3 28 {
monpjc 0:5fefec34f0d3 29 enable = 0;
monpjc 0:5fefec34f0d3 30 button_state = 0;
monpjc 0:5fefec34f0d3 31 record_state = 0;
monpjc 0:5fefec34f0d3 32 init_max31855();
monpjc 0:5fefec34f0d3 33
monpjc 0:5fefec34f0d3 34 printf("Data Logger Ready\r\n");
monpjc 0:5fefec34f0d3 35
monpjc 0:5fefec34f0d3 36 while(1)
monpjc 0:5fefec34f0d3 37 {
monpjc 0:5fefec34f0d3 38 wait(1.0);
monpjc 0:5fefec34f0d3 39 button_FSM();
monpjc 0:5fefec34f0d3 40 max31855();
monpjc 0:5fefec34f0d3 41 if( enable == 1 )
monpjc 0:5fefec34f0d3 42 {
monpjc 0:5fefec34f0d3 43 A1 = Ain1.read_u16();
monpjc 0:5fefec34f0d3 44 A2 = Ain2.read_u16();
monpjc 0:5fefec34f0d3 45 printf("Ain1=%f Ain2=%f t'c=%d\r\n", A1, A2, spi_data_in);
monpjc 0:5fefec34f0d3 46 }
monpjc 0:5fefec34f0d3 47 }
monpjc 0:5fefec34f0d3 48 }
monpjc 0:5fefec34f0d3 49
monpjc 0:5fefec34f0d3 50 void max31855( void )
monpjc 0:5fefec34f0d3 51 {
monpjc 0:5fefec34f0d3 52 int bits = 0;
monpjc 0:5fefec34f0d3 53
monpjc 0:5fefec34f0d3 54 spi_data_in_temp = 0;
monpjc 0:5fefec34f0d3 55
monpjc 0:5fefec34f0d3 56 spi_clk = 0;
monpjc 0:5fefec34f0d3 57 spi_cs = 0;
monpjc 0:5fefec34f0d3 58 wait(0.01);
monpjc 0:5fefec34f0d3 59
monpjc 0:5fefec34f0d3 60 while( bits < 32 )
monpjc 0:5fefec34f0d3 61 {
monpjc 0:5fefec34f0d3 62 spi_clk = 1;
monpjc 0:5fefec34f0d3 63 spi_clk = 1;
monpjc 0:5fefec34f0d3 64 if( bits > 0 && bits < 12 )
monpjc 0:5fefec34f0d3 65 {
monpjc 0:5fefec34f0d3 66 spi_data_in_temp = (spi_data_in_temp *2) + spi_data;
monpjc 0:5fefec34f0d3 67 }
monpjc 0:5fefec34f0d3 68 spi_clk = 0;
monpjc 0:5fefec34f0d3 69 bits++;
monpjc 0:5fefec34f0d3 70 }
monpjc 0:5fefec34f0d3 71 spi_data_in = spi_data_in_temp;
monpjc 0:5fefec34f0d3 72 spi_cs = 1;
monpjc 0:5fefec34f0d3 73 }
monpjc 0:5fefec34f0d3 74
monpjc 0:5fefec34f0d3 75 void init_max31855( void )
monpjc 0:5fefec34f0d3 76 {
monpjc 0:5fefec34f0d3 77 spi_cs = 1;
monpjc 0:5fefec34f0d3 78 spi_clk = 0;
monpjc 0:5fefec34f0d3 79 spi_data_in_temp = 0;
monpjc 0:5fefec34f0d3 80 spi_data_in = 0;
monpjc 0:5fefec34f0d3 81 }
monpjc 0:5fefec34f0d3 82
monpjc 0:5fefec34f0d3 83 void button_FSM( void )
monpjc 0:5fefec34f0d3 84 {
monpjc 0:5fefec34f0d3 85 if( enable == 0 )
monpjc 0:5fefec34f0d3 86 {
monpjc 0:5fefec34f0d3 87 switch( button_state )
monpjc 0:5fefec34f0d3 88 {
monpjc 0:5fefec34f0d3 89 default:
monpjc 0:5fefec34f0d3 90 case 0:
monpjc 0:5fefec34f0d3 91 if( button == 1 )
monpjc 0:5fefec34f0d3 92 button_state = 1;
monpjc 0:5fefec34f0d3 93 else
monpjc 0:5fefec34f0d3 94 button_state = 0;
monpjc 0:5fefec34f0d3 95 break;
monpjc 0:5fefec34f0d3 96
monpjc 0:5fefec34f0d3 97 case 1:
monpjc 0:5fefec34f0d3 98 if( button == 1 )
monpjc 0:5fefec34f0d3 99 button_state = 2;
monpjc 0:5fefec34f0d3 100 else
monpjc 0:5fefec34f0d3 101 button_state = 0;
monpjc 0:5fefec34f0d3 102 break;
monpjc 0:5fefec34f0d3 103
monpjc 0:5fefec34f0d3 104 case 2:
monpjc 0:5fefec34f0d3 105 if( button == 1 )
monpjc 0:5fefec34f0d3 106 button_state = 3;
monpjc 0:5fefec34f0d3 107 else
monpjc 0:5fefec34f0d3 108 button_state = 0;
monpjc 0:5fefec34f0d3 109 break;
monpjc 0:5fefec34f0d3 110
monpjc 0:5fefec34f0d3 111 case 3:
monpjc 0:5fefec34f0d3 112 if( button == 1 )
monpjc 0:5fefec34f0d3 113 button_state = 4;
monpjc 0:5fefec34f0d3 114 else
monpjc 0:5fefec34f0d3 115 button_state = 0;
monpjc 0:5fefec34f0d3 116 break;
monpjc 0:5fefec34f0d3 117
monpjc 0:5fefec34f0d3 118 case 4:
monpjc 0:5fefec34f0d3 119 enable = 1;
monpjc 0:5fefec34f0d3 120 button_state = 0;
monpjc 0:5fefec34f0d3 121 printf("Recording...\r\n");
monpjc 0:5fefec34f0d3 122 break;
monpjc 0:5fefec34f0d3 123 }
monpjc 0:5fefec34f0d3 124 }
monpjc 0:5fefec34f0d3 125 else
monpjc 0:5fefec34f0d3 126 {
monpjc 0:5fefec34f0d3 127 switch( button_state )
monpjc 0:5fefec34f0d3 128 {
monpjc 0:5fefec34f0d3 129 default:
monpjc 0:5fefec34f0d3 130 case 0:
monpjc 0:5fefec34f0d3 131 if( button == 1 )
monpjc 0:5fefec34f0d3 132 button_state = 1;
monpjc 0:5fefec34f0d3 133 else
monpjc 0:5fefec34f0d3 134 button_state = 0;
monpjc 0:5fefec34f0d3 135 break;
monpjc 0:5fefec34f0d3 136
monpjc 0:5fefec34f0d3 137 case 1:
monpjc 0:5fefec34f0d3 138 if( button == 1 )
monpjc 0:5fefec34f0d3 139 button_state = 2;
monpjc 0:5fefec34f0d3 140 else
monpjc 0:5fefec34f0d3 141 button_state = 0;
monpjc 0:5fefec34f0d3 142 break;
monpjc 0:5fefec34f0d3 143
monpjc 0:5fefec34f0d3 144 case 2:
monpjc 0:5fefec34f0d3 145 if( button == 1 )
monpjc 0:5fefec34f0d3 146 button_state = 3;
monpjc 0:5fefec34f0d3 147 else
monpjc 0:5fefec34f0d3 148 button_state = 0;
monpjc 0:5fefec34f0d3 149 break;
monpjc 0:5fefec34f0d3 150
monpjc 0:5fefec34f0d3 151 case 3:
monpjc 0:5fefec34f0d3 152 if( button == 1 )
monpjc 0:5fefec34f0d3 153 button_state = 4;
monpjc 0:5fefec34f0d3 154 else
monpjc 0:5fefec34f0d3 155 button_state = 0;
monpjc 0:5fefec34f0d3 156 break;
monpjc 0:5fefec34f0d3 157
monpjc 0:5fefec34f0d3 158 case 4:
monpjc 0:5fefec34f0d3 159 enable = 0;
monpjc 0:5fefec34f0d3 160 button_state = 0;
monpjc 0:5fefec34f0d3 161 printf("STOPPED!\r\n");
monpjc 0:5fefec34f0d3 162 break;
monpjc 0:5fefec34f0d3 163 }
monpjc 0:5fefec34f0d3 164 }
monpjc 0:5fefec34f0d3 165 switch( button_state )
monpjc 0:5fefec34f0d3 166 {
monpjc 0:5fefec34f0d3 167 default:
monpjc 0:5fefec34f0d3 168 case 0:
monpjc 0:5fefec34f0d3 169 led1 = 0;
monpjc 0:5fefec34f0d3 170 led2 = 0;
monpjc 0:5fefec34f0d3 171 led3 = 0;
monpjc 0:5fefec34f0d3 172 led4 = 0;
monpjc 0:5fefec34f0d3 173 break;
monpjc 0:5fefec34f0d3 174
monpjc 0:5fefec34f0d3 175 case 1:
monpjc 0:5fefec34f0d3 176 led1 = 1;
monpjc 0:5fefec34f0d3 177 led2 = 0;
monpjc 0:5fefec34f0d3 178 led3 = 0;
monpjc 0:5fefec34f0d3 179 led4 = 0;
monpjc 0:5fefec34f0d3 180 break;
monpjc 0:5fefec34f0d3 181
monpjc 0:5fefec34f0d3 182 case 2:
monpjc 0:5fefec34f0d3 183 led1 = 1;
monpjc 0:5fefec34f0d3 184 led2 = 1;
monpjc 0:5fefec34f0d3 185 led3 = 0;
monpjc 0:5fefec34f0d3 186 led4 = 0;
monpjc 0:5fefec34f0d3 187 break;
monpjc 0:5fefec34f0d3 188
monpjc 0:5fefec34f0d3 189 case 3:
monpjc 0:5fefec34f0d3 190 led1 = 1;
monpjc 0:5fefec34f0d3 191 led2 = 1;
monpjc 0:5fefec34f0d3 192 led3 = 1;
monpjc 0:5fefec34f0d3 193 led4 = 0;
monpjc 0:5fefec34f0d3 194 break;
monpjc 0:5fefec34f0d3 195
monpjc 0:5fefec34f0d3 196 case 4:
monpjc 0:5fefec34f0d3 197 led1 = 1;
monpjc 0:5fefec34f0d3 198 led2 = 1;
monpjc 0:5fefec34f0d3 199 led3 = 1;
monpjc 0:5fefec34f0d3 200 led4 = 1;
monpjc 0:5fefec34f0d3 201 break;
monpjc 0:5fefec34f0d3 202 }
monpjc 0:5fefec34f0d3 203 }