summaryrefslogtreecommitdiff
path: root/digital/zigbit/bitcloud/stack/Components/HAL/drivers/OFD/src/ofdIntFlashRead.s90
blob: 9fc8e941d63f3fbbcb722920651286d6109f838a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**************************************************************************//**
  \file  ofdIntFlashRead.s90

  \brief Implementation of internal flash reading.

  \author
      Atmel Corporation: http://www.atmel.com \n
      Support email: avr@atmel.com

    Copyright (c) 2008-2011, Atmel Corporation. All rights reserved.
    Licensed under Atmel's Limited License Agreement (BitCloudTM).

  \internal
    History:
      19/02/10 A. Khromykh - Created
*******************************************************************************/

/*******************************************************************************
Reads byte from internal flash
Parameters:
  R19:R18:R17:R16 - Byte address into flash.
Returns:
  R16 - read byte from flash.
*******************************************************************************/
PUBLIC ofdReadInternalFlash
RSEG CODE
ofdReadInternalFlash:
    push  r31                                    ; Store Z to stack
    push  r30                                    ; Store Z to stack
    in    r19,  0x3B                             ; Save RAMPZ.
    out	  0x3B, r18                              ; Load RAMPZ with the MSB of the address.
    movw  r31:r30, r17:r16                       ; Move low bytes of address to ZH:ZL from R17:R16
    elpm  r16,  Z                                ; Extended load program memory from Z address
    out	  0x3B, r19                              ; Restore RAMPZ register.
    pop   r30                                    ; Restore Z
    pop   r31                                    ; Restore Z
    ret                                          ; return from function

; eof ofdIntFlashRead.s90
END