RCM5700 static storage

Hi all,

New to Rabbit controllers… I’m working with a RCM5700 to turn it into a web based home controller. I plan to use the I/Os to control various features and monitor various things about the house.

One of the items I plan on is to have the RCM5700 control a 20 zone sprinkler set. In the past when I did this with a PIC I was able to store information about start times, run times in flash since they were not updated vary frequently.

In studying the RCM5700 I’m a little confused between flash and user blocks. Is there a memory map (graphical or text) for the memory usage that might help me to understand what section of memory would be best to use?

Also what Dyn C functions access the suggested section?

Thanks in advance!

Hum… I’m not feeling really good about the support activity on this board. I’ve participated in quite a few micro-controller discussion boards and their was way more activity than this…

Is Rabbit really that infrequently used that the board doesn’t have more traffic?

:frowning:

The board does not get a lot of traffic. There are a couple of Rabbit employees who come in from time to time and answer questions, but I suspect it is not their main job function.

The board has been plagued by spammers recently, and that may have driven people away…

It seems that most of the questions that do get asked are of the nature that there would be no need to ask them if the poster spent some time reading the manuals. It’s probably the case that those who could answer them are too busy doing real work to be bothered (perhaps not even to come to the board in the first place). Not necessarily an indication that “nobody uses Rabbits” but maybe more a reflection on the nature of the customer base.

Your question, btw, falls into the category I described. The functions you want to use are readUserBlock and writeUserBlock.

Well that is sad… I’ve been involved in a number of different micro-controllers and the user boards have usually been the BEST place to ask “dumb” questions when new to the device. On a board I used to frequent for a MicroChip C compiler there were literally hundreds of posts per day. Often information could be found by just looking through the threads (I’ve done this here too…)

It seems in this case that this board is NOT friendly towards that kind of question. To set you straight… I have been reading the manuals and if you look at my post I mentioned I was “confused” by static versus user blocks and which ones to use. I have still yet to find a memory map for this device that lets me know how big the user block area is.

In my reading so far I have not seen ONE suggested use for either of these available storage areas. Generally the experience of someone that has done it before can save LOTS of time when digging through examples and manuals.

I appreciate your suggestion to use user blocks… I’ll try to read further and will try very very hard not to burden the board with ‘dumb’ questions. sigh…

I’m not trying to discourage you from posting questions. That really just makes things worse, if peole get discouraged and go away. Thebaord is clearly below critical mass right now. Hopefully, some people reading this will be encouraged to be more active in providing answers to peoples’ questions. I’ve seen posts from the Rabbit employees that say this forum is really for customers to bounce ideas off each other or something like that, so I doubt we’ll be getting much help from Rabbit…

As far as the documentation goes, I think Rabbit does a pretty good job of documenting things. The main confusion people have seems to be that you really ahve to wade through several manuals to get the full picture (e.g., RCM5700 User’s Manual, Rabbit 5000 Microprocessor User’s Manual, Dynamic C User’s Manual, Dynamic C Function Reference Manual - and then there are some products that have a Designer’s Handbook as well). And that’s a lot of doc to read, but I’m not sure there’s really any other way around it.

I found out that the user block is too small for my needs.
(if you need small area of memory, the the user block is fine).

This is the steps that i’m using for accessing the flash:

Reset banks, you can’t write to a flash memory if the memory were you want to write is not reset (flashed), the problem that it goes in banks & you have to reset the all bank:

void DB_Reset(char bank)
{
unsigned long addr;

 addr = lcBaseAdrress + bank*0x10000;

 _EraseFlashRange(addr, addr);

}

banks are in the size of 0x10000.

I use: lcBaseAdrress = 0x80000;

which is way above my program, but below the system staff.

All data in this bank is erased, so you need to rewrite whatever is lost.

Now to write into the memory is done by:

_ProgramFlashBlock(, , < size of what you want to write in bytes>);

You have no problem to write randomly & in any size to the flash as long that you don’t write to bytes in flash that are already been written into.

To read from flash use:

xmem2root(, , );

I think you have about 100000 times to write into one byte of flash memory.

I hope that it helped.

I’m also building an home automation system with the RCm5700.

Meir

If you need help quickly, the best thing to do is email Tech Support directly at support@rabbit.com

I hope this helps :slight_smile:

Thanks all for the replies… I studied the user block area and I agree it seems a bit small for what I might put in there.

I really appreciate the sample code and info on flash. I expect the primary use will be to store data which will not be modified often so I’ll check that out.

I wasn’t expecting rabbit employees to jump in and give immediate board assistance and I do try very hard not to generate support requests for “dumb questions”. So I posted here first… I was hoping for direction and I got that and more and thanks for that.