Index: RTC.c =================================================================== diff -u -r8dc8551a200e8353a563828ccc8dcb4ad9f47bfb -re053a222c52e84f31503ed106cf64c2ca920029e --- RTC.c (.../RTC.c) (revision 8dc8551a200e8353a563828ccc8dcb4ad9f47bfb) +++ RTC.c (.../RTC.c) (revision e053a222c52e84f31503ed106cf64c2ca920029e) @@ -458,11 +458,13 @@ RTC_RAM_STATUS_T writeToRAM( U32 address, U08* data, U32 length ) { RTC_RAM_STATUS_T status = RTCRAMStatus; - U16 castedAddress = (U16)( address & MASK_OFF_MSW ); + U16 maskedAddress = (U16)( address & MASK_OFF_MSW ); + U16 castedHighAddress = maskedAddress / BITS_8_FULL_SCALE; + U16 castedLowAddress = maskedAddress % BITS_8_FULL_SCALE; if ( status == RTC_RAM_STATUS_IDLE ) { - if ( castedAddress > MAX_ALLOWED_RTC_RAM_ADDRESS ) + if ( maskedAddress > MAX_ALLOWED_RTC_RAM_ADDRESS ) { status = RTC_RAM_STATUS_ILLEGAL_ADDRESS; } @@ -474,14 +476,16 @@ { U08 i; - RTCRAMStatus = status = RTC_RAM_STATUS_IN_PROGRESS; - RTCRAMState = RTC_RAM_STATE_BUSY; - hasWriteToRAMRequested = TRUE; - RAMBufferLength = length; + RTCRAMStatus = RTC_RAM_STATUS_IN_PROGRESS; + status = RTC_RAM_STATUS_IN_PROGRESS; + RTCRAMState = RTC_RAM_STATE_BUSY; + hasWriteToRAMRequested = TRUE; + RAMBufferLength = length; prepRAMBuffer [ RTC_PREP_RAM_INDEX ] = RTC_PREP_RAM_READ_WRITE; - prepRAMBuffer [ RTC_RAM_HIGH_ADDRESS_INDEX ] = 0x0000; - prepRAMBuffer [ RTC_RAM_LOW_ADDRESS_INDEX ] = castedAddress; - txBuffer [ BUFFER_INDEX_0 ] = RTC_WRITE_TO_RAM; + prepRAMBuffer [ RTC_RAM_HIGH_ADDRESS_INDEX ] = castedHighAddress; + prepRAMBuffer [ RTC_RAM_LOW_ADDRESS_INDEX ] = castedLowAddress; + txBuffer [ BUFFER_INDEX_0 ] = RTC_WRITE_TO_RAM; + for ( i = 0; i < RAMBufferLength; i++ ) { txBuffer [ i + BUFFER_INDEX_1 ] = data [ i ]; @@ -509,11 +513,13 @@ RTC_RAM_STATUS_T readFromRAM( U32 address, U32 length ) { RTC_RAM_STATUS_T status = RTCRAMStatus; - U16 castedAddress = (U16)( address & MASK_OFF_MSW ); + U16 maskedAddress = (U16)( address & MASK_OFF_MSW ); + U16 castedHighAddress = maskedAddress / BITS_8_FULL_SCALE; + U16 castedLowAddress = maskedAddress % BITS_8_FULL_SCALE; if ( status == RTC_RAM_STATUS_IDLE ) { - if ( castedAddress > MAX_ALLOWED_RTC_RAM_ADDRESS ) + if ( maskedAddress > MAX_ALLOWED_RTC_RAM_ADDRESS ) { status = RTC_RAM_STATUS_ILLEGAL_ADDRESS; } @@ -525,14 +531,16 @@ { U08 i; - status = RTCRAMStatus = RTC_RAM_STATUS_IN_PROGRESS; - RTCRAMState = RTC_RAM_STATE_BUSY; - hasReadFromRAMRequested = TRUE; - RAMBufferLength = length; + status = RTC_RAM_STATUS_IN_PROGRESS; + RTCRAMStatus = RTC_RAM_STATUS_IN_PROGRESS; + RTCRAMState = RTC_RAM_STATE_BUSY; + hasReadFromRAMRequested = TRUE; + RAMBufferLength = length; prepRAMBuffer[ RTC_PREP_RAM_INDEX ] = RTC_PREP_RAM_READ_WRITE; - prepRAMBuffer[ RTC_RAM_HIGH_ADDRESS_INDEX ] = 0x0000; - prepRAMBuffer[ RTC_RAM_LOW_ADDRESS_INDEX ] = castedAddress; - txBuffer[ BUFFER_INDEX_0 ] = RTC_READ_FROM_RAM; + prepRAMBuffer[ RTC_RAM_HIGH_ADDRESS_INDEX ] = castedHighAddress; + prepRAMBuffer[ RTC_RAM_LOW_ADDRESS_INDEX ] = castedLowAddress; + txBuffer[ BUFFER_INDEX_0 ] = RTC_READ_FROM_RAM; + for ( i = 0; i < RAMBufferLength; i++ ) { txBuffer[ i + BUFFER_INDEX_1 ] = 0x0000;