Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : ArmmiteH743 V5.07.02 betas - library,STM32H743VIT6 support and more.
Author | Message | ||||
disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 896 |
Here is the promised ArmmiteH7 update. Armmite H7 5.07.02 Beta 0 - Release This release combines the previous updates from Peter (@matherp) and changes I have been adding to the ArmmiteH7 over some time, mainly to support the 100 pin STM32H743VIT6 boards. Also added commands so I could use Tom's (@thwill) unit testing code. Also includes various new functionality from the Picomites. This post lists most of the changes and areas that have been touched over the last 18 months, however the manual includes all these updates. The issue with having to load a brand new unused 144 Nucleo board with the older software first is hopefully resolved. Armmite H7 User Manual A new consolided Armmite H7 manual has been created with details of all enhancements and contains some other improvement/corrections.(see change log section in the manual for list of changes.) The footer of each page has the page number on both the left and right margins so one will survive if the manual is printed and bound. Firmware and Manual The attached zip contains the ArmmiteH743 5.07.02b0 firmware, the matching Armmite H7 User Manual and the updated ARMH7CFunction.h header file. ARMmiteH7_5.07.02betas.zip Armmite H7 Manual.pdf Source Code and License Geoff has agreed to open-source the firmware on Github with the same licensing as the PicoMite. I will post source on GitHub once I have updated all the source files with the appropriate headers. The STM32 drivers and software components are copyright 2019 STMicroelectronics. The license for these precludes using any GPL license so the TURTLE command has been removed as it used a GPL licensed component. Recap of changes already in Peter's 5.07.01 Beta 0 This is summary of changes already included in the 5.07.01 Beta 0 release. More speed improvements plus new commands and sub-commands INV ,CALL,MID$,SORT,CSUB,END CSUB,CAT,BITBANG MEMORY SET,MEMORY COPY,LOAD JPG The following functions BOUND,CHOICE,CALL,JSON$,KEYDOWN,FORMAT$,BASE$ and one more operator INV Support for STM32H743VIT6 100pin WeAct and DevEbox boards The H7 binary from 5.07.02 beta 0 onward supports both the 144 and 100 pin chips. The STM32H743VIT6 100 pin board from WeAct Studio is now supported The STM32H743VIT6 100 pin board from DevEBox is now supported Due to the reduced number of pins available the following restrictions apply to the 100 pin boards: The CAMERA command and MOVEMENT() function are not supported. The high speed count pin is not available. SPI3 is not supported. The following restrictions are due to functions sharing pins, so they are mutually exclusive: PWM 2D and COM2 RX share pin 25 so ony one is available at any time. SPI2 shares pins 42,43 and 44 with the 16 bit parallel displays SSD1963 and so is not available if a 16 bit parallel LCDPANEL is configured. These issues in 5.07.01 Beta 0 are addressed These were discovered while testing the above development and have been resolved. CSUB -updated header file CFunction.h Fix uSec() function in CSUB code, Timer() function same as CMM2 on tim16 Allow CSUBs with no parameters PEEKRANGE adjusted to include SRAMBASE to SRAMEND as is used by vartab and now will allow PEEK and POKE to Variables. Fixes bug in ON KEY keyno,int where it was not included in CheckInterrupts COM1 was setting COM10 flag in lieu of COM1 Fixes bug in day$(now) function Running from commandline now creates Hash table so SUBs and Functions can be found. OPEN COM1:9600,INV is sticky.Once INV is set it is not cleared when COM is closed. Fixed by clearing as part of setupuart() Recovered SPRITE token. SPRITE was previously merged with BLIT but token was still being allocated. Fixed issue with HUMID and WS2812 causing a recursive REPLACE in BITBANG WS2812 and BITBANG HUMID. Fixed issue where Print "HEX$(13)=" would translate to Print "BASE$(16,13)=" Changes to FILE command to properly deal with relative paths from a sub-directory Fixed issue where MM.INFO(FILE SIZE file) would only work the first time, i.e. not twice in a row without doing FILES Fixed issue where FILES command would give error 'PATH NOT FOUND' when run from a Sub Directory. Processgps() called when in commandline mode so GPS output can be displayed on console. New or enhanced commands and functions etc. Error message now covers possibility of invalid DISPLAYTYPE i.e. error("Argument count or display type") Error Message increased to 64 chars as per CMM2 ADC OPEN command updated so that if invalid pins are supplied will not leave ADC partially configured. Writing to FLASH now allows 3 attempts before failure is reported as per the CMM2 IC2 and I2C2 pins now available in MMBasic if I2C not being used as per CMM2 LIBRARY Commands added CFUNCTION and END CFUNCTION added. MEMORY command shows more detail Command Buffer and command editing added when at command prompt as per picomite. Command Buffer and editing also available when OPTION LCDPANEL CONSOLE is used. UPDATE SOFTWARE command removed. CWD$ function now returns A:/ in lieu of :/ i.e. drive letter now included. BACKLIGHT PWM drive now provided for non SSD1963 displays. Pin xx on 144 pin device and Pin xx on 100 pin devices. BACKLIGHT command enhanced. The backlight brightness is now set based on the Option.Brightness setting. It is now defaulted to 50%. The value stored in Option.Brightness is changed by an optional parameter on the BACKLIGHT command. BACKLIGHT percentage [,DEFAULT|,REVERSE] The option DEFAULT will update the default value which is then used at any future restarts or power ups. The option REVERSE will also set the default value which is then used at any future restarts or power ups, but will also indicate that the backlight is to produce the reverse order for brightness. i.e. 0-100 produces a 100-0 output. This can be used to correct the brightness progression where the backlight driver of a particular display expects a reverse pwm signal and would otherwise show 100% as OFF and 0% and ON.The Option.DefaultBrightness will show in Option List if any display is configured. FONT command does not now change the Prompt Font when OPTION LCDPANEL CONSOLE is enabled. Use OPTION LCDPANEL CONSOLE font to change the Prompt Font used by the console. MM.INFO$(CONSOLE) will return "NOCONSOLE" or "CONSOLE" depending on setting of OPTION LCDPANEL [CONSOLE|NOCONSOLE]. Allows a program to know if LCDPanel is being used as the console. MM.INFO(BACKUP) will return the start address of the 4K Battery backed ram. i.e &H38800000. This can be used via PEEK and POKE Added support for additional Displays ILI9488 SPI 480*320 SSD1963_5ER_16 5" SSD1963 from EastRising (Requires BGR in lieu of RGB) IPS_4_16 4" IPS 800*480 based on either OTM8009A or NT35510 chip Can be used as console, but suitable hardware scrolling is not supported so is slower that the SSD1963 displays. SSD1963_4 now uses Buffered driver with 8 bit bus for refresh. SSD1963_5+ 8 bit drivers only use 8 bits so PE8-PE15 available. ILI9341_8 is the only 8 bit LCD which reserves all 16 bits PE0-15 These recent fixes/enhancements from CMM2 and Picomite included DISPLAY_TYPE variable added to prevent partial configuration of invalid OPTION LCDPANEL Fixes bug that added an extra space after a REM command each time the program was edited. Fixed reporting the line of an error when goto/gosub to a line number is used. Fixed issue where ERROR in subroutine called by Interrupt appears in calling line (as fixed in CMM2) Fixed issue with ON ERROR when calling GOSUB with invalid label. (@Thwill reported) Fixed issue with ON ERROR when calling Function with wrong type. (@Thwill reported) Fixed bug in PWM timings as per CMM2 Fixes a bug where LINE INPUT would not read the last line in a file if it was not terminated with a CR Fixed issue in GPS receipt (from Picomite) where the first read of GPS(DATE) may give an incorrect answer,also updated to use double precision in calculations. Fix for ERASE var not recovering memory for array and string variables. (as per picomite) LONGSTRING TRIM command now allows TRIM to remove the whole buffer. Previously would not allow a value equal to the length of the buffer that would trim the whole buffer.0 also allowed which does not change the string. Added: POKE DISPLAY command [,data1] [,data2] [,datan] POKE DISPLAY HRES n POKE DISPLAY VRES m MATH (CRC8,CRC12,CRC16,CRC32 .... ) function added as per Picomite OPTION ESCAPE to allow escaping when entering special characters added. OPTION FnKey for programmable 63 character F1,F5-F9 added. MEMORY PACK and MEMORY UNPACK added MM.INFO(LINE) returns a string of line number as for Picomite. Enhanced READ command -The command can now take arrays as a parameter. Enhanced RESTORE command -The command can now take a variable as a parameter. READ SAVE and READ RESTORE added as per PicoMite. INTERRUPT [myint] -Added as per PicoMite Added Interrupt ie CSubComplete to CFunctions Allow CFunction calls to CFunInt1-4 from COUNT1-4 pins EXECUTE -Added * RUN shortcut i.e. *TEST is shortcut for RUN "TEST.BAS" -Added RUN,parameter Added. Sets MM.CMDLINE$ OPTION KEYBOARD nn [,capslock] [,numlock] [repeatstart] [repeatrate] SETPIN pinno,CIN [,option] -Added as per PicoMite SETTICK PAUSE, myint [,tickno] -Added SETTICK RESUME, myint [,tickno] -Added AUTOSAVE can now be terminated by entering Control-Z or F1 which will then cause the received data to be transferred into program memory overwriting the previous program. Use F2 to exit and immediately run the program. GUI ACTIVATE for TextBox now allows accepts # and works with GUI Interrupt enabled. OPTION LIST now includes Device and MMBasic Version as first line of printout. Enhancements/fixes from picomite 5.07.08b3+ Now creates MM.CMDLINE$ in editor if exit is via F2 as per Picomite Fixed bug where using EXECUTE in a program that has been AUTORUN crashes the system. Fix for RUN command when OPTION AUTORUN is set as per Picomite Fix minor bug in CALL command as per Picomite Fix minor bug in CALL function as per Picomite Fix error when EXECUTE command is run from command prompt as per Picomite MID$ command now allows replacement of different length string INSTR function now optionally allows Regex expression as search string LINSTR function now optionally allows Regex expression as search string REGEX uses different library. GPL licence incompatable. BITBANG WS2812 W, pin, nbr, value%[()] now supports SK6812 RGBW Leds Update LCD to BITBANG LCD as per F4 and accept LCD,WS2812,BITSTREAM,HUMID PAGE now GUI PAGE but still accepts PAGE MM.INFO(DIR EXISTS dir) added MM.INFO(FILE EXISTS file) added OPTION ANGLE added Using \\000 and \&00 (OPTION ESCAPE) give error message as per picomites Removed command TURTLE as GPL licence incompatable with STM32 licence Footnote added 2024-01-31 16:36 by disco4now This updated to fix errors reported below Armmite H7 5.07.02 Beta 1 - Release I have taken Peter's advice and removed the automated translation of PAGE to GUI PAGE so you will need to manually change your code to use GUI PAGE in lieu of PAGE. The GUI PAGE command was also broken and now should be OK. The CWD$ was also broken and should now be OK. ArmmiteH743.zip Gerry Latest F4 Latest H7 |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 9122 |
WOW |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6798 |
So you've finally given up on unimportant things like sleeping have you, Gerry? Great stuff indeed! Edited 2023-11-04 22:47 by Mixtel90 Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
PhenixRising Guru Joined: 07/11/2023 Location: United KingdomPosts: 864 |
This is very much appreciated. My WeAct is working beautifully. I have tested up to 600MHz. This is going to be a lot of fun. Can't believe that this thread isn't going crazy. Looking at designing my own board, sans the unsupported fluff. Many, many thanks to the developers. |
||||
panky Guru Joined: 02/10/2012 Location: AustraliaPosts: 1101 |
Great job Gerry, many thanks, Doug. ... almost all of the Maximites, the MicromMites, the MM Extremes, the ArmMites, the PicoMite and loving it! |
||||
PhenixRising Guru Joined: 07/11/2023 Location: United KingdomPosts: 864 |
I continue to be impressed with the WeAct. Verified that the external flash (Appendix E) works. No big deal but SYNC isn't supported which I had been using on the Pico. I have a simple alternative which is more than adequate. This H7 is fast. |
||||
darthvader Regular Member Joined: 31/01/2020 Location: FrancePosts: 76 |
WOW , you have done allot here It's time to get my nucleo board out of the box ! Theory is when we know everything but nothing work ... Practice is when everything work but no one know why ;) |
||||
PhenixRising Guru Joined: 07/11/2023 Location: United KingdomPosts: 864 |
I'm supposed to be working on an Armmite F4 project (also tons of fun) but I can't stop dabbling with this WeAct. I have a Nucleo, somewhere but I don't think I bothered with it much. The manual recommends removing a bunch of jumpers but IIRC, I couldn't even find them. Need to have another look. |
||||
KeepIS Guru Joined: 13/10/2014 Location: AustraliaPosts: 1679 |
Just found time to test a brand new "virgin" V2 board. Loaded your beta release and I'm pleased to inform you that it worked first go, no more version shuffle I'll do more in depth testing when I get some time. I have two very big and complex programs that will test out everything the previous version had implemented, obviously I may have to make some changes due to changes in some commands and syntax, just glazed over the changes you have made and added. Looking forward to testing. Thanks for supporting this powerful H7 device. It's all too hard. Mike. |
||||
disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 896 |
Good news. Good to know you will give it a test as I know you have been using them in anger from their beginning. Regards Gerry Latest F4 Latest H7 |
||||
PhenixRising Guru Joined: 07/11/2023 Location: United KingdomPosts: 864 |
+1000 |
||||
KeepIS Guru Joined: 13/10/2014 Location: AustraliaPosts: 1679 |
Just found time to load a current working program. Looks Like a problem with Tokens/Code optimization? I have a lot of GUI pages in this program. Const HOME_PAGE=1 GUI SETUP HOME_PAGE some control setup code > RUN [409] GUI SETUP HOME_GUI PAGE Error : HOME_GUI is not declared > "HOME_PAGE" has been replaced with "HOME_GUI PAGE" but only at GUI SETUP It's all too hard. Mike. |
||||
disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 896 |
I can see the problem. Not sure of the ultimate fix yet. I was trying to make the translation from PAGE to GUI PAGE automatic but looks like there is an unintended consequence. As a work around GUI SETUP HOME_PAGE' with a comment hard against to command will survive. GUI SETUP HOME_PAGE with no spaces after HOME_PAGE will survive. GUI SETUP HOME_PAGE 'If there is a space after HOME_PAGE then it double up. Not sure how I will fix it. It would be nice to keep the automatic translation of PAGE to GUI PAGE but may not be possible. Gerry Latest F4 Latest H7 |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 9122 |
I would get rid of this and stick with GUI PAGE which is now in everything except the MM+ |
||||
KeepIS Guru Joined: 13/10/2014 Location: AustraliaPosts: 1679 |
ARMmiteH7 MMBasic Version 5.07.02b0 (144 pins) RevId 1003 Copyright 2011-2023 Geoff Graham Copyright 2016-2023 Peter Mather A quick removal of any EOL space. Problem now is that the PAGE command is unknown: CODE is: PAGE ThisPGE > RUN [8158] GUI PAGE ThisPGE Error : PAGE is not declared > There are too many changes in the behavior of some commands now, I'm getting hard faults and locking from things like: TmpStr=Mid$(Cwd$,1,1) -> Causes a Hard Fault Error and lockup. Changing to: TmpStr2=Cwd$ Mid$(TmpStr2,1,1) Works but obviously I have problems due to other command structure changes. I expected things to break, so I'm not really worried about it. FYI I'm Not complaining, just letting you know what I found. As soon as I get time I'll Program a new project using the correct command syntax. I just wish I had more time at the moment, I'm looking forward to exploring the additions and changes. Once again, I really appreciate the hard work you're putting into this. Cheers. . Edited 2023-11-21 08:50 by KeepIS It's all too hard. Mike. |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2135 |
Is normal MMBasic so should work. I don't have a H743 so checked on a PicoMite. A:/> dim string TmpStr A:/> TmpStr = Mid$(Cwd$,1,1) A:/> ? TmpStr A A:/> Might be a bug. Edit Also works on an F4 with latest firmware. Edited 2023-11-21 09:34 by phil99 |
||||
KeepIS Guru Joined: 13/10/2014 Location: AustraliaPosts: 1679 |
Thanks Phil, yes it has been running for years, so as you say, it does work. However I found that if something is unstable, then the error that MMBasic is stopping at and reporting may not be the real error. EDIT: I forgot to thank you for all the extra work that has gone into the H7 Manual. . Edited 2023-11-21 13:02 by KeepIS It's all too hard. Mike. |
||||
KeepIS Guru Joined: 13/10/2014 Location: AustraliaPosts: 1679 |
Well got the old H7 unit out again. Dim String str1 str1 = Mid$(Cwd$,1,1) Print str1 > RUN A Runs once correctly then: > RUN [2] str1 = Mid$(Cwd$,1,1) Error Hard fault interrupt > It's all too hard. Mike. |
||||
disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 896 |
Armmite H7 5.07.02 Beta 1 - Release I have taken Peter's advice and removed the automated translation of PAGE to GUI PAGE so you will need to manually change your code to use GUI PAGE in lieu of PAGE. The GUI PAGE command was also broken and now should be OK. The CWD$ was also broken and should now be OK. ArmmiteH743.zip Gerry Latest F4 Latest H7 |
||||
KeepIS Guru Joined: 13/10/2014 Location: AustraliaPosts: 1679 |
Lines of code: 9179 Total variables: 1348 268452 bytes Functions: 25 CFunctions: 0 Csubs: 0 Subroutines: 101 Fonts: 0 Total: 126 Quick change in code to MM.INFO(BACKUP) and program appears to be 100% working. CWD$ all good and the initial change did not break my directory logic which was a workaround for some strange behavior in the past. . It's all too hard. Mike. |
||||
Print this page |