Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 23:02 21 Jul 2025 Privacy Policy
Jump to

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 : ARMmite and MX470 beta updates

Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 11:59pm 22 Mar 2015
Copy link to clipboard 
Print this post

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 Edited by matherp 2015-03-24
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 04:52am 23 Mar 2015
Copy link to clipboard 
Print this post

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

Edited by matherp 2015-03-25
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 10:41pm 23 Mar 2015
Copy link to clipboard 
Print this post

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 Kingdom
Posts: 10281
Posted: 10:23pm 24 Mar 2015
Copy link to clipboard 
Print this post

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 Kingdom
Posts: 10281
Posted: 04:25am 27 Mar 2015
Copy link to clipboard 
Print this post

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
PRINT "Peek(System Ver!) =";PEEK(System Ver!)
PRINT
PRINT "Peek(System UpTime%) =";PEEK(System UpTime%);" seconds"
PRINT
PRINT "Peek(System MCUID%) =&H";HEX$(PEEK(System MCUID%))
PRINT
'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
PRINT "Hex$(Peek(System APITable%))=&H";HEX$(PEEK(System APITable%))

END
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 04:54am 30 Mar 2015
Copy link to clipboard 
Print this post

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





Edited by matherp 2015-03-31
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 09:44pm 08 Apr 2015
Copy link to clipboard 
Print this post

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 )from the previous post so here is b24 again.

2015-04-12_072954_ARMmiteb24.zip Edited by matherp 2015-04-13
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 06:49am 14 Apr 2015
Copy link to clipboard 
Print this post

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 States
Posts: 1427
Posted: 07:22am 14 Apr 2015
Copy link to clipboard 
Print this post

File isn't there or temporarily unavailable.
Micromites and Maximites! - Beginning Maximite
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 07:31am 14 Apr 2015
Copy link to clipboard 
Print this post

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 Edited by matherp 2015-04-16
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 06:13am 27 Apr 2015
Copy link to clipboard 
Print this post

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 Edited by matherp 2015-04-28
 
jman

Guru

Joined: 12/06/2011
Location: New Zealand
Posts: 711
Posted: 11:16am 29 May 2015
Copy link to clipboard 
Print this post

  Quote  
ARMmite B26

Added support for the 4.3" 480x272 versions of the SSD1963

2015-04-27_161306_ARMmiteb16.zip


Hi

I noticed the update is B26 but the download is B16

Regards
Jman
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 10:44pm 29 May 2015
Copy link to clipboard 
Print this post

  Quote  I noticed the update is B26 but the download is B16


Just a rename error, you should see the hex file shows version b26 when run
 
JohnL
Senior Member

Joined: 10/01/2014
Location: Seychelles
Posts: 128
Posted: 10:29pm 02 Aug 2015
Copy link to clipboard 
Print this post

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 Kingdom
Posts: 10281
Posted: 04:49am 03 Aug 2015
Copy link to clipboard 
Print this post

  Quote  1. As I can find out, most recent firmware version is B26?


Correct

  Quote  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.


Pretty much identical to 4.6b, see the thread for differences

  Quote  2. Any known bugs or issues to be aware of in B26?


Anything found in 4.6b on the Micromite is likely to also be in b26, otherwise nothing known

  Quote  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?


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.
Edited by matherp 2015-08-04
 
kiiid

Guru

Joined: 11/05/2013
Location: United Kingdom
Posts: 671
Posted: 11:20pm 03 Aug 2015
Copy link to clipboard 
Print this post

  matherp said  
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.


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.Edited by kiiid 2015-08-05
http://rittle.org

--------------
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10281
Posted: 12:02am 04 Aug 2015
Copy link to clipboard 
Print this post

  Quote  ALL of the known issues have been corrected, so any errata shorter than zero is not really possible.


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

  Quote  An ‘X’ indicates the issue is present in this revision of silicon;
Shaded cells with an Em dash (‘—’) indicate that this silicon revision does not exist for this issue;
Blank cells indicate an issue has been corrected or does not exist in this revision of silicon
 
kiiid

Guru

Joined: 11/05/2013
Location: United Kingdom
Posts: 671
Posted: 12:11am 04 Aug 2015
Copy link to clipboard 
Print this post

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.Edited by kiiid 2015-08-05
http://rittle.org

--------------
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2440
Posted: 12:27am 04 Aug 2015
Copy link to clipboard 
Print this post

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 :-)
 
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025