Thread: Build Log A poor man's OSD
View Single Post
Old May 13, 2010, 08:31 AM
remzibi is online now
Find More Posts by remzibi
Registered User
remzibi's Avatar
Joined Sep 2004
1,012 Posts
Now the latest Ardu is ARDUV1_3 firmware .

It detecting ardu baud rate looking for "+++" or "!!!" in series .
The probloem is that Ardu start transmitting after getting FIX I thing - so it is not possible to detect ardu baudrate right after power-on .
I suggested to Jordi to made an "+++" or "!!!" string (2Hz interval) transmition just after Ardu power-up - to be possible for OSD get proper baudrate from arupilot - so then custom messages are possible to display (for any Ardu debuging or other use) .

In this firmware OSD parsing "LAT" , "LON" only in "!!!" string - order not important

and is parsing "DST" , "ALT" , "SPD" , "CRS" , "no" , "PTH" , "RLL" , in "+++" or "!!!" strings .
infos order is not important .

Well - there is a problem because the UART transmition is buffered to not lost any single char from any transmition - the input buffer lenght is 120 chars .

Then the buffer for parsed information lenght is 110 chars- so that "+++" or"!!!" strings lenght from ardu can NOT be bigger .

So the string you showed Paul is to big 122chars - and in such way OSD will not coowerate with Ardupilot
+++RLL:25,PCH:-15,LAT:8212345,LON:14112345,SPD:100,CRT:10,BER:180 ,CRS:180,ALT:200,ASP:100,SAT:8,UTT:123456,UTD:1305 10,***

As solution is to divide this string by 2 as example
+++RLL:25,PCH:-15,LAT:8212345,LON:14112345,SPD:100,CRT:10,BER:180 ,*** <CR> <LF>
+++CRS:180,ALT:200,ASP:100,SAT:8,UTT:123456,UTD:13 0510,*** <CR> <LF>
Then OSD will recewive and parse all info in proper way . Notice that *** are not needed at end , but CR LF chars must be there .

As you see the info from ardu is absolutely not efective - as is designed for peaples not for mashines . Loosing receiving time and chars for nothig .

More better will be if there all infos has their place in order- like in NMEA standard ex . +++25,-15,8212345,14112345,,,,,,,180 . What I think is best way .

Or if we want messages(to not carry about infos order in string) so remove the ":" char and use infos names as 2 charcters only (or one) - then we save 26 (39) chars .

We can also remove "+++" and "!!!" and replace it by "+" , "!" or "$" , also remove "***" at end - what they for ?

Notice that OSD's uC have only 512bytes of ram memory - so that two buffers 120+110 already occupied 230 bytes- that is more than a half memry .
We loose this memory because of not effective communication protocol from Ardupilot . I need this memory for stack registers and floating point countings and variables - so RAM memory for me have a gold value .

I talked with Jordi about changing his protocol - he is developing any binary mode- but unfortunate I had not last details of his progress .

Anyway for now - the MOST important to made PC software felxible - so one common eeprom for all - and if possible to get object's names from txt file bounded with firmware file from HEX catalog .
remzibi is online now Find More Posts by remzibi
Last edited by remzibi; May 13, 2010 at 08:47 AM.
Reply With Quote