Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 14:46 02 May 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 : Price Watch : AeroSharp 3kw - Hallet Cove S.A. $20 -Gumtree

Author Message
disco4now

Guru

Joined: 18/12/2014
Location: Australia
Posts: 965
Posted: 12:52pm 19 Jun 2020
Copy link to clipboard 
Print this post

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░         WORK IN PROGRESS H7  
░░                Please don't reply to thread       ░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=17777#235710
No I haven't. I've been sneaky and implemented a single hidden function to process all MM. functions. This now leave me with a few free function slots.

Functions MM.HRES, MM.VRES, MM.VER, M.I2C, MM.FONTHEIGHT, MM.FONTWIDTH, MM.PS2, MM.HPOS, MM.VPOS, MM.ONEWIRE, MM.Errno, MM.ErrMsg$, MM.WATCHDOG, MM.DEVICE$
are now all implemented as written and none of them are converted to MM.INFO calls by the pre-processor

Have a look on github at fun_tilde in functions.c, llist in commands.c, changes to str_replace (fixes a bug where replacements could happen incorrectly) and tokenise in MMBasic.c. I'm going to add MM.CMDLINE$ and the MQTT MM.s as well in the next RC which will get rid of the various background variable creation code that current supports them.

automatic length adjustment for string constants RC5. Where strings are less that 15 characters (RP2350) or 9 character(RP2040) no heap will be used. NB: prior to this release RP2350 only allowed 7 characters in a string without using heap.

MM.HPOS auto converts to MM.INFO(HPOS)  -UNDO THIS
MM.VPOS auto converts to MM.INFO(VPOS)  _UNDO THIS

Armmite H7 5.07.02 Beta 2 - In Progress


REMEMBER
--------
IPS_4_16 for the OTM8009A may not be complete. LCDAttrib not used everywhere.


TO DO /CHECK:
------
multi line comments /*   */



I2C READ allows >255 chars if INT or Float array used.(as per Picomite) ???
ILI9341_I and INVERT options for ILI9488
OPTION LCDPANEL accepts [,INVERT] to invert colours on ILI9341 and ILI9488



MM.HPOS auto converts to MM.INFO(HPOS)  -UNDO THIS
MM.VPOS auto converts to MM.INFO(VPOS)  _UNDO THIS



Implement the new functions for parsing command parameters as used in the latest Picomite code.(i.e.MATH,LONGSTRING,ADC, commands).
MATH,LONGSTRING done,ADC and DAC done,

DONE:
----------

CAN [OPEN|CLOSE|START|STOP|FILTER|SEND|READ] commands added
SYNC [period][,units] command added
MATH PID command and function added.
BYVAL and BYREF qualifiers added to SUB definition.
PWM will set output pin to OC(Open Collector/Drain) if frequency given as -ve number.
PWM fixed issue where a frequency change was not recorded, so returning to the original frequency did not result in an update.

MATH C_ADD etc commands that act on cells added as per picomites.
MATH SHIFT added  as per picomites
MATH WINDOW added as per picomites
MEMORY PACK/UNPACK added.
MEMORY PRINT/INPUT added
Fix for MATH M_MULT not  giving correct results.
Improved MATH M_MULT as per Pico RC5
Improved MATH M_PRINT as per Pico RC5
MATH command accepts either C_MUL or C_MULT. (as per Picomite)
LINE AA command added as per picomites
LINE GRAPH command added as per picomites
LINE PLOT command added as per picomites
MATH CROSSING() added
LIBRARY RESTORE will restore any existing library after OPTION RESET or after new firmware loaded.
Added MM.INFO(NBRPINS)  returns 100
Added MM.INFO(OPTION VCC) returns current value for VCC
I2C READ allows >255 chars if INT or Float array used.(as per Picomite)

Updates to CommandLine Buffer as per Picomite.here
Added delay in USBKEYBOARD handling of CAPS/NUM/SCROLL Lock to fix LEDs on keyboard no lighting. see https://www.thebackshed.com/forum/ViewTopic.php?TID=17037
INSTR fixed when an expression is used as the index to an array as the first parameter (as per picomite RC9)
Automatic OVR mode on right arrow removed.
Comments are no longer tokenised as per Picomites.
SORT command extra sort option
MATH V_PRINT array() [,hex] 'outputs the contents in hex
Fixes bug in LINSTR changing the regular expression if a variable (from 6.0.02 Picomite)
Function Inkey$ changed so it automatically resolves Function and special keys
sequences to a single char as per picomites and CMM2.
SHIFT F3-F8 Added as per picomite 6.00.02B0
//NB: SHIFT F1, F2, F9, F10, F11, and F12 don't appear to generate anything
ADC START now accepts additional parameters as per the Picomites that allow mapping of the the output data to a desired range.
ADC TRIGGER now allows a timeout value to be set. 'timeout' is the number of ADC samples to take before abandoning the wait for the trigger condition. Setting a value equal to the frequency of the sampling would give a timeout of 1 second.
ADC TRIGGER,channel,level[,timeout]
LONGSTRING PRINT allows ; to suppress CRLF
PIN("TEMP") adjusted to calculate using correct value of 130 degrees for REV V chips.
USBKeyboard mappings corrected so that SHIFT+(F1-F12) resolve to correct codes
i.e. 0xB1- 0xBC in lieu of 0xD1-0xDC

BITBANG becomes DEVICE as per picomite latest release.(automatically converted)
DEVICE BITSTREAM
DEVICE LCD
DEVICE HUMID
DEVICE WS2812

HEX$,BIN$ and OCT$ now restored. BASE$(2, etc accepted but automatically converted)

--- Changes from Picomite 6.00.02RC5 ---
Automatic length adjustment for string constants.
Where a constant string is less that 16 characters no heap will be used. The data is stored within the pre allocated table for the variable definitions.
String variables defined with a LENGTH of less than 16 (was previously < 8) are also stored within the variable definition and require no heap allocation.

Functions MM.HRES, MM.VRES, MM.VER, M.I2C, MM.FONTHEIGHT, MM.FONTWIDTH, MM.HPOS, MM.VPOS, MM.ONEWIRE, MM.Errno, MM.ErrMsg$, MM.WATCHDOG, MM.DEVICE$ are now all implemented as written and none of them are converted to MM.INFO calls by the pre-processor. Those previously available as MM.INFO calls will still be available.

LIBRARY SAVE future proofed for 16bit tokens.

Added @( function. i.e. PRINT @(x,y[,m]) when outputting to the console.
OPTION CHARS will enable x,y to be entered as row,column in lieu of pixels.
OPTION CHARS OFF will return to pixels.

TEMPR(Pinno [,timeout]) 'new optional parameter timeout to override the default (200mSec) to allow for slow devices.
TEMPR START pinno [,resolution(0-3)] [,timeout]  'new optional  parameter timeout to override the default (100, 200, 400, or 800mSec) to allow for slow devices.

                BM1     BM2    BM3      BM4     BM5     BM6     BM7     BM8
ABC 800 single   0.9     1.8    6.0      5.9     6.3    11.6    19.6     2.9
ABC 800 double   1.2     2.2    10.0    10.6    11.0    17.8    26.4    14.4
IBM PC           1.5     5.2    12.1    12.6    13.6    23.5    37.4     3.5
Apple III        1.7     7.2    13.5    14.5    16.0    27.0    42.5     7.5
VIC-20           1.4     8.3    15.5    17.1    18.3    27.2    42.7     9.9
ZX81 "fastmode"  4.5     6.9    16.4    15.8    18.6    49.7    68.5    22.9

Maximite         0.016   0.144   0.196   0.205   0.354   0.512   0.721   0.310
Maximite w. #s   0.016   0.131   0.193   0.194   0.245   0.393   0.582   0.241
Maximite w/o #s  0.016   0.111   0.173   0.173   0.192   0.336   0.525   0.220
MicroMite 40MHz  0.028   0.18    0.285   0.289   0.644   0.892   1.346   0.376
MicroMite 48MHz  0.023   0.15    0.237   0.24    0.536   0.744   1.121   0.313
MM+ MX470 120MHz 0.013   0.082   0.135   0.135   0.265   0.380   0.597   0.174
MMX 198MHz       0.006   0.045   0.07    0.08    0.141   0.201   0.287   0.126
Picromite ZeroW  0.014   0.058   0.093   0.102   0.184   0.298   0.354   0.127
Armmite H7       0.003   0.023   0.038   0.042   0.067   0.098   0.146   0.065
Armmite H7 480** 0.003   0.023   0.038   0.042   0.067   0.098   0.146   0.065
ArmMite F4       0.011   0.079   0.14    0.149   0.249   0.354   0.528   0.257
ArmMite F4    ** 0.011   0.079   0.14    0.149   0.249   0.354   0.528   0.257
ArmMite F4xGT ** 0.0098  0.0643  0.1143  0.1138  0.2088  0.2928  0.4347  0.2388
MMBASIC DOS      0.0002  0.0017  0.0028  0.0028  0.0073  0.0092  0.0117  0.0058
CMM2             0.00176 0.0118  0.01903 0.01728 0.03611 0.05062 0.07582 0.02851
PicoMite         0.0166  0.1096  0.1800  0.1840  0.3325  0.4715  0.6688  0.3193
PicoMite V50800  0.0132  0.0969  0.1636  0.1641  0.2866  0.4051  0.5821  0.2824  126MHz
PicoMite V50800  0.0046  0.0338  0.0571  0.0574  0.0998  0.1410  0.2030  0.0974  378MHz
Linux            0.0000  0.0020  0.0040  0.0040  0.0080  0.0130  0.0190  0.0070

Other Recent Basics
ByPic MX170 40M  0.001   0.010   0.023   0.020   0.027   0.041   0.080   0.043
BBC_V Pi Zero    0.0001  0.0007  0.0016  0.0014  0.0015  0.0030  0.0030  0.0036

C-Language
Arduino UNO      0.010   0.010   0.058   0.043   0.043   0.043   0.045   0.284
Arduino DUE      0.003   0.003   0.006   0.007   0.007   0.007   0.106   0.014
ESP32S           0.00007 0.00007 0.00030 0.00011 0.00016 0.00016 0.00016 0.02413



Armmite H7 5.07.02 Beta 1 - Release
Fix for GUI PAGE
Fix for CWD$

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.

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.





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.

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


To Do

Bug where labels etc which are 32 characters are not found.
https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=15487

Removed MM.INFO(DISK SIZE) as it causes reboot  ?????? -check on 100 and 144 pin
Removed MM.INFO(FREE SPACE) as it causes reboot ?????? -check



multi line comments /*   */

SYNC command ?
Edited 2025-04-27 20:05 by disco4now
Latest F4 Latest H7 FotS
 
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