PDA

View Full Version : how to save value in pic16f84a



ibra
- 5th August 2007, 16:13
hi..

i want to save a value in pic16f84a, and if i cut off the power, the value must be still saved.

how can i do this??

Archilochus
- 5th August 2007, 17:08
hi..

i want to save a value in pic16f84a, and if i cut off the power, the value must be still saved.

how can i do this??

Use the on-board EEPROM. If I remember right, the '84 has 64 bytes available.

Arch

mackrackit
- 5th August 2007, 18:49
http://www.picbasic.co.uk/forum/showthread.php?t=5649

b1arrk5
- 6th August 2007, 02:33
When you are first programming the chip, use the EEPROM command. Do this to set an initial value, don't depend upon it being zero from the factory. To change it while your program is running use the Write command, and to read your value use Read.

Jerry.

JanH
- 9th August 2007, 22:53
I might misunderstand you, but you just want to save a value in a PIC16F84 to use again after powerdown ?

Why not use the WRITE and READ command. ?

Below is some code snippets I use on a motor control.
When I switch power off I want to keep a value for the next time I switch power on again.

==== Start of program ====
...
...
read 1, Min_Start 'Read stored value of Minimal start speed
if Min_Start=255 then Min_Start=0 'Min_start was not stored
...
...
...
Write 1, Min_Start 'Somewhere in program the value is written.
'to Location 1

================================================== ========

ibra
- 10th August 2007, 08:04
JanH..

i used this method as you wrote, and like you for control stepper motor.
but it did not work.

i posted a thread " problem with stepper " and attached my code for this.

here is my code, you can see and say.

mackrackit
- 10th August 2007, 14:51
janH,
The link I gave in post #3 http://www.picbasic.co.uk/forum/showthread.php?t=5649 is a discussion on how to force the PIC to save on a power down.

ibra,
I gave you some sample code for your stepper motors.("problem with stepper ") Did it work? If not, what happened?

ibra
- 11th August 2007, 12:29
mackrackit..

the sample code you wrote did not work, the stepper just moves to left for ever.


i changed my last code ..

i put a delay after read and write instructions, and i changed the place of write instruction.
after these changes the stepper just do its job in the first stage ( when p = 13 and return back) ...then it start to go left and right randomly.

after all this i read the eeprom postion of P, it gives me a big value than 13 !!.

i think that there some mistakes in logical operators i used..but i dont know where ?

this is my new code..

any idea plz??

mackrackit
- 11th August 2007, 13:22
ibra,

The code I gave was trying to show where, when, and how to write to eeprom. It should not have changed the operation? At some point 13 should have shown up.:confused:

I do not have a stepper on the bench at the moment so this is untested on my part.

The idea is to have positive data written after every CW step (P=P+1)and negative data after every CCW step(P=P-P).


IF PORTB.6 = 0 AND P<=13 THEN ;go RIGHT

GOSUB RIGHT

ELSE

IF PORTB.7 = 0 AND P>=1 THEN ;go LEFT

GOSUB LEFTThis looks like the random problem. P<=13 -- P>=1 Stuck between these values. It would have to be greater than 13 or less than 1 to stop.

Or, make PORTB 6 or 7 high in hardware and tell the PIC what to do when they are high. (STOP)

I will try to test with a stepper in a day or so.