![]() |
Forum Index : Microcontroller and PC projects : ARMmite and MX470 beta updates
Author | Message | ||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
Please do not reply to this thread As requested I'll put all future updates in one place. Please start a different thread with questions/bug reports etc. to keep this one clean MX470 beta 13 Changes: added support for S6D02A1 display - needs testing slightly increased available flash memory fixed bug in SSD1289 display handling 2015-03-23_094625_Micromiteb13.zip ARMmite B20 Changes: added support for S6D02A1 display - needs testing slightly increased available RAM and flash memory fixed bug in I2C which caused bus speed to be very low 2015-03-23_094531_ARMmiteb20.zip Please note the default console for the ARMmite after new firmware is loaded is and will remain the UART on pins PA2 and PA3. The ARMmite has three SPI channels. The commands to control these are identical in syntax to the original SPI commands detailed in the 4.6 manual e.g SPI2 {OPEN, READ, WRITE} etc. I=SPI2(N) SPI3 {OPEN, READ, WRITE} etc. I=SPI3(N) Please note that SPI on the ARMmite is always 8 bits so the "bits" parameter is not used. For 16 or 32 bit transfers just call SPI multiple times or specify extra data items to SPI WRITE and SPI READ Full details of the ARMmite pinout etc. are given here . Other information is here |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
ARMmite B21 Minor change adding a facility to check an I2C address is valid (because I needed it ![]() 2015-03-23_210611_ARMmiteb21.zip See the code sample for use: DIM INTEGER checkaddress,addressvalid I2C OPEN 400,1000 ' I2C port must be open before using I2C CHECK FOR checkaddress = 2 to 127 I2C CHECK checkaddress,addressvalid IF addressvalid THEN PRINT HEX$(checkaddress) 'Prints the address of valid I2C devices NEXT checkaddress If you downloaded this file before 21:05 GMT 23/3/2015, please download again as a development version was uploaded by mistake MX470 beta 13 No functional changes except to remove a diagnostic print left in by mistake so no version change 2015-03-23_210836_Micromiteb13.zip |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
MX470 beta 14 Fixed bug in onewire and DS18B20 commands when CPU set to 96MHz 2015-03-24_084047_Micromiteb14.zip |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
ARMmite B22 Fixed bug in OPTION AUTORUN ON Note, when AUTORUN ON is set the firmware no longer outputs the copyright banner on power-up or reset. This should make it easier to use the console as a serial I/O device in applications. Available RAM increased to 121K, big thanks to Peter Carnegie (G8JCF) for finding a peculiar Compiler "feature" 2015-03-25_082309_ARMmiteb22.zip |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
ARMmite B23 This release contains new functionality created by Peter Carnegie (G8JCF) 2015-03-27_140158_ARMmiteb23.zip MMBasic4ARM Breakpoints MMBasic4ARM supports 3 commands related to Breakpoints to help make debugging MMBasic programs much easier: BP "string" : Causes the program to stop and display "string". The string can contain MMBasic4ARM variables, but any numeric variables must be converted using STR$, eg “The Value of I% is”+Str$(I%) You can set as many Breakpoints as you want The best place to set the BP is at the end of the line which you need to inspect Resume the program at the next statement by typing "CONTINUE" or using the F5 key. BP ON : ENABLES ALL Breakpoints which have been placed in your program BP OFF : DISABLES ALL Breakpoints which have been placed in your program The following MMBasic program demonstrates how to use the BP command OPTION EXPLICIT
OPTION DEFAULT None '********************************************************************************* ' ' Program to demonstrate use of MMBasic4ARM Breakpoints ' ' MMBasic4ARM supports 3 commands related to Breakpoints to help make debugging programs much easier: ' ' BP "string" ' Causes the program to stop and display the contents of "string" as a message ' The message can contain MMBasic4ARM variables, but any numeric variables ' must be converted using STR$, eg “The Value of I% is”+Str$(I%) ' You can set as many Breakpoints as you want. ' The best place to set the BP is at the end of the line which ' ' you need to inspect ' Resume the program at the next statement by typing CONTINUE ' ' BP ON : ENABLES ALL Breakpoints which have been placed in your program ' ' BP OFF : DISABLES ALL Breakpoints which have been placed in your program ' '********************************************************************************* BP ON pause 1000 DIM I% DIM A$="" 'We're going to append a single character at a time to A$ FOR I%=0 TO 25 A$ = A$ + CHR$(I% + &H41):BP A$ 'Breakpoint and display value of A$ NEXT I% 'Print out A$ PRINT A$ END When you run this program, MMBasic4ARM will stop and display the value of A$ each time the program hits the BP statement RUN [24] A$ = A$ + Chr$(I% + &H41):Bp A$ 'Breakpoint and display value of A$ Breakpoint : A > Type in "CONTINUE" or use function key F5 >continue [24] A$ = A$ + Chr$(I% + &H41):Bp A$ 'Breakpoint and display value of A$ Breakpoint : AB > Note that the program has stopped again and this time A$ contains the string AB >continue [24] A$ = A$ + Chr$(I% + &H41):Bp A$ 'Breakpoint and display value of A$ Breakpoint : ABC > Again the program has stopped on line 24 and this time A$=ABC, so it looks like the loop is working correctly, So now we’ll disable the breakpoint, and let the program continue to the end We issue the BP OFF command (Function key F7) > BP OFF > And now type in "CONTINUE" (or click the F5 key) > continue ABCDEFGHIJKLMNOPQRSTUVWXYZ > the F6 key can be used as a short cut for "BP ON" ________________________________________________________________________________ MMBasic4ARM : Peek(System Item) Function MMBasic4ARM supports a new form of Peek which is used to return "useful/interesting" information about the system your program is executing on As of 2015-03-26, the Peek(System Item) supports the following Item terms Item Description Device$ Returns the name of the device, eg ARMMite Ver! Returns a FLOAT value of the version of MMBasic4ARM MCUID% Returns a 64 bit integer containing the ID of the CPU, see STM RM0090 DocID018909 Rev 8 Section 38.6.1 for details UpTime% Returns a 64 bit integer of the number of seconds since power-on APITable% Returns the address of the table of addresses of functions which have been exposed by the MMBasic4ARM interpreter for use by CFunctions. This is a very advanced feature which will be explained in a separate CFunctions for ARM Tutorial document Over time the number of ITEMs will increase. The following MMBasic4ARM program demonstrates use of the PEEK(SYSTEM Item) Function OPTION EXPLICIT OPTION DEFAULT None '********************************************************************************* ' ' Program to demonstrate use of the MMBasic4ARM Peek(System Item) Function ' ' MMBasic4ARM supports a new form of Peek which is used to return "useful/interesting" ' information about the system your program is executing on ' As of 2015-03-26, the Peek(System Item) supports the following Item terms ' ' Item Narrative ' ====== ================================= ' Device$ Returns the name of the device, eg ARMMite ' Ver! Returns a FLOAT value of the version of MMBasic4ARM ' UpTime% Returns a 64 bit integer of the number of seconds since power-on ' MCUID% Returns a 64 bit integer containing the ID of the CPU, see ' RM0090 DocID018909 Rev 8 Section 38.6.1 for details ' APITable% Returns the address of the table of addresses of functions which ' have been exposed by the MMBasic4ARM interpreter for use by CFunctions. ' This is a very advanced feature which will be explained in a separate ' CFunctions for ARM Tutorial document ' '********************************************************************************* pause 1000 PRINT "Peek(System Device$) =";PEEK(System Device$) PRINT "Peek(System Ver!) =";PEEK(System Ver!) PRINT "Peek(System UpTime%) =";PEEK(System UpTime%);" seconds" PRINT "Peek(System MCUID%) =&H";HEX$(PEEK(System MCUID%)) 'Show how MCUID can be translated into text SELECT CASE (PEEK(System MCUID%) AND &HFFF) CASE &H413 PRINT "This MCU is a STM32F405xx/07xx or STM32F415xx/17xx" CASE &H419 PRINT "This MCU is a STM32F42xxx and STM32F43xxx" CASE ELSE PRINT "Unknown Device !!" END SELECT PRINT "Hex$(Peek(System APITable%))=&H";HEX$(PEEK(System APITable%)) END |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
ARMmite B24 Two changes in this release. If you have any comments or questions, please start a relevant thread. First: The program will automatically load the time and date on reset if there is a RTC attached to the I2C ports. The operation of OPTION AUTORUN will not be impacted as no error will be displayed if there is no clock attached. Second: In this release I have removed the USB console option as it has not proved possible to get it to work reliably with downloads over xmodem if the program is more than a few lines long ![]() However, I have added support for a USB keyboard ![]() The syntax is : asciicode=USBKEY(timeout in msecs) e.g. dim integer i do i=USBKEY(1000) ' get a character or return 0 if more than 1 second elapses if i then print chr$(i) loop You will need a microUSB adapter to plug in a standard keyboard as in the picture. The program decodes all normal letters and numbers but does not respond to non-ASCII character such as "F1" etc. Pin 15, PC0 is no longer available as a general I/O pin as the STM discovery Board uses this pin to switch power to the USB port when in USB Master mode |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
I realised, based on a PM question, that this thread doesn't link in the MX470 pinout so please refer to this thread for full details. Also the ZIP seems to have gone missing (or did I just forget it ![]() 2015-04-12_072954_ARMmiteb24.zip |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
MX470 beta 15 Fixed bug in line drawing "line x0,y0,x1,y1,colour" when x0=x1 and y0>y1 or when y0=y1 and x0>x1 2015-04-14_164842_Micromite++b15.zip |
||||
CircuitGizmos![]() Guru ![]() Joined: 08/09/2011 Location: United StatesPosts: 1427 |
File isn't there or temporarily unavailable. Micromites and Maximites! - Beginning Maximite |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
MX470 beta 15 Repost - apparently the board doesn't like "++" in the filename Also port for pin 35 in 100-pin part corrected 2015-04-15_084124_Micromiteb15.zip ARMmite B25 Fixed bug in line drawing "line x0,y0,x1,y1,colour" when x0=x1 and y0>y1 or when y0=y1 and x0>x1 2015-04-14_173054_ARMmiteb25.zip |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
MX470 B16 Fixed bug in "DISPLAY CLOSE" relating to parallel displays Added support for the 4.3" 480x272 versions of the SSD1963 e.g. this one Not only are the 4.3" displays much cheaper than the 5" and 7" but based on a sample of one they are much brighter and of course update quicker 2015-04-27_161200_Micromite470b16.zip ARMmite B26 Added support for the 4.3" 480x272 versions of the SSD1963 2015-04-27_161306_ARMmiteb16.zip ST have just released a useful application note Getting started with STM32F4xxxx MCU hardware development |
||||
jman![]() Guru ![]() Joined: 12/06/2011 Location: New ZealandPosts: 711 |
Hi I noticed the update is B26 but the download is B16 Regards Jman |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
Just a rename error, you should see the hex file shows version b26 when run |
||||
JohnL Senior Member ![]() Joined: 10/01/2014 Location: SeychellesPosts: 128 |
Quick questions for matherp on current status for STM DiscoveryF407 ARMMITE. I know that most people are now looking at Geoffs MM+, but at least until the 100 pin version comes out I would like to use Discovery Armmite. 1. As I can find out, most recent firmware version is B26? How does this compare to Micromite version, in terms of more standard basic language features. For my current application I am not interested in fancier LCD display drivers. 2. Any known bugs or issues to be aware of in B26? 3. Any plans to keep Armite alive, is current source code available to interested individuals for further development , obviously subject to matherp and Geoffs approval? Regards John |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
Correct Pretty much identical to 4.6b, see the thread for differences Anything found in 4.6b on the Micromite is likely to also be in b26, otherwise nothing known Decision on hold pending production release of 4.7. Code/additional functionality cannot be released before that. Following that I need to know the level of interest before spending more time on it. From my perspective, the advantages of the ARMmite (STM32F4) are: 1. It is a better chip than the MX470, less errata, two 12-bit DACs, 12-bit ADC, hardware random number generation, faster clock speed, more RAM, more FLASH, etc. 2. It has hardware floating point. However, we have already shown that this is only really useful when used from within Cfunctions otherwise the speed advantage is pretty much nullified by the overhead of the interpreter. 3. The basic STM32F4-discovery board is excellent – cheaper than an Arduino and much more powerful. However it would need a range of IO boards designing and/or an Arduino form factor compatibility PCB to make it truly useful. 4. I suspect the STM Cube environment is significantly better and more mature than Microchip's Harmony and given that Micromite is built on PLIB which is no longer fully supported it may be that STM provides a more future proof platform. I’ve recently done more work on the new STM32 Workbench IDE and the use of CubeMX. My previous issues all revolved around the Eclipse IDE which I find totally counter-intuitive. However, I have now got programs downloading and debugging. Having a completely free unrestricted development environment supported by the Chip manufacturer is certainly a big plus. I’ve found some very nice development boards for the STM32 range see this site for details. They are a little more expensive than the ST Discovery Boards but don’t have all the extra components confusing things. Unfortunately the vendor has developed their own TFT I/F standard so they will still require flying wires to connect standard displays. All views appreciated, remembering of course any further development of the ARMmite is contingent on Geoff's approval and support. |
||||
kiiid Guru ![]() Joined: 11/05/2013 Location: United KingdomPosts: 671 |
A little comment on this point. According to the latest errata for the MX470 family (especially the 512k version), ALL of the known issues have been corrected, so any errata shorter than zero is not really possible. The faster clock speed does not translate into equivalent faster execution due to the different architectures of ARM and MIPS. In fact ARM is about 15% to 20% slower compared to MIPS running at the same clock. The RAM may be more but it is scattered in a few pieces running at different speeds. Yes, there are a few extras, but how many people are actually in need of them? I would personally never say that this is a better chip hope the focus will remain with Microchip's families in future. There are too many monkeys already on the ARM's branch while many engineers and hobbyists still stick to Microchip due to facts other than the pride to say that the system is "ARM-powered". Just a personal opinion, of course. http://rittle.org -------------- |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10281 |
You are misreading the errata list. Look for example at CTMU. There is only one silicon revision for the 470, A0 and the errata definitely applies |
||||
kiiid Guru ![]() Joined: 11/05/2013 Location: United KingdomPosts: 671 |
Ah, damn! Sorry, I accept your correction. Nevertheless, I have always been a vocal opponent to ARM. MM has grown to be a really great product now (partially thanks to your efforts as well), and I hope the mainstream MM will stay Microchip-based in future. http://rittle.org -------------- |
||||
robert.rozee Guru ![]() Joined: 31/12/2012 Location: New ZealandPosts: 2440 |
silicon revisions can be a blessing and a curse. while in a production environment you can (with some caveats) build your hardware/code around the assumption of having the latest (or a particular) silicon revision, in the hobbyist arena someone could build using chips that have come from almost anywhere and could be old or new. if the micromite firmware used features not available on some silicon revisions, it really would need to check the revision and adjust behaviour accordingly. an error message of "this feature does not work on revisions below A1" would not go down well after someone has just finished soldering down a 100-pin QFP! cheers, rob :-) |
||||
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |