o: ActiveSupport::Cache::Entry :@compressedF: @value"S:"M:
main.c
18 18
#define SPI_MODE_2  (SPI_H_TO_L)
19 19
#define SPI_MODE_3  (SPI_H_TO_L | SPI_XMIT_L_TO_H)
20 20

  
21
signed int16 a0;
22
signed int16 b1;
23
signed int16 b2;
24
signed int16 c12;
21
float a0;
22
float b1;
23
float b2;
24
float c12;
25 25

  
26 26

  
27
int MPL_init()
27
void MPL_init()
28 28
{   
29 29
unsigned int8 a0_MSB, a0_LSB;
30 30
unsigned int8 b1_MSB, b1_LSB;
......
56 56
   spi_read(0x00);
57 57
   output_high(CSN_SPI);
58 58
   
59
   a0 = ((int16) a0_MSB << 8) + a0_LSB;
60
   b1 = ((int16) b1_MSB << 8) + b1_LSB;
61
   b2 = ((int16) b2_MSB << 8) + b2_LSB;
62
   c12 = ((int16) c12_MSB << 8) + c12_LSB;
59
   a0 = (a0_MSB << 5) + (a0_LSB >> 3) + (a0_LSB & 0x07)/8.0;
60
   b1 = ((((b1_MSB & 0x1F) * 0x100) + b1_LSB) / 8192.0) - 3;
61
   b2 = ((((b2_MSB - 0x80) << 8) + b2_LSB)/ 16384.0) - 2;
62
   c12 =(((c12_MSB * 0x100) + c12_LSB)/16777216.0);
63 63
}
64 64

  
65 65
float MPL_get_pressure()
66 66
{   
67 67
unsigned int8 LSB_data, MSB_data;
68 68
unsigned int16 ADC_pressure, ADC_temperature;
69
float Pcomp;
69 70

  
70 71
   output_low(CSN_SPI);        //Start temperature and pressure conversion
71 72
   spi_write(0x24);
......
76 77
         
77 78
   output_low(CSN_SPI);     // get MSB for Pressure
78 79
   spi_write(0x80);
80
   MSB_data = spi_read(0x00);
81
   spi_write(0x82);              // get LSB for Pressure
79 82
   LSB_data = spi_read(0x00);
80
   spi_write(0x82);              // get LSB for Pressure
81
   MSB_data = spi_read(0x00);
82 83
   output_high(CSN_SPI);
83 84

  
84 85
   printf("%lX  %lX\r\n", MSB_data, LSB_data);       
85
   ADC_pressure = ((int16) MSB_data << 8) + LSB_data;  // conversion of 8bit registers to 16bit variable 
86
   ADC_pressure = (((unsigned int16) MSB_data << 8) + LSB_data ) >> 6;  // conversion of 8bit registers to 16bit variable 
86 87

  
87 88
   output_low(CSN_SPI);
88 89
   spi_write(0x84);
90
   MSB_data = spi_read(0x00);
91
   spi_write(0x86);              // get LSB for Temperature
89 92
   LSB_data = spi_read(0x00);
90
   spi_write(0x86);              // get LSB for Temperature
91
   MSB_data = spi_read(0x00);
92 93
   spi_read(0x00);
93 94
   output_high(CSN_SPI);
94 95

  
95 96
   printf("%lX  %lX\r\n", MSB_data, LSB_data);       
96
   ADC_temperature = ((int16) MSB_data << 8) + LSB_data;  // conversion of 8bit registers to 16bit variable 
97
   ADC_temperature = (((unsigned int16) MSB_data << 8) + LSB_data ) >> 6;  // conversion of 8bit registers to 16bit variable 
97 98

  
98
   printf("%lX  %lX\r\n", ADC_pressure, ADC_temperature);       
99
   printf("%lu  %lu \r\n", ADC_pressure, ADC_temperature);
100
   
101
   Pcomp = (a0 + (b1 + c12 * ADC_temperature) * ADC_pressure + b2 * ADC_temperature );
99 102

  
100
   return (a0 + (b1 + c12 * ADC_temperature) * ADC_pressure + b2 * ADC_temperature );
103
   return (Pcomp * ((115.0 - 50.0)/1023.0) + 50.0);
101 104
}
102 105

  
103 106
void main()
......
112 115
   while(true)
113 116
   {
114 117
//   MPL_init();
115
//      printf("%f \r\n", MPL_get_pressure());
118
      printf("%f \r\n", MPL_get_pressure());
116 119
//      printf("%ld %ld %ld %ld \r\n",a0, b1, b2, c12);
117
MPL_get_pressure();
120
//MPL_get_pressure();
118 121

  
119 122
      delay_ms(500);
120 123
   }
:@created_atf1421976959.3710599¿r:@expires_in0