X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=boards%2Fek-lm3s1968%2Fhw%2Fhw_adc.h;h=1f6aeadd6f200eaab6aa0b58214cba231df5e1e7;hb=e5f2bd2aff866d5a3b3c2f22e1a14c244ee44229;hp=53ba119f9122cc30d70926de03d4a011530670fb;hpb=7f9a062b339c086b7a597e0c31b75068379e17c1;p=bertos.git diff --git a/boards/ek-lm3s1968/hw/hw_adc.h b/boards/ek-lm3s1968/hw/hw_adc.h index 53ba119f..1f6aeadd 100644 --- a/boards/ek-lm3s1968/hw/hw_adc.h +++ b/boards/ek-lm3s1968/hw/hw_adc.h @@ -39,7 +39,7 @@ #define HW_ADC_H #include -#include +#include #include @@ -51,6 +51,9 @@ INLINE uint16_t hw_readRawTemp(void) /* Trig the temperature sampling */ HWREG(ADC0_BASE + ADC_O_PSSI) |= ADC_PSSI_SS3; + /* Poll untill acquisition end */ + while (!(HWREG(ADC0_BASE + ADC_O_SSFSTAT3) & ADC_SSFSTAT3_FULL)); + return (uint16_t)HWREG(ADC0_BASE + ADC_O_SSFIFO3); } @@ -62,6 +65,9 @@ INLINE uint16_t hw_readIntTemp(void) /* Trig the temperature sampling */ HWREG(ADC0_BASE + ADC_O_PSSI) |= ADC_PSSI_SS3; + /* Poll untill acquisition end */ + while (!(HWREG(ADC0_BASE + ADC_O_SSFSTAT3) & ADC_SSFSTAT3_FULL)); + return (uint16_t)(14750 - ADC_RANGECONV(HWREG(ADC0_BASE + ADC_O_SSFIFO3), 0, 300) * 75); } @@ -70,8 +76,11 @@ INLINE void hw_initIntTemp(void) /* Enable ADC0 clock */ SYSCTL_RCGC0_R |= SYSCTL_RCGC0_ADC0; - /* Why this??? */ - timer_udelay(1); + /* + * We wait some time because the clock is istable + * and that could cause system hardfault + */ + lm3s_busyWait(10); /* Disable all sequence */ HWREG(ADC0_BASE + ADC_O_ACTSS) = 0;