Christian Taedcke
/
lpc1549_temperature
This example shows how to print the temperature from the LPC1549 temperature sensor.
main.cpp@0:39468e6d5d62, 2014-06-22 (annotated)
- Committer:
- chrta
- Date:
- Sun Jun 22 09:51:10 2014 +0000
- Revision:
- 0:39468e6d5d62
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |