View previous topic :: View next topic |
Author |
Message |
Guest
|
testing stream of characters @rs23 with minimal ram usage ? |
Posted: Wed Jun 02, 2004 4:36 am |
|
|
how do you test a series of headers(around 60 bytes) received at rx pin without using no more than 20 bytes of RAM? |
|
|
jack11 Guest
|
|
Posted: Wed Jun 02, 2004 4:42 am |
|
|
if the baud rate is slow enough. and the code to test is fast enough. you could do it on a byte by byte basis and set some kind of flag to indicate a positive or negative test. If you want to retain the whole header at the completion of a successful test. You might be able to write it into ROM but that is a slow process. Try declating some variables as type 'const' this will free up RAM. only problem with that is 'const' variables can't be changed at runtime.
good luck. there is always a way |
|
|
Ttelmah Guest
|
Re: testing stream of characters @rs23 with minimal ram usag |
Posted: Wed Jun 02, 2004 6:55 am |
|
|
Anonymous wrote: | how do you test a series of headers(around 60 bytes) received at rx pin without using no more than 20 bytes of RAM? |
Depends what you want to test. You are going to have to give a lot more information, before a real answer can be given, but (for instance), you can walk a 'state machine', where as each character arrives, the code switches to a state depending on a value, and then checks in this state, the current character, against that allowed at this point in the string. If the right charcter is found, the state is incremented, otherwise it is reset, and the search begins again.
This type of approach, requires a few variables (one saying how far you have got in matching the string, and one saying which of the possible strings has so far matched). Use possible strings stored in a constant text array, with 'markers' for the end of strings, and only about 2 variables are needed. The size of search table, and the variables, will depend on the number of possible strings.
Best Wishes |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
Header parsing |
Posted: Wed Jun 02, 2004 7:03 am |
|
|
One question that would need to be answered is:
"How far into the headers do you need to go to be unique?".
I have one application where I do some of the same things you are needing to do on long strings (37 chars or so) but I only have to test 6 chars to determine the unique characteristics.
Are we to assume you have not stored the incoming string in RAM at this point so all these test have to be performed on the fly? |
|
|
Guest
|
Re: Header parsing |
Posted: Wed Jun 02, 2004 8:10 pm |
|
|
dyeatman wrote: | One question that would need to be answered is:
"How far into the headers do you need to go to be unique?".
|
ok six coule be fine
dyeatman wrote: |
Are we to assume you have not stored the incoming string in RAM at this point so all these test have to be performed on the fly? |
its ok if u have any suggestions, as long as the RAM usage is minimized or lets say optimized |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
String Parsing |
Posted: Wed Jun 02, 2004 8:26 pm |
|
|
Ss TTelmah said earlier, we need to know more info. Give us an example of several of the strings (or at least the part of the string up to where it becomes unique and we can come up with some suggestions.
Psuedocode of one approach:
1. you set a pointer counter to keep track of the postion to be compared
2. set a match flag when the match with the first char occurs and increment the pointer ctr.
3. When you get the next char check the match flag to see if it is set, if so compare for the next char in the string, if nopt reset the match flag and pointer counter to 0.
4. If the counter reaches six you decide on what to do with the string since it has been identified at this point.
5. If you store your match strings in constants as suggested you shouldn't need more than maybe 4-5 RAM variables to accomplish the task. |
|
|
|