Forum Menu




 


Log in Problems?
New User? Sign Up!
AVR Freaks Forum Index

Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
prflory
PostPosted: Jun 22, 2004 - 09:41 PM
Newbie


Joined: Jun 22, 2004
Posts: 1


Hi,

New to AVR Freaks!

Have a question accessing the EEPROM using Codevision. We are using the EEPROM to store nonvolatile cal/config data for an application. Looks like Codevision wraps up the EEPROM read and writes in their library so all you have to do is declare a variable as eeprom (ex. eeprom int Cal_Value;) and that stores that variable in EEPROM automatically storing a value in EEPROM when you assign it to that variable.

My question is if this is the case when I compile why does Codevision give me a warning that the eeprom variable in uninitialized?? That's the whole point, I don't want it initialized when I start up. I want to be able to use the last value stored in eeprom for this variable before that last power down. Or does initializing an eeprom declared variable only assign a default value that is only stored during the initial chip programming??

Am I missing something? Should I not use the Codevision eeprom declaration and store necessary data in the eeprom manually as described in the AVR ATMega16 user's guide?? Question

Thanks in advance!!
 
 View user's profile Send private message Send e-mail  
Reply with quote Back to top
theusch
PostPosted: Jun 22, 2004 - 09:51 PM
10k+ Postman


Joined: Feb 19, 2001
Posts: 28244
Location: Wisconsin USA

prflory wrote:

... Looks like Codevision wraps up the EEPROM read and writes in their library so all you have to do is declare a variable as eeprom (ex. eeprom int Cal_Value;) and that stores that variable in EEPROM automatically storing a value in EEPROM when you assign it to that variable. ...


Yes, it is pretty transparent except for a couple of caveats like passing pointers (they must be of the type that the called routine expects).

Quote:

My question is if this is the case when I compile why does Codevision give me a warning that the eeprom variable in uninitialized?? That's the whole point, I don't want it initialized when I start up.


I understand your point. An SRAM global variable will indeed be given its intial value at each startup.

A CodeVision EEPROM variable, however, is >>not<< re-initialized every time that your AVR starts up. Rather, the initial values are used to produce the .EEP file at compile time. Then your programming system will/could program the EEPROM when the FLASH is re-programmed.

There are some here that never produce the EEPROM file, choosing to check the uninitialized EEPROM for the erased 0xff value for each byte and then do an initial configuration.

I do it the other way: I give all my EEPROM variables an initial value for a default configuration for a newly programmed system.

Feel secure that the EEPROM won't be re-initialized every startup. I've had all kinds of things in EEPROM on apps where flash became tight--menu strings, conversion factors, pointers to menu strings, etc.

Try a small trivial app with a few global SRAM & EEPROM variables with initializers, and then examine the startup flow in the resulting .LST file. [Remember that if you use AVRStudio to step through the app (a VERY useful exercise), that when you get ready to "Go" you must pre-load your simulator EEPROM values if you use the initializers. In 3.5x it is on the File menu under Up/Download Memories, IIRC.]


Lee
 
 View user's profile Send private message  
Reply with quote Back to top
abohmaid
PostPosted: Aug 26, 2010 - 09:46 AM
Newbie


Joined: Aug 26, 2010
Posts: 15
Location: Egypt

Hello,
I have a project and I want to store in eeprom of my AVR
without putting an initial value in declaration of variables,
I use codevision software,can you help me??
I am waiting....
thanks for this website.
 
 View user's profile Send private message  
Reply with quote Back to top
david.prentice
PostPosted: Aug 26, 2010 - 10:06 AM
10k+ Postman


Joined: Feb 12, 2005
Posts: 19464
Location: Wormshill, England

Code:

int eeprom variable;      // declare a variable in eeprom
...
int some_function()
{
    ...
    variable = 1234;      // give the variable a value.
    ...
}
 
 View user's profile Send private message Send e-mail  
Reply with quote Back to top
abohmaid
PostPosted: Aug 29, 2010 - 02:28 AM
Newbie


Joined: Aug 26, 2010
Posts: 15
Location: Egypt

thanks to you David..
 
 View user's profile Send private message  
Reply with quote Back to top
abohmaid
PostPosted: Sep 01, 2010 - 12:23 PM
Newbie


Joined: Aug 26, 2010
Posts: 15
Location: Egypt

Hello!
I am working with ATMEGA 8535 Ic ,I use codevision ,and a 4*3 keypad for numbers ONLY.
I need a method,that I can use to print strings and characters on the LCD from keypad.
Is that right that I use that keypad ,or I must build a special keypad??
and if I used a special keypad what is the C code shall I use??
thanks in advance.
Question
 
 View user's profile Send private message  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT + 1 Hour
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2006 The PNphpBB Group
Credits