This example shows how to print the temperature from the LPC1549 temperature sensor.

Dependencies:   mbed

Committer:
chrta
Date:
Sun Jun 22 09:51:10 2014 +0000
Revision:
0:39468e6d5d62
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrta 0:39468e6d5d62 1 #include "mbed.h"
chrta 0:39468e6d5d62 2
chrta 0:39468e6d5d62 3 DigitalOut myled(LED1);
chrta 0:39468e6d5d62 4 Serial pc(USBTX, USBRX); // tx, rx
chrta 0:39468e6d5d62 5 AnalogIn ain(A0); //is ADC0_0: must be channel 0 of ADC0 or ADC1
chrta 0:39468e6d5d62 6
chrta 0:39468e6d5d62 7 #define ADCn_INSEL_TEMPERATURE (0x3)
chrta 0:39468e6d5d62 8 #define SYSCON_PDRUNCFG_TS_PD (1 << 18)
chrta 0:39468e6d5d62 9 #define SYSCON_PDRUNCFG_IREF_PD (1 << 17)
chrta 0:39468e6d5d62 10
chrta 0:39468e6d5d62 11 int main() {
chrta 0:39468e6d5d62 12 pc.printf("Starting program...\r\n");
chrta 0:39468e6d5d62 13
chrta 0:39468e6d5d62 14 //Enable temperature sensor and internal voltage reference, see um chapter 31
chrta 0:39468e6d5d62 15 LPC_SYSCON->PDRUNCFG &= ~(SYSCON_PDRUNCFG_TS_PD | SYSCON_PDRUNCFG_IREF_PD);
chrta 0:39468e6d5d62 16
chrta 0:39468e6d5d62 17 //Select source for channel 0: temperature sensor
chrta 0:39468e6d5d62 18 LPC_ADC0->INSEL = ADCn_INSEL_TEMPERATURE;
chrta 0:39468e6d5d62 19
chrta 0:39468e6d5d62 20 while(1) {
chrta 0:39468e6d5d62 21 unsigned short raw = ain.read_u16();
chrta 0:39468e6d5d62 22 pc.printf("Raw u16 value %u\r\n", raw);
chrta 0:39468e6d5d62 23 pc.printf("Raw 12 Bit value %u\r\n", (raw >> 4));
chrta 0:39468e6d5d62 24 float value = ((float)raw) / (float) 0xffff;
chrta 0:39468e6d5d62 25 pc.printf("Float value %f\r\n", value);
chrta 0:39468e6d5d62 26 pc.printf("Read value %f mV\r\n", value * 3300.0f);
chrta 0:39468e6d5d62 27 float temperature = -(((value * 3300.0f) - 577.3f) / 2.29f);
chrta 0:39468e6d5d62 28 pc.printf("Read temperature (about) %f deg C\r\n", temperature);
chrta 0:39468e6d5d62 29 myled = !myled;
chrta 0:39468e6d5d62 30 wait(1);
chrta 0:39468e6d5d62 31 }
chrta 0:39468e6d5d62 32 }