Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Flash.h
- Committer:
- chaithanyarss
- Date:
- 2016-07-03
- Revision:
- 215:570251b23c7b
- Parent:
- 52:0bd68655c651
- Child:
- 217:c63cdba0550f
File content as of revision 215:570251b23c7b:
#include "FreescaleIAP.h"
int strt_add = flash_size() - (4*SECTOR_SIZE);
uint32_t flasharray[256+(3*1024)];
char *nativeflash = (char*)strt_add;
/*Initiation of Flash*/
void FLASH_INIT()
{
uint32_t read[8];
for(int i=0;i<8;i++)
{
read[i] = FCTN_CDMS_RD_FLASH(i);
//printf("\n\r val is read after starting %x ",read[i]);
}
if(read[0] == -1)
for(int j=0;j<8;j++)
{
FCTN_CDMS_WR_FLASH(j,ARR_INITIAL_VAL[j]);
}
else
{
for(int j=0;j<8;j++)
{
read[j] = FCTN_CDMS_RD_FLASH(j);
}
ACS_ATS_STATUS = read[0]>>24;
ACS_TR_XY_SW_STATUS = ((uint8_t)(read[0]>>22))&0x03;
ACS_TR_Z_SW_STATUS = (read[0]>>20)&0x03;
ACS_DETUMBLING_ALGO_TYPE = (read[0]>>19)&0x01;
ACS_STATE = (read[0]>>16)&0x07;
BCN_TX_SW_STATUS = ((uint8_t)(read[0]>>14))&0x03;
BCN_SPND_TX = ((uint8_t)(read[0]>>13))&0x01;
BCN_FEN = ((uint8_t)(read[0]>>12))&0x01;
BCN_LONG_MSG_TYPE = ((uint8_t)(read[0]>>11))&0x01;
EPS_BTRY_HTR_AUTO = ((uint8_t)(read[0]>>10))&0x03;//EPS_BATTERY_HEATER_ENABLE
//now two spares in telemetry[5]
//updating the reset counter
BAE_RESET_COUNTER = ((uint8_t)(read[0]))+1;
read[0]=(read[0]&0xffffff00) | (uint32_t)BAE_RESET_COUNTER;
FCTN_CDMS_WR_FLASH(0,read[0]);
EPS_SOC_LEVEL_12 = (uint8_t)(read[1]>>24);
EPS_SOC_LEVEL_23 = (uint8_t)(read[1]>>16);
ACS_MAG_TIME_DELAY = (uint8_t)(read[1]>>8);
ACS_DEMAG_TIME_DELAY = (uint8_t)read[1];
EPS_BAT_TEMP_LOW = (uint8_t)(read[2]>>24);
EPS_BAT_TEMP_HIGH = (uint8_t)(read[2]>>16);
EPS_BAT_TEMP_DEFAULT = (uint8_t)(read[2]>>8);
ACS_MM_X_COMSN = (uint16_t)(read[3]>>16);
ACS_MM_Y_COMSN = (uint16_t)read[3];
ACS_MG_X_COMSN = (uint16_t)(read[4]>>16);
ACS_MG_Y_COMSN = (uint16_t)read[4];
ACS_MM_Z_COMSN = (uint16_t)(read[5]>>16);
ACS_MG_Z_COMSN = (uint16_t)read[5];
ACS_Z_FIXED_MOMENT = (uint16_t)(read[6]>>16);//assignvalues
}
}
/*Writing to the Flash*/
void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t block)
{
for(int64_t i=0;i<(256+(3*1024));i++)
{
flasharray[i]=nativeflash[i];
}
flasharray[j]=block;
erase_sector(strt_add);
program_flash(strt_add, (char*)&flasharray,4*(256+(1024*3)));
}
/*Reading from Flash*/
uint32_t FCTN_CDMS_RD_FLASH(uint16_t j)
{
for(int64_t i=0;i<(256+(3*1024));i++)
{
flasharray[i]=nativeflash[i];
}
return flasharray[j];
}
