![]() |
Forum Index : Microcontroller and PC projects : ArmmiteF4 firmware V5.07.00b1 - major upgrade
Page 1 of 13 ![]() ![]() |
|||||
Author | Message | ||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
Please find attached a major new release for the ArmmiteF4 for testing ArmmiteF407.zip This makes the following changes: New display driver for the OTM8009A 800x480 3.97" displays . This was written by Gerry Allardice (disco4now) who is also working on a manual for the F4 so is deserving of huge thanks ![]() Options are now stored in the 80 bytes of battery backed RAM in the F4's RTC freeing 16Kbytes of flash memory for additional features VAR save now saves to the 4096 bytes of the F4's battery backed RAM freeing another 16Kbytes of flash. As a result LOAD and SAVE NVM have been removed as has function MM.BACKUP. VAR SAVE can now be used as frequently as required without any risk of wearing out the flash memory CSUBs are now available on the F4 as per the CMM2. The relevant header file is attached. ARMF4CFunctions.zip Full MATH command and function a la CMM2 (NB the original FFT command is now MATH FFT) INC and CAT commands a la CMM2 SAVE IMAGE and LOAD IMAGE now have the optional parameters like the CMM2 (LOAD IMAGE = LOAD BMP) BOUND function a la CMM2 SORT command a la CMM2 LOAD DATA and SAVE DATA a la CMM2 MID$ command a la CMM2 POLYGON command a la CMM2 replacing previous syntax CHOICE function a la CMM2 GPS now accepts $GNGGA and $GNRMC as well as $GPGGA and $GPRMC LONGSTRING command and functions now the same as CMM2 (SETBYTE, RESIZE, LGETBYTE added) As I've mentioned previously the ArmmiteF4 is my favourite MMbasic port: faster than the MM+;, available as a very cheap ready-built board with battery backed RTC, SDcard, lots of I/O and even a flash chip; support for a wide range of LCD displays including a parallel connect ILI9341 that plugs directly onto the main PCB. ![]() |
||||
William Leue Guru ![]() Joined: 03/07/2020 Location: United StatesPosts: 405 |
This looks like a great board for dedicated applications such as weather monitoring! -Bill |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3312 |
This is a great update, especially the larger, fast, inexpensive LCD (thanks, Garry). Love seeing so many CMM2 capabilities. Any chance of fitting in JSON$ and FIELD$? Did you catch this post: F4 Weather Station PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
CaptainBoing![]() Guru ![]() Joined: 07/09/2016 Location: United KingdomPosts: 2139 |
... and SWAP var1,var2? easy enough to do with MMBasic but the speed of doing it in the firmware would be nice Thanks for this update Peter. Looks great Edited 2021-02-22 08:09 by CaptainBoing |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
FIELD$ is there already The issue with JSON$ is the amount of heap needed to parse which can be huge. The download that Lewis does needs over 3Mbyte which we don't have. I could include it but then we can expect the usual "what does out of memory mean?" questions. WTF for? |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3312 |
Well, if in legal matters, "hard cases make bad law", perhaps in the tech arena, "hard cases make for sub-optimal design". Still, to me, it would be worth it for the many instances in which the heap would not be overrun (though I don't know at what point it would tip over). Will it handle what you get back as a default from openweathermap.org? For example, {"coord":{"lon":-64.7155,"lat":44.0335},"weather":[{"id":802, "main":"Clouds","description":"scattered clouds","icon":"03d"}], "base":"stations","main":{"temp":278.94,"feels_like":269.44, "temp_min":278.71,"temp_max":279.15,"pressure":1008,"humidity":56}, "visibility":10000,"wind":{"speed":10.29,"deg":240,"gust":14.92}, "clouds":{"all":46},"dt":1612635812,"sys":{"type":1,"id":549, "country":"CA","sunrise":1612611013,"sunset":1612647345}, "timezone":-14400,"id":6057856,"name":"Liverpool","cod":200} Edited 2021-02-22 09:52 by lizby PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
bigfix Senior Member ![]() Joined: 20/02/2014 Location: AustriaPosts: 129 |
Maybe it would be possible to use a scratchpad area in the SD Card to overcome the limited RAM for huge parsing jobs There are some SD Cards for Dashcams or any high write ratio application They are specified for 15k hrs of HD video recording i.e. SanDisk Max Endurance microSD card They are also recommended in Raspberry logging environments and seem to last If we use a larger card and use only a relatively small area, loadlevelling would further extend the lifetime of the SD card As the access will be much slower, we could use the SD Scratchpad as an extension only if the internal RAM gets full A system variable to show RAM usage would allow tweaking of programs for speed But I would guess parsing weatherdata is not really timecritical To avoid overusing "normal" SD cards, this should be off by default Edited 2021-02-22 19:17 by bigfix |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
b2 attached with the JSON function - please test and let me know if it works for you ArmmiteF407.zip |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3312 |
Looks good to me: Dim integer ls%(2000) Open "livr.jsn" For input As #2 Do While NOT Eof(2) Line Input #2, a$: ' Print a$ LongString append ls%(),a$ Loop Close #2 LongString print ls%(): Print a$="name": b$="sys.country": Print a$+" "+JSON$(ls%(),a$)", "+JSON$(ls%(),b$) a$="coord.lon": Print a$+" "+JSON$(ls%(),a$) a$="coord.lat": Print a$+" "+JSON$(ls%(),a$) a$="weather[0].main": Print a$+" "+JSON$(ls%(),a$) a$="weather[0].description": Print a$+" "+JSON$(ls%(),a$) a$="main.temp": Print a$+" "+Str$(Val(JSON$(ls%(),a$))-273.15)+"C" a$="main.feels_like": Print a$+" "+Str$(Val(JSON$(ls%(),a$))-273.15)+"C" a$="main.temp_min": Print a$+" "+Str$(Val(JSON$(ls%(),a$))-273.15)+"C" a$="main.temp_max": Print a$+" "+Str$(Val(JSON$(ls%(),a$))-273.15)+"C" a$="main.pressure": Print a$+" "+JSON$(ls%(),a$)+" millibars" a$="main.humidity": Print a$+" "+JSON$(ls%(),a$)+"%" a$="wind.speed": b$="wind.gust": Print a$+" "+JSON$(ls%(),a$)+" gusting to "+ JSON$(ls%(),b$) > RUN {"coord":{"lon":-64.7155,"lat":44.0335},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"base":"stations","main":{"temp":278.94,"feels_like":269.44,"temp_min":278.71,"temp_max":279.15,"pressure":1008,"humidity":56},"visibility":10000,"wind":{"speed":10.29,"deg":240,"gust":14.92},"clouds":{"all":46},"dt":1612635812,"sys":{"type":1,"id":549,"country":"CA","sunrise":1612611013,"sunset":1612647345},"timezone":-14400,"id":6057856,"name":"Liverpool","cod":200} name Liverpool, CA coord.lon -64.7155 coord.lat 44.0335 weather[0].main Clouds weather[0].description scattered clouds main.temp 5.79C main.feels_like -3.71C main.temp_min 5.56C main.temp_max 6C main.pressure 1008 millibars main.humidity 56% wind.speed 10.29 gusting to 14.92 PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
That's good but the problem is that there is no protection for the C heap killing the C stack (STM doesn't support a mechanism) so with more complex JSON you could see any sort of error and not know why. I'll leave it in but it is definitely "buyer beware" |
||||
lizby Guru ![]() Joined: 17/05/2016 Location: United StatesPosts: 3312 |
Ok, thanks. Personally I feel it's worth the risk, but I guess the caveat should be stated for the JSON command in the manual. To bad there's no way to detect the failure. PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
OK I found a way to put some protection in. If there is an issue the firmware will force a software reset and print a relevant error ArmmiteF407.zip |
||||
circuit Senior Member ![]() Joined: 10/01/2016 Location: United KingdomPosts: 268 |
@Matherp Peter, just a note to say how much I appreciate your work on this board. I reflect fully your comments about the usefulness and comprehensive connections incorporated into this board. I invested in a dozen of the things for a range of projects and I am following this thread with great interest and even greater appreciation for the time that you are putting in. I also await Gerry Alardice's work on the supporting manual with much enthusiastic anticipation. Lots of thanks to both firmware originator and collaborating author. |
||||
CircuitGizmos![]() Guru ![]() Joined: 08/09/2011 Location: United StatesPosts: 1427 |
Are there schematics for this board somewhere? Micromites and Maximites! - Beginning Maximite |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 3998 |
Try schematic aka schematic actual from TBS page John Edited 2021-02-23 08:09 by JohnS |
||||
OA47 Guru ![]() Joined: 11/04/2012 Location: AustraliaPosts: 982 |
@ matherp I echo the thoughts of circuit. Thankyou I updated an existing working project but it no longer likes MM.INFO$(SDCARD) I get an Error : Syntax on this line Print "SDCard ";MM.Info$(SDCARD) OA47 |
||||
lew247![]() Guru ![]() Joined: 23/12/2015 Location: United KingdomPosts: 1702 |
If anyone wants to test a large data dump using json try this it's the weather forecast for the next 10 days at my location and includes daily and hourly data You'll need to do Dim As integer a(16000) 'array a - this needs a large buffer because of the amount of data to be parsed or similar as the data is huge http://swd.weatherflow.com/swd/rest/better_forecast?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8&station_id=10170&lat=53.439&lon=-2.106 |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
Lewis Won't work - first the array is bigger than the F4s memory, 2nd the amount of heap needed for parsing is vastly greater. I used your test data to develop the code for the json parsing to die gracefully |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10068 |
I removed it because the code wasn't really correct but I've put something back. Now you will get one of two status "Not present" or Ready" ArmmiteF407.zip |
||||
panky![]() Guru ![]() Joined: 02/10/2012 Location: AustraliaPosts: 1111 |
An english version of the schematic STM32F407VET6_schematic-english.pdf ... almost all of the Maximites, the MicromMites, the MM Extremes, the ArmMites, the PicoMite and loving it! |
||||
Page 1 of 13 ![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |