S12G128 Write to EEPROM

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

S12G128 Write to EEPROM

ソリューションへジャンプ
1,306件の閲覧回数
kimkang-mok
Contributor II

Hi, I want to write to EEPROM in S12G128.

But my CW(Code Warrior) show me the error message (Label 'Send_Command Undefined).

This is my code.


byte EEPROM_Program(word address, word *ptr, byte number_of_words)
{
word i;

if((number_of_words < 1) || (number_of_words > 4))
return LENGTH_OUT_OF_RANGE;

// check if address is aligned (global address [0] != 0)
if((address & 0x0001) != 0)
return MISALIGEND_ADDRESS;

// check if the word(s) is/are erased
if((EEPROM_Erase_Verify_Section(address, number_of_words)) == NON_ERASED)
return NON_ERASED;

while(FSTAT_CCIF == 0);
FSTAT = 0x30;

FCCOBIX = 0x00;
FCCOB = 0x1100;

FCCOBIX = 0x01;
FCCOB = address;

for(i=1; i<=number_of_words; i++)
{
FCCOBIX = i+1;
FCCOB = *ptr;
ptr++;
}

asm JSR Send_Command;

if((FSTAT & (FSTAT_ACCERR_MASK | FSTAT_FPVIOL_MASK)) != 0) return ACCESS_ERROR;
if(FSTAT_MGSTAT != 0) return VERIFICATION_FAILED;

return OK;
}

What am I forgot something?

1 解決策
1,094件の閲覧回数
lama
NXP TechSupport
NXP TechSupport

Hi,

I think your code is missing the routine you are trying to call by command. The code looks like code taken from some example provided by us (NXP technical support).

asm JSR Send_Command

The routine is an array of ASM commands (placed in the RAM) which must be executed out of the memory which is currently E/W. In order to avoid accidental access if the routine is place either in EEPROM or Flash EEPROM it is placed inside the RAM.

It, of course, must be defined somewhere:

//******************************************************************************
//EEPROM Send_Command
//******************************************************************************
//this function is stored in RAM memory
//in C language:
//  {
//    FSTAT_CCIF = 1;         //launch command
//    while(FSTAT_CCIF == 0); //wait for done
//  }
static byte Send_Command[]=
{
  0x1C, 0x01, 0x06, 0x80, 0x1F, 0x01, 0x06, 0x80, 0xFB, 0x3D
};
//******************************************************************************

Best regards,

Ladislav

元の投稿で解決策を見る

2 返答(返信)
1,095件の閲覧回数
lama
NXP TechSupport
NXP TechSupport

Hi,

I think your code is missing the routine you are trying to call by command. The code looks like code taken from some example provided by us (NXP technical support).

asm JSR Send_Command

The routine is an array of ASM commands (placed in the RAM) which must be executed out of the memory which is currently E/W. In order to avoid accidental access if the routine is place either in EEPROM or Flash EEPROM it is placed inside the RAM.

It, of course, must be defined somewhere:

//******************************************************************************
//EEPROM Send_Command
//******************************************************************************
//this function is stored in RAM memory
//in C language:
//  {
//    FSTAT_CCIF = 1;         //launch command
//    while(FSTAT_CCIF == 0); //wait for done
//  }
static byte Send_Command[]=
{
  0x1C, 0x01, 0x06, 0x80, 0x1F, 0x01, 0x06, 0x80, 0xFB, 0x3D
};
//******************************************************************************

Best regards,

Ladislav

1,094件の閲覧回数
kimkang-mok
Contributor II

Thanks. I solved this problem to your answer.

0 件の賞賛
返信