hideaki matsukawa / Mbed 2 deprecated SCP1000_Test01

Dependencies:   mbed

Committer:
matsukawa
Date:
Sun Aug 01 13:07:04 2010 +0000
Revision:
0:dc93cf7b2b42

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
matsukawa 0:dc93cf7b2b42 1 //---------------1-------------------------
matsukawa 0:dc93cf7b2b42 2
matsukawa 0:dc93cf7b2b42 3 #include "mbed.h"
matsukawa 0:dc93cf7b2b42 4 #include "TextLCD.h"
matsukawa 0:dc93cf7b2b42 5
matsukawa 0:dc93cf7b2b42 6 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3
matsukawa 0:dc93cf7b2b42 7 SPI spi(p5, p6, p7); // mosi, miso, sclk
matsukawa 0:dc93cf7b2b42 8 DigitalOut cs(p8);
matsukawa 0:dc93cf7b2b42 9
matsukawa 0:dc93cf7b2b42 10 Serial pc(USBTX, USBRX); // tx, rx
matsukawa 0:dc93cf7b2b42 11
matsukawa 0:dc93cf7b2b42 12
matsukawa 0:dc93cf7b2b42 13 //-----------------2------------------------
matsukawa 0:dc93cf7b2b42 14 //Addresses
matsukawa 0:dc93cf7b2b42 15 #define REVID 0x00 //ASIC Revision Number
matsukawa 0:dc93cf7b2b42 16 #define OPSTATUS 0x04 //Operation Status
matsukawa 0:dc93cf7b2b42 17 #define STATUS 0x07 //ASIC Status
matsukawa 0:dc93cf7b2b42 18 #define START 0x0A //Constant Readings
matsukawa 0:dc93cf7b2b42 19 #define PRESSURE 0x1F //Pressure 3 MSB
matsukawa 0:dc93cf7b2b42 20 #define PRESSURE_LSB 0x20 //Pressure 16 LSB
matsukawa 0:dc93cf7b2b42 21 #define TEMP 0x21 //16 bit temp
matsukawa 0:dc93cf7b2b42 22
matsukawa 0:dc93cf7b2b42 23 //---------------3-----------------------
matsukawa 0:dc93cf7b2b42 24
matsukawa 0:dc93cf7b2b42 25 float temp_in;
matsukawa 0:dc93cf7b2b42 26 unsigned long pressure_lsb;
matsukawa 0:dc93cf7b2b42 27 unsigned long pressure_msb;
matsukawa 0:dc93cf7b2b42 28 unsigned long temp_pressure;
matsukawa 0:dc93cf7b2b42 29 unsigned long pressure;
matsukawa 0:dc93cf7b2b42 30
matsukawa 0:dc93cf7b2b42 31 char read_register(char register_name)
matsukawa 0:dc93cf7b2b42 32 {
matsukawa 0:dc93cf7b2b42 33 register_name <<=2;
matsukawa 0:dc93cf7b2b42 34 register_name &= 0xFC;
matsukawa 0:dc93cf7b2b42 35 cs=0; //Select SPI device
matsukawa 0:dc93cf7b2b42 36 spi.write(register_name); //Send register location
matsukawa 0:dc93cf7b2b42 37 char register_value=spi.write(0x00);
matsukawa 0:dc93cf7b2b42 38 cs=1;
matsukawa 0:dc93cf7b2b42 39 return register_value;
matsukawa 0:dc93cf7b2b42 40 }
matsukawa 0:dc93cf7b2b42 41
matsukawa 0:dc93cf7b2b42 42
matsukawa 0:dc93cf7b2b42 43 void write_register(char register_name, char register_value)
matsukawa 0:dc93cf7b2b42 44 {
matsukawa 0:dc93cf7b2b42 45 register_name <<= 2;
matsukawa 0:dc93cf7b2b42 46 register_name |= 0x02; //le estamos diciendo que escriba
matsukawa 0:dc93cf7b2b42 47 cs=0; //Select SPI device
matsukawa 0:dc93cf7b2b42 48 spi.write(register_name); //Send register location
matsukawa 0:dc93cf7b2b42 49 spi.write(register_value); //Send value to record into register
matsukawa 0:dc93cf7b2b42 50 cs=1;
matsukawa 0:dc93cf7b2b42 51 }
matsukawa 0:dc93cf7b2b42 52
matsukawa 0:dc93cf7b2b42 53 float read_register16(char register_name)
matsukawa 0:dc93cf7b2b42 54 {
matsukawa 0:dc93cf7b2b42 55 register_name <<= 2;
matsukawa 0:dc93cf7b2b42 56 register_name &= 0xFC; //Read command
matsukawa 0:dc93cf7b2b42 57 cs=0; //Select SPI Device
matsukawa 0:dc93cf7b2b42 58 spi.write(register_name); //Write byte to device
matsukawa 0:dc93cf7b2b42 59 int in_byte1 = spi.write(0x00);
matsukawa 0:dc93cf7b2b42 60 int in_byte2 = spi.write(0x00);
matsukawa 0:dc93cf7b2b42 61 cs=1;
matsukawa 0:dc93cf7b2b42 62 float in_word= (in_byte1<<=8) | (in_byte2);
matsukawa 0:dc93cf7b2b42 63 return(in_word);
matsukawa 0:dc93cf7b2b42 64 }
matsukawa 0:dc93cf7b2b42 65
matsukawa 0:dc93cf7b2b42 66
matsukawa 0:dc93cf7b2b42 67 //-----------------4------------------------
matsukawa 0:dc93cf7b2b42 68
matsukawa 0:dc93cf7b2b42 69 int main() {
matsukawa 0:dc93cf7b2b42 70 // configuracion---------------------------------
matsukawa 0:dc93cf7b2b42 71 cs=1;
matsukawa 0:dc93cf7b2b42 72 spi.frequency(500000); // the fastest of the sensor
matsukawa 0:dc93cf7b2b42 73 spi.format(8, 0); // duda son dos palabras de 8 bits?
matsukawa 0:dc93cf7b2b42 74 wait(0.5);
matsukawa 0:dc93cf7b2b42 75 //------------------------------------------------
matsukawa 0:dc93cf7b2b42 76 // pc.printf("RESET\r\n");
matsukawa 0:dc93cf7b2b42 77 write_register(0x06,0x01);
matsukawa 0:dc93cf7b2b42 78 wait(0.5);
matsukawa 0:dc93cf7b2b42 79
matsukawa 0:dc93cf7b2b42 80 // pc.printf("Initialize High Resolution Constant Reading Mode\r\n");
matsukawa 0:dc93cf7b2b42 81 write_register(0x03,0x0A);
matsukawa 0:dc93cf7b2b42 82 wait(0.5);
matsukawa 0:dc93cf7b2b42 83
matsukawa 0:dc93cf7b2b42 84 while (1) {
matsukawa 0:dc93cf7b2b42 85 pressure_msb = read_register(PRESSURE);
matsukawa 0:dc93cf7b2b42 86 pressure_msb &= 0x07;
matsukawa 0:dc93cf7b2b42 87 pressure_lsb = read_register16(PRESSURE_LSB);
matsukawa 0:dc93cf7b2b42 88 pressure = ((pressure_msb<<16)| pressure_lsb);
matsukawa 0:dc93cf7b2b42 89 pressure /= 4;
matsukawa 0:dc93cf7b2b42 90 temp_in = read_register16(TEMP);
matsukawa 0:dc93cf7b2b42 91 lcd.cls();
matsukawa 0:dc93cf7b2b42 92 if (temp_in > 0x3FFF) {
matsukawa 0:dc93cf7b2b42 93 temp_in = 0x3FFF - temp_in;
matsukawa 0:dc93cf7b2b42 94 lcd.locate(0, 0);
matsukawa 0:dc93cf7b2b42 95 lcd.printf("t:%.2f",temp_in);
matsukawa 0:dc93cf7b2b42 96 temp_in = temp_in / 20;
matsukawa 0:dc93cf7b2b42 97 lcd.locate(0, 1);
matsukawa 0:dc93cf7b2b42 98 lcd.printf("Temp :-");
matsukawa 0:dc93cf7b2b42 99 lcd.printf("%.1f",temp_in);
matsukawa 0:dc93cf7b2b42 100 // pc.printf("TEMPERATURA: %.2f,PRESION: %.2u\r",temp_in ,pressure);
matsukawa 0:dc93cf7b2b42 101 } else {
matsukawa 0:dc93cf7b2b42 102 lcd.locate(0, 0);
matsukawa 0:dc93cf7b2b42 103 lcd.printf("t:%.2f",temp_in);
matsukawa 0:dc93cf7b2b42 104 lcd.locate(0, 1);
matsukawa 0:dc93cf7b2b42 105 temp_in = temp_in / 20;
matsukawa 0:dc93cf7b2b42 106 lcd.printf("Temp :+");
matsukawa 0:dc93cf7b2b42 107 lcd.printf("%.1f",temp_in);
matsukawa 0:dc93cf7b2b42 108 // pc.printf("TEMPERATURA: %.2f,PRESION: %.2u\r",temp_in ,pressure);
matsukawa 0:dc93cf7b2b42 109 }
matsukawa 0:dc93cf7b2b42 110 // temp_in = temp_in / 20;
matsukawa 0:dc93cf7b2b42 111 wait(5);
matsukawa 0:dc93cf7b2b42 112 }
matsukawa 0:dc93cf7b2b42 113
matsukawa 0:dc93cf7b2b42 114 }