This is interesting. I have never used a chip this "small"....
What does the data stream look like and what part do you want to skip? Then what do you want to do with it?
This is interesting. I have never used a chip this "small"....
What does the data stream look like and what part do you want to skip? Then what do you want to do with it?
Dave
Always wear safety glasses while programming.
it is a repeating string and the bytes I need are located 9 bytes after symbol 85. Ideally there are 7 bytes I want to know but I have room only for three variables, so I may have to read them one by one every next sycle or use only the first one as it is most important and I only need to ignite a warning LED at certain read value. Now I do it this way:
SERIN PORTB.3,T2400,4000,CLR,[85],VAR,VAR,VAR,VAR,VAR,VAR,VAR,VAR,VAR,VAR
Skipping 9 bytes cost me 45 words of memory which is near 9% of what I have totally
Yes, this chip is very small, but I could not find another one with at least one 15 volt port (regular or open drain) to read and write serial data directly
Well I am stuck...
Why not use another chip and a MAX232? Then the data could be pulled into an array.
Dave
Always wear safety glasses while programming.
Hi Alexey,
This program compiles to 124 words with a 16HV540.
This one is 154 words.Code:INCLUDE "modedefs.bas" RX VAR PORTB.3 B0 VAR BYTE SERIN RX, T2400,[85]But this one using DEBUGIN is only 75 words.Code:INCLUDE "modedefs.bas" RX VAR PORTB.3 B0 VAR BYTE SERIN RX, T2400,[85],B0,B0,B0,B0,B0,B0,B0,B0,B0,B0IF only I had a 16HV540 to test it on.Code:DEFINE DEBUGIN_REG PORTB ' Debugin pin port DEFINE DEBUGIN_BIT 3 ' Debugin pin bit DEFINE DEBUGIN_MODE 0 ' Debugin mode: 0 = True, 1 = Inverted DEFINE DEBUG_BAUD 2400 ' Debug baud rate B0 VAR BYTE MyData VAR BYTE DEBUGIN [WAIT(85)] ' wait for 85 FOR B0 = 1 TO 9 DEBUGIN [MyDATA] ' skip 9 bytes NEXT B0 DEBUGIN [MyDATA] ' get the desired byte![]()
DT
Thanks again Darrel,
I never even thought to try DEBUGIN and I certainly did not realize how compact it is.
Another entry in the note book.
Dave
Always wear safety glasses while programming.
For the longest time I completely ignored the DEBUG/DEBUGIN statements because it just seemed too much like a Basic Stamp command.
Then I saw Bruce using them a lot and took another look.
They really are better than SERIN/OUT, SERIN2/OUT2.
As long as you only need one baud rate and fixed pins ... which fits probably 90% of the usual serial programs.
Smaller, faster ... better.
DT
Hi Darrel, with a loop of 10 cycles the last MyData will contain the desired byte saving one line instruction. (Assume something less than 75 words)
Code:DEFINE DEBUGIN_REG PORTB ' Debugin pin port DEFINE DEBUGIN_BIT 3 ' Debugin pin bit DEFINE DEBUGIN_MODE 0 ' Debugin mode: 0 = True, 1 = Inverted DEFINE DEBUG_BAUD 2400 ' Debug baud rate B0 VAR BYTE MyData VAR BYTE DEBUGIN [WAIT(85)] ' wait for 85 FOR B0 = 0 TO 9 DEBUGIN [MyDATA] ' skip 9 bytes NEXT B0 'Last MyDATA will contain the desired byte
All progress began with an idea
Bookmarks