Add conversion formula for internal temperature sensor. Use macros istead BV.
authorasterix <asterix@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 28 Sep 2010 08:16:43 +0000 (08:16 +0000)
committerasterix <asterix@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 28 Sep 2010 08:16:43 +0000 (08:16 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4321 38d2e660-2303-0410-9eaa-f027e97ec537

boards/ek-lm3s1968/hw/hw_adc.h

index 902a8b470bd51f2f5e4bbd7bee3b4270b83822d5..53ba119f9122cc30d70926de03d4a011530670fb 100644 (file)
 INLINE uint16_t hw_readRawTemp(void)
 {
        /* Trig the temperature sampling */
-       HWREG(ADC0_BASE + ADC_O_PSSI) = BV(3);
+       HWREG(ADC0_BASE + ADC_O_PSSI) |= ADC_PSSI_SS3;
 
        return (uint16_t)HWREG(ADC0_BASE + ADC_O_SSFIFO3);
 }
 
-INLINE void hw_initIntTemp(void)
+/*
+ * Return the cpu core temperature in degrees C*100
+ */
+INLINE uint16_t hw_readIntTemp(void)
 {
+       /* Trig the temperature sampling */
+       HWREG(ADC0_BASE + ADC_O_PSSI) |= ADC_PSSI_SS3;
 
+       return (uint16_t)(14750 - ADC_RANGECONV(HWREG(ADC0_BASE + ADC_O_SSFIFO3), 0, 300) * 75);
+}
+
+INLINE void hw_initIntTemp(void)
+{
+       /* Enable ADC0 clock */
        SYSCTL_RCGC0_R |= SYSCTL_RCGC0_ADC0;
 
        /* Why this??? */
@@ -67,9 +78,9 @@ INLINE void hw_initIntTemp(void)
        /* Set trigger event to programmed (for all sequence) */
        HWREG(ADC0_BASE + ADC_O_EMUX) = 0;
        /* Enalbe read of temperature sensor */
-       HWREG(ADC0_BASE + ADC_O_SSCTL3) = BV(3);
+       HWREG(ADC0_BASE + ADC_O_SSCTL3) |= ADC_SSCTL3_TS0;
        /* Enable sequence S03 (single sample on select channel) */
-       HWREG(ADC0_BASE + ADC_O_ACTSS) = BV(3);
+       HWREG(ADC0_BASE + ADC_O_ACTSS) |= ADC_ACTSS_ASEN3;
 }
 
 #endif /* HW_ADC_H */