2006-01-26 08:35 PM
2006-01-11 02:05 AM
Hello,
I need to use the internal EEPROM of the st72334. I read the datasheet, but I can't figure out how to use it. Could someone please explain me step by step (I'm a beginner) how I'm supposed to write and read data from the EEPROM? All I understood is that I need to change the LAT bit if I need the Read or Write mode. But I do not know how to change the memory adresses of the data I want to send to the EEPROM. And I also do not know where to put the data I want to send to the EEPROM. Thanks a lot. Philippe2006-01-11 10:27 PM
Here it's a simple code for writing in data eeprom;
DataEEprom ld a,#%00000010 ld EEPCR,a ld a,#77 ld {$0C00},a ld a,#%00000011 ld EEPCR,a btjt EEPCR,#1,* ret with this routine I write ''77'' into ''0C00'' memory location,then data eeprom... With this code,I read what i wrote into ''0C00'' memory location; ld a,#%00000000 ld EEPCR,a ld a,{$0C00} I hope this can help you ;)2006-01-12 11:21 AM
Thanks a lot. I will try that code this week end. I'll tell you if it worked. Thanks again. :)
Philippe2006-01-19 02:29 AM
Hello again,
The code you gave me is great, but I'm working in C with Cosmic Compiler. I've searched on the net and I know how to write in an EEPROM, using the LAT bit and @eeprom. But I need to write a table of datas in the EEPROM, and I don't know how to change the address where I'm writing, automatically : without having to write myself the next address every time. Hoping someone can help... Thank you. Philippe [ This message was edited by: Philippe13 on 19-01-2006 16:01 ]2006-01-19 09:12 PM
Hi Philippe,
just for your study I'll append two routines, I use to write to the EEProm. Hope it helps and there are sufficient comments to discover how the routines work. Regards WoRo ________________ Attachments : EEP_example.txt : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I08c&d=%2Fa%2F0X0000000bUO%2F.CYdOrgYEcpG.gcZbx5UMs0pdPOlxrK7xzXX2a_B1E4&asPdf=false2006-01-23 02:54 AM
Quote:
I'm working in C with Cosmic Compiler... I don't know how to change the address where I'm writing, automatically ... I'm not sure I understand your problem, but just declare all the variables you want as @eeprom (including an array of them, if you want) and the compiler will handle the whole thing automatically; every variable will be given an address and the eeprom write library routine will be called each time one of these varaibles is given a new value... Now, if what you want to do is write a whole table at once, there might be a more efficent way to do it, I'd have to check. Hope it helps. Luca (Cosmic)2006-01-24 12:44 AM
Luca,
I fear I could ''burn'' my ST7, if I do something wrong... :o If I do : @eeprom unsigned int a; in the main.c, and then : +seg .eeprom -b0x0C00; in the .lkf, everything is OK. (am I doing it right?) But if I do : @eeprom unsigned short tab[4]; the compiler shows this error message : #error cast7 \s28s.cx2:1053 value too large so I don't really know how to declare a table in the EEPROM. Thank you. Philippe2006-01-24 12:50 AM
WoRo,
Thank you for your answer, I think I understand your code : destination is the pointer pointing in the EEPROM. However I do not know how to define destination : if I do : char* destination; destination = 0x0C00; the compiler shows this message : #error cpst7 main.c:26(0+11) redeclared external destination so I don't know what to do... :-? Thank you. Philippe2006-01-24 10:13 PM
Hi Philippe,
to write one byte with the given procedures you simply enter the value and the target address (pointer) to the call EEP_wChar(c_value, pC_EEP_target); To write a number of bytes you have to enter the address (pointer) of the source, the address (pointer) of the target and the number (value) to the call EEP_wBlock(pC_source, pC_EEP_target, n); For better understanding I'll give you an example: ... char* pC_EEPROM; /* pointer to the destination */ char my_table[20]; /* table of values */ .... pC_EEPROM = (char*)0x0C07; EEP_wChar(my_table[7], pC_EEPROM); /* writes the value of my_table[7] to 0x0C07 */ /* -- or -- */ EEP_wChar(my_table[7], (char*)0x0c07); ... pC_EEPROM = (char*)0x0c00 EEP_wBlock(&my_table[0], pC_EEPROM, 6); /* writes the values from my_table[0] to my_table[5] to the EEProm */ ... Regards WoRo