CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

EEPROM Write problem in 18f66k22

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
veerabahu



Joined: 20 Aug 2013
Posts: 16

View user's profile Send private message

EEPROM Write problem in 18f66k22
PostPosted: Sun Nov 16, 2014 8:23 am     Reply with quote

Hi experts,

I am developing a project in 18f66k22 with GLCD. The problem is EEPROM, i can't able to write a data into internal & external EEPROM. I googled & i came to know that need to disable the write protection option for EEPROM. But i didn't get the procedure to disable the write protection. I think this will be the problem. Can anyone please help me to solve this issue.

Thanks in advance
Veera
Ttelmah



Joined: 11 Mar 2010
Posts: 19504

View user's profile Send private message

PostPosted: Sun Nov 16, 2014 9:35 am     Reply with quote

#fuses NOCPD

This is a 'read the data sheet' problem at this point.

This though will have no effect on an external EEPROM. For this it is down to how the external EEPROM is connected, what chip it is, and what protection options this chip has?.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Sun Nov 16, 2014 9:58 am     Reply with quote

Quote:
i can't able to write a data into internal & external EEPROM.

The fact that you can't make either one work, makes it very unlikely
that it's caused by write protection. You're probably just not doing
it correctly, or your PIC is not running.
jgschmidt



Joined: 03 Dec 2008
Posts: 184
Location: Gresham, OR USA

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Sun Nov 16, 2014 10:23 am     Reply with quote

I'm using the same chip with version 4.135 and the following setup:

Code:
#include <18F26K22.h>

#FUSES NOWDT          //No Watch Dog Timer
#FUSES NOPUT          //No Power Up Timer
#FUSES MCLR           //Allow reset button
#FUSES NOBROWNOUT     //No brownout reset

#use delay(internal=64M,clock_out)

//------ EEPROM INT16 MACROS CCS Forum Post # 40941 by Michael Bradley
// a few internal eeprom macro wrappers

#define mReadByte(addr)         read_eeprom(addr)
#define mWriteByte(addr,data)   write_eeprom(addr,data)

// little endian - remember to increment addr by 2 !!!!
#define mReadWord(addr)         make16( read_eeprom(addr + 1), read_eeprom(addr) )
#define mWriteWord(addr, data)  { write_eeprom(addr, make8(data,0) ); write_eeprom(addr + 1, make8(data,1)); }


and it works great for reading and writing internal EEPROM.
_________________
Jürgen
www.jgscraft.com
Ttelmah



Joined: 11 Mar 2010
Posts: 19504

View user's profile Send private message

PostPosted: Sun Nov 16, 2014 10:43 am     Reply with quote

You need to be fractionally 'beware'....

There have been a number of problems with particular compiler versions, where CCS changed the 'defaults' on some fuses. With your compiler, it is defaulting to 'no protection', but there is no guarantee that this will be the case in the future. Always better to actually specify everything. Smile

However as you see, I agree with PCM programmer, that something else is almost certainly the problem, since the internal fuse has no effect whatever on an external EEPROM....
jgschmidt



Joined: 03 Dec 2008
Posts: 184
Location: Gresham, OR USA

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Sun Nov 16, 2014 1:07 pm     Reply with quote

Thanks for the warning about the NOCPD fuse. I haven't needed it so far but I'll add it to my default setup.
_________________
Jürgen
www.jgscraft.com
veerabahu



Joined: 20 Aug 2013
Posts: 16

View user's profile Send private message

I tried with NOCPD,but it didn't work for me
PostPosted: Mon Nov 17, 2014 8:20 am     Reply with quote

Hi Ttelmah,

As per your advice i tried with #fuses NOCPD, but it didn't work for me. I don't know what mistake i am doing.

This is my code, I am using CCS 4.11 ver and 16Mhz is my crystal value. Please guide me to get out of this problem.

Code:
#include <18F66K22.h>
#FUSES HS          //No Watch Dog Timer
#FUSES NOWDT          //No Watch Dog Timer
#FUSES NOPUT          //No Power Up Timer
#FUSES NOBROWNOUT     //No brownout reset
#FUSES NOCPD
#use delay(clock=16000000)

#include <hdn64s.c>
#include <graphics.c>


void main()

   char customtext[20]={0};
   unsigned int8 ui8Value=0;
   glcd_init(ON);
   delay_ms(1000);       
   glcd_fillScreen(0); 
   glcd_rect(0, 0, 125, 63, NO, ON);
   strcpy(customtext,"EEPROM TEST ");
   glcd_text57(25, 10, customtext,1,ON);
   delay_ms(1000);
   write_eeprom(5,22);
   delay_ms(100);
   ui8Value=read_eeprom(5);
   sprintf(customtext,"%u",ui8Value);
   glcd_text57(30, 25, customtext,1,ON);
   delay_ms(1000);   
   
}
Ttelmah



Joined: 11 Mar 2010
Posts: 19504

View user's profile Send private message

PostPosted: Mon Nov 17, 2014 8:31 am     Reply with quote

4.11, is not a CCS version. They are in the format 4.xxx always three digits. Look at the top of the .lst file for the version, and tell us it.
If it is 4.011, then 'give up hope'. That was 'at best' a beta, and long before V4 started to work. It was about 4.065, before it became useable. Something like a five year old version...
veerabahu



Joined: 20 Aug 2013
Posts: 16

View user's profile Send private message

PostPosted: Mon Nov 17, 2014 8:43 am     Reply with quote

ya.. Actually its CCS PCH C Compiler, Version 4.110
jgschmidt



Joined: 03 Dec 2008
Posts: 184
Location: Gresham, OR USA

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Mon Nov 17, 2014 2:48 pm     Reply with quote

= = = deleted = = =

Oops, if anyone saw the original reply, I was working with 26K22, not 66K22. My 26K22 works fine with the code shown (I replaced the GLCD with printf statements) but I don't have a 66K22 to work with. Sorry for any confusion I may have caused.
_________________
Jürgen
www.jgscraft.com
Ttelmah



Joined: 11 Mar 2010
Posts: 19504

View user's profile Send private message

PostPosted: Tue Nov 18, 2014 1:42 am     Reply with quote

OK. With 4.110, I suspect the problem is with the compiler version. The 66K22, was only added a couple of versions before, and CCS often get the device database 'wrong' when a chip is newly added. The chip is not present in 4.107. There were definately problems with quite a few chips when they were first added.
You probably need to write your own EEPROM code, or update the compiler.
veerabahu



Joined: 20 Aug 2013
Posts: 16

View user's profile Send private message

PostPosted: Wed Nov 19, 2014 12:57 am     Reply with quote

Thanks for your reply Ttelmah, This is purely version problem. Its worked in ver5.015.

Thanks for eveyrone.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group