| Functions | |
| void | hal_flash_page_erase (uint8_t pn) | 
| void | hal_flash_byte_write (uint16_t a, uint8_t b) | 
| void | hal_flash_bytes_write (uint16_t a, const uint8_t *p, uint16_t n) | 
| uint8_t | hal_flash_byte_read (uint16_t a) | 
| void | hal_flash_bytes_read (uint16_t a, uint8_t *p, uint16_t n) | 
| Hardware dependencies | |
| This sections contains hardware specific flash definitions. These definitions are not used inside the Flash HAL directly, but can become handy for the user of the Flash HAL. | |
| #define | HAL_FLASH_PAGE_SIZE 512 | 
| #define | HAL_DATA_NV_BASE_ADDRESS 0xFE00 | 
| #define | HAL_DATA_NV_FLASH_PAGES 1 | 
| #define | HAL_DATA_NV_FLASH_PN0 31 | 
| #define | HAL_DATA_NV_FLASH_PN1 31 | 
| #define HAL_FLASH_PAGE_SIZE 512 | 
Number of bytes per Flash page.
Definition at line 33 of file hal_flash_hw.h.
| #define HAL_DATA_NV_BASE_ADDRESS 0xFE00 | 
Start (xdata) address for "Non Volatile Data Memory".
Used by the EEPROM library.
Definition at line 40 of file hal_flash_hw.h.
| #define HAL_DATA_NV_FLASH_PAGES 1 | 
Defines the number of physical Flash pages used by one "Non Volatile Data Memory" page.
Definition at line 46 of file hal_flash_hw.h.
| #define HAL_DATA_NV_FLASH_PN0 31 | 
Defines the first physical flash page to which one "Non Volatile Data Memory" is mapped.
Used by the EEPROM library.
Definition at line 54 of file hal_flash_hw.h.
| #define HAL_DATA_NV_FLASH_PN1 31 | 
Definition at line 56 of file hal_flash_hw.h.
| void hal_flash_page_erase | ( | uint8_t | pn ) | 
Function to erase a page in the Flash memory
| pn | Page number | 
Definition at line 21 of file hal_flash.c.
{ 
  // Save interrupt enable state and disable interrupts:
  F0 = EA;
  EA = 0;
  // Enable flash write operation:
  WEN = 1;
 
  // Write the page address to FCR to start the page erase operation. This
  // operation is "self timed" when executing from the flash; the CPU will
  // halt until the operation is finished:
  FCR = pn;
  // When running from XDATA RAM we need to wait for the operation to finish:
  while(RDYN == 1)
    ;
    
  WEN = 0;
  
  EA = F0; // Restore interrupt enable state  
}
| void hal_flash_byte_write | ( | uint16_t | a, | 
| uint8_t | b | ||
| ) | 
Function to write a byte to the Flash memory
| a | 16 bit address in Flash | 
| b | byte to write | 
Definition at line 44 of file hal_flash.c.
{
  static uint8_t xdata *pb;
    
  // Save interrupt enable state and disable interrupts:
  F0 = EA;
  EA = 0;
  
  // Enable flash write operation:
  WEN = 1;
  
  // Write the byte directly to the flash. This operation is "self timed" when
  // executing from the flash; the CPU will halt until the operation is
  // finished:
  pb = (uint8_t xdata *)a;
  *pb = b; //lint -e613 "Null pointer ok here"
  // When running from XDATA RAM we need to wait for the operation to finish:
  while(RDYN == 1)
    ;
  WEN = 0;
  EA = F0; // Restore interrupt enable state
}
| void hal_flash_bytes_write | ( | uint16_t | a, | 
| const uint8_t * | p, | ||
| uint16_t | n | ||
| ) | 
Function to write n bytes to the Flash memory
| a | 16 bit address in Flash | 
| *p | pointer to bytes to write | 
| n | number of bytes to write | 
Definition at line 70 of file hal_flash.c.
{
  static uint8_t xdata *pb;
  // Save interrupt enable state and disable interrupts:
  F0 = EA;
  EA = 0;
  // Enable flash write operation:
  WEN = 1;
  // Write the bytes directly to the flash. This operation is
  // "self timed"; the CPU will halt until the operation is
  // finished:
  pb = (uint8_t xdata *)a;
  while(n--)
  {
    *pb++ = *p++;
    //
    // When running from XDATA RAM we need to wait for the operation to
    // finish:
    while(RDYN == 1)
      ;
  }
  WEN = 0;
  EA = F0; // Restore interrupt enable state
}
| uint8_t hal_flash_byte_read | ( | uint16_t | a ) | 
Function to read a byte from the Flash memory
| a | 16 bit address in Flash | 
Definition at line 100 of file hal_flash.c.
{
  uint8_t xdata *pb = (uint8_t xdata *)a;
  return *pb;
}
| void hal_flash_bytes_read | ( | uint16_t | a, | 
| uint8_t * | p, | ||
| uint16_t | n | ||
| ) | 
Function to read n bytes from the Flash memory
| a | 16 bit address in Flash | 
| *p | pointer to bytes to write | 
| n | number of bytes to read | 
Definition at line 106 of file hal_flash.c.
{  
  uint8_t xdata *pb = (uint8_t xdata *)a;
  while(n--)
  {
    *p = *pb;
    pb++;
    p++;
  }
}
 1.7.2
 1.7.2