X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=BaseTinyFirmware%2FGCC%2FADC.c;h=3ed65b8b43c633d55f1bd4b8edf054bb9ba08569;hb=65612c4c7df34cdae10f9427ace6fd9e9e430d05;hp=004ba8dc6cbcddd222e5eb368805e5ff740a9580;hpb=5b95e754a4af80c7389486ee874ac07c166a0867;p=avr_bc100.git diff --git a/BaseTinyFirmware/GCC/ADC.c b/BaseTinyFirmware/GCC/ADC.c index 004ba8d..3ed65b8 100644 --- a/BaseTinyFirmware/GCC/ADC.c +++ b/BaseTinyFirmware/GCC/ADC.c @@ -45,7 +45,7 @@ //****************************************************************************** // ADC status struct. //! \brief Holds sampled data and ADC-status -ADC_Status_t ADCS; +volatile ADC_Status_t ADCS; /*! \brief Indicates maximum battery voltage. @@ -159,6 +159,7 @@ ISR(ADC_vect) // Scale voltage according to jumper setting. ADCS.VBAT = ScaleU(eeprom_read_byte(&VBAT_RANGE), (unsigned int)ADC); // ADC is a short. + __asm__ __volatile__ ("NOP"::); Next=0x17; // Signed = TRUE; // Next conversion is bipolar. Halves sensitivity! break; @@ -170,10 +171,10 @@ ISR(ADC_vect) // Scale sample according to jumper setting, handle negative numbers. if (ADC > 511) { - ADCS.IBAT = -(signed int)ScaleI(eeprom_read_byte(&VBAT_RANGE), - (1024 - (ADC-ADCS.ADC5_G20_OS))); + ADCS.IBAT = -(signed int)ScaleI(eeprom_read_byte(&VBAT_RANGE), + (1024 - (ADC-ADCS.ADC5_G20_OS))); } else if (ADC > 0) { - ADCS.IBAT = ScaleI(eeprom_read_byte(&VBAT_RANGE), (ADC-ADCS.ADC5_G20_OS)); + ADCS.IBAT = ScaleI(eeprom_read_byte(&VBAT_RANGE), (ADC-ADCS.ADC5_G20_OS)); } else { ADCS.IBAT = 0; } @@ -206,15 +207,15 @@ ISR(ADC_vect) ADMUX = (1<