Menu
JAQForum Ver 19.10.27

Forum Index : Microcontroller and PC projects : PicoMite V6.00.02

   Page 1 of 2    
Posted: 07:09am
13 Jun 2025
Copy link to clipboard
matherp
Guru

PicoMite V6.00.02 is now available from Geoff's site https://geoffg.net/picomite.html

Source code and binaries on Github

The manual has been updated but please leave comments on this thread for anything we have left out or any errors

Installing this will re-initialise all flash and options etc.

Release Notes

Changes from 6.00.01

Bugs fixed
Various fixes to OPTION LIST
Fixes bug in forward references in PIO assembler when the starting line number is > 1
Fixes bug in PRINT @(x,y) when outputting to a computer console
By default disables heartbeat and enables access to all pins on RP2350B
Allows selection of GP19 for PSRAM PIN
Fixes bug in TILE HEIGHT 12 command in PicoMiteVGA
Fixes bug in TILE HEIGHT command in PicoMiteHDMI[USB] setting the screen to white
Fixes bug in LINSTR changing the regular expression if a variable
Fixes various bugs in PIO assembler
Fixes bug in DMA to/from PIO2 on the RP2350
Fixes memory leak in PLAY MP3 when using SPI audio
Fixes bug causing crash when trying to play all audio files in a directory if the number exceeds 20
Fixes bug in LINE PLOT
Fixes bug with ADC when system clock is above about 252MHz
Fixes onewire/tempr functionality  when using parasitic connection
Changes initialisation of HDMI pins to increase drive needed for some monitors
Fixes bug in EDIT "b:/filename" giving heap memory error

New Commands and Functions (see manual for full details

Command BIT(var%,bitno)=0 or 1  'sets a specific bit (0-63) in an integer variable
Function BIT(var%,bitno) 'returns the value of a specific bit (0-63) in a integer variable (0 or 1)
These make it very easy to use flags in a program with minimum memory usage

Command BYTE(var$,byteno)=0 to 255 ' sets a specific byte in a string to an integer value
function byte(var$,byteno) 'returns the integer value of a specific byte in a string (0-255)

Command FLAG(bitno)=0 or 1 ' 'sets a specific bit (0-63) in the system flag register
function FLAG(bitno) 'returns the value of a specific bit (0-63) in the system flag register

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

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

CHAIN fname$ [,cmdline$] ' Allows the program to run another program with the variable space preserved - command is recommended to be used in top level program and not from within a subroutine (may work OK but not tested for side-effects)
AVE CONTEXT [CLEAR]' saves the variable space and optionally clears it - command should be used in top level program and not from within a subroutine (may work OK but not tested for side-effects). If used in a subroutine a subsequent LOAD CONTEXT must DEFINITELY be in the same subroutine or a crash/corruption will DEFINITELY happen.

LOAD CONTEXT [KEEP]' restores the variable space to the previously saved state and optionally preserves the stored variables to allow a second LOAD if required.

RAM command (RP2350 with PSRAM only) functions like the FLASH command with 5 program slots available in PSRAM. All commands except RAM LOAD (copies a RAM slot to the main flash program space) can be used in a program.
RAM FILE LOAD n,fname$ [,O[VERWRITE]] can be used to load a RAM slot from a standard disk .BAS file

SAVE PERSISTENT n%
'saves the value n% in memory that will survive a watchdog reset (RP2040 and RP2350) or a physical reset (RP2040 only)

MM.INFO(PERSISTENT)
' recovers any value saved as above

PIO CONFIGURE

OPTION CONTINUATION LINES ON/OFF

HELP command

ARRAY command


Changes and enhancements

the default CPU speed for the standard RP2040 PicoMite is now 200MHz. Raspberry Pi have now officially approved the RP2040 for that speed with a voltage of 1.15V which is what is set

Changing MODE to be the same now clears all framebuffers etc.

Layer buffer now available in VGA mode 1 (252MHz and above) and all HDMI mode 1 resolutions

Supports ; at the end of LONGSTRING PRINT to suppress the CR/LF

I2C(2) OPEN now supports 1000 as a speed

FILE command can now be used in a program

EDIT FILE command used in a program will now only be memory limited the same as EDIT

SHIFT-F3 to F10 now work for computer console. NB: Shift-F1, F2, F11, and F12 don't appear to send codes so can't work

PLAY MODFILE will preferentially use space in PSRAM if enabled for the file buffer (RP2350 only). In this case a modbuffer does not need to be enabled with the OPTION command

OPTION AUDIO I2S BCLKpin, DATApin

This allows a I2S DAC to be used to provide high quality Audio. The firmware transmits the data in 32-bit mode and FLAC, MP3 (RP2350 only), and WAV data is output with no loss of information.
This command reserves BCLKpin and BCLKpin+1 for the bit clock and word clock and Datapin for the I2S data. It requires an I2S DAC that can PLL the bitclock to create its own master clock. Tested on PCM5102A and TDA1387T .

For example:
OPTION AUDIO I2S GP1,GP5
GP1 is the bit clock
GP2 is the word clock
GP5 is the data pin

All normal audio should work TONE, MP3 (RP2350 only), FLAC, WAV, MOD, SOUND

PIO INIT MACHINE pio%,
statemachine%, clockspeed
[,pinctrl] [,execctrl] [,shiftctrl]
[,startinstruction] [,sideout [,setout] [,outout]

sideout, setout, and outout can be set to 0 (default) or 1 to specify if pins defined in pinctrl should be initialised as inputs (0) or outputs (1)

MM.INFO(BOOT)
Tells you the reason for the last restart of the Pico
Returns:

Restart            - the device has been restarted with CPU RESTART or an OPTION command
S/W Watchdog       - the device has been restarted by a software watchdog timeout
H/W Watchdog       - the device has been restarted by a hardware watchdog timeout
Firmware update    - the device has been restarted following a firmware update
Power On           - the device has been powered up
Reset Switch       - the device has been restarted using the reset switch
Unknown code &Hn   - unknown reason - please report the code and version RP2040/2350

LIST PINS - lists the current status of all pins on the processor

PIO code can now be inserted directly into Basic between a call to PIO ASSEMBLE and .end program. All PIO instructions are included as MMBasic commands including the 6 directives

Includes support for FT6336 capacitive touch chip
OPTION TOUCH FT6336 IRQpin, RESETpin [,BEEPpin] [,sensitivity]
sensitivity is a number between 0 and 255 - defaults to 50, lower is more sensitive.
SDA and SCK should be connected to valid I2C pins and set up with OPTION SYSTEM I2C
TOUCH function works as before + TOUCH(X2) and TOUCH(Y2) returns the position of a second touch location or -1 if no second location is touched.

LIST SYSTEM I2C
Produces a display showing the addresses of all I2C device connected to the SYSTEM I2C pins

New PIO functionality for RP2350A and RP2350B
Adds MOV PINDIRS,src as valid instruction
Adds support for 'prev' and 'next' for the IRQ command

New PIO functionality for RP2350B
PIO SET BASE pionum, n 'sets the base of logical PIO pins to 0 or 16 to allow pins GP30-47 to be used for PIO

Use GAMEPAD MONITOR before plugging in a gamepad and when plugged in it will show the before and after report with each change of buttons
Use GAMEPAD CONFIGURE vid,pid,i0,c0,i1,c1,i2,c2,i3,c3,i4,c4,i5,c5,i6,c6,i7,c7,i8,c8,i9,c9,i10,c10,i11,c11,i12,c12,i13,c13,i14,c14,i15,c15
to set up a gamepad that isn't supported before plugging it in.
All 34 parameters are mandatory.

New functionality from Geoff - with thanks
Now supporting  BYVAL & BYREF.  BYVAL & BYREF are prefixes that can be applied to parameters in the definition of a sub or function.  BYVAL will force the interpreter to use the value of the supplied argument even if a variable is supplied.  BYREF informs the interpreter that a variable is expected and if that is not supplied it will throw an error.

Additional parameter for OPTION LCDPANEL paralleldisplaytype (e.g. SSD1963_7[_16])
OPTION LCDPANEL display, orientation [,backlightpin] [,DCpin] [,NORESET] [,DB0pin]
The new parameter only applies to the RP2350B and allows the starting pin for the 8 or 16 data pins to be specified (defaults to GP0)
e.g. OPTION LCDPANEL SSD1963_4_16, LANDSCAPE,,,GP36,,GP2
This allows SSD and other parallel displays to be used on the new 64-pin DIL development board

New LCDs supported
ST7796S 480x320
ST7796SP 320x320
ILI9488P 320x320

For all SPI displays in portrait mode, H/W vertical scrolling is now enabled

Allows seek to increase file size on the A: drive

Adds support for additional gamepads

126MHz operation no longer supported for VGA versions - now defaults to 252MHz

Changes are to the VGA variants and the default frequency for HDMI 640x480

OPTION CPUSPEED is removed from VGA variants
OPTION WIDESCREEN is removed from VGA variants

HDMI and VGA now both use OPTION RESOLUTION and the 640x480 CPU speeds are now set the same by default.

All variants
OPTION RESOLUTION 640 [,252000] 'sets the firmware to run at 252MHz - 640x480 refresh rate 60Hz
OPTION RESOLUTION 640, 315000 'sets the firmware to run at 315MHz - 640x480 refresh rate 75Hz
OPTION RESOLUTION 720 'sets the firmware to run at 283.2MHz - 720x400 refresh rate 60Hz

VGA only
OPTION RESOLUTION 640, 378000 'sets the firmware to run at 378MHz - 640x480 refresh rate 60Hz

RP2350 only
OPTION RESOLUTION 848 'sets the firmware to run at 336MHz - 848x480 refresh rate 60Hz
OPTION RESOLUTION 800 'sets the firmware to run at 360MHz - 800x600 refresh rate 56Hz

HDMI only
OPTION RESOLUTION 1024 'sets the firmware to run at 324MHz - 1024x768 refresh rate 60Hz
OPTION RESOLUTION 1280 'sets the firmware to run at 372MHz - 1280x720 refresh rate 60Hz
These commands between then allow
640x480 @ 75HZ - all versions
640x480 @ 60HZ - all versions
720x400 @ 60HZ - all versions (widescreen)
800x600 @ 56Hz - all RP2350 versions
848x480 @ 60Hz - all RP2350 versions (widescreen)
1024x768 @ 60HZ - HDMI versions
1280x720 @ 60Hz - HDMI versions (widescreen)

The actual CPU speeds used are:

372MHz 1280x720
315MHz 640x480 @ 75Hz
252MHz or 378MHz 640x480 @ 60Hz
324MHz 1024x768
360MHz 800x600
336MHz 848x480
283.2MHz 720x400

OPTION DEFAULT COLOURS
Edited 2025-06-13 17:17 by matherp
 
Posted: 09:28am
13 Jun 2025
Copy link to clipboard
circuit
Senior Member

Peter,

Many congratulations and thanks for this spectacular firmware.  You have been most patient in managing all the responses on the board and singularly effective and speedy in addressing issues that arose.  

My gratitude and appreciation is more than I can express, and I am sure that is reflected in all others who adopt this system. I live in admiration of your talent and determination.

Best regards always,

Circuit.
 
Posted: 09:49am
13 Jun 2025
Copy link to clipboard
Volhout
Guru

@Peter, Geoff,

Congratulations with this release milestone.

 

I will proudly use, and promote, it in the years to come.

Volhout
 
Posted: 10:42am
13 Jun 2025
Copy link to clipboard
Teo1
Newbie

Thank you for the hard work !!!
With friendship,
Teo
 
Posted: 11:32am
13 Jun 2025
Copy link to clipboard
javavi
Guru


       
 
Posted: 11:41am
13 Jun 2025
Copy link to clipboard
Canada_Cold
Regular Member

@Peter, Geoff and all that have contributed to creating this awesome programming tool, Thank You for all your work and making this available to us.
 
Posted: 12:01pm
13 Jun 2025
Copy link to clipboard
phil99
Guru


Also many thanks Peter and Geoff, a major effort!

Gave the patched I2C a workout on an EEPROM.
> dim integer a(4096)
> I2C WRITE I2C.addr, 0, 2, 0, 0 :t=timer : I2C read I2C.addr, 0, 4096, a():?timer-t; " mS"
100.107 mS
> for n=4000 to 4096:? chr$(a(n)); :next
<-ptr A=4000, Page 125, A=4031-><-ptr A=4032, Page 126, A=4063-><-ptr A=4064, Page 127, A=4095->
>
All bytes returned.
 
Posted: 03:59pm
13 Jun 2025
Copy link to clipboard
toml_12953
Guru

  matherp said  PicoMite V6.00.02 is now available from Geoff's site https://geoffg.net/picomite.html

Source code and binaries on Github



I've activated the PSRAM but I can't seem to use the
OPTION PSRAM DISABLE

command. I get Error : Invalid Option
 
Posted: 04:15pm
13 Jun 2025
Copy link to clipboard
matherp
Guru

Manual error: should be OPTION PSRAM PIN DISABLE
We will probably do a manual update in about 3 weeks as both Geoff and I are travelling before then
Edited 2025-06-14 02:25 by matherp
 
Posted: 05:07pm
13 Jun 2025
Copy link to clipboard
karlelch
Senior Member


Peter and Geoff,
This is amazing - thank you for all the work you put into this firmware!!

Best
Thomas
 
Posted: 06:03pm
13 Jun 2025
Copy link to clipboard
toml_12953
Guru

  toml_12953 said  
  matherp said  PicoMite V6.00.02 is now available from Geoff's site https://geoffg.net/picomite.html

Source code and binaries on Github



I've activated the PSRAM but I can't seem to use the
OPTION PSRAM DISABLE

command. I get Error : Invalid Option


OK. I found the problem. The manual is wrong.

The syntax is actually:
OPTION PSRAM PIN DISABLE
 
Posted: 07:06pm
13 Jun 2025
Copy link to clipboard
AlbertR
Newbie

@Peter, Geoff,

Congratulations on this amazing firmware and
thank you for your hard, hard work and passion with it.

Albert
 
Posted: 10:42pm
13 Jun 2025
Copy link to clipboard
stanleyella
Guru


> option list
PicoMiteHDMI MMBasic USB RP2350A Edition V6.00.02
OPTION SERIAL CONSOLE COM2,GP8,GP9
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION KEYBOARD UK
OPTION RESOLUTION 640x480 @ 252000KHz
OPTION SDCARD GP22, GP6, GP7, GP4
> thanks. it did this itself?
 
Posted: 04:57am
14 Jun 2025
Copy link to clipboard
toml_12953
Guru

  matherp said  PicoMite V6.00.02 is now available from Geoff's site https://geoffg.net/picomite.html

Source code and binaries on Github

The manual has been updated but please leave comments on this thread for anything we have left out or any errors



On page 184, what's the difference between

SPRITE(V,spriteno1,spriteno2) Returns the vector from 'spriteno1' to 'spriteno2' in radians


and

SPRITE(V,[#]s1, [#]s2) Returns the vector from sprite 's1' to 's2' in radians.
 
Posted: 10:41am
14 Jun 2025
Copy link to clipboard
mclout999
Guru

I was wondering if the CMM2 Firmware could be updated to reflect the newest developments in MMBasic? For example, I really like the Library feature as it elegantly allows the inclusion of directly callable extentions of the lanuage that remain static.  Are there any other features that CMM2 users would like ported back to the older device? Just wondering, no stress.
 
Posted: 11:00am
14 Jun 2025
Copy link to clipboard
Mixtel90
Guru


The CMM2 has #INCLUDE file$ so the Library isn't anywhere near as important. It's a better, more flexible system that is only possible because of the way that the CMM2 editor works. Unfortunately the PicoMite doesn't have the same resources so the Library (as originally used on the Micromite, I think) was used.
Edited 2025-06-14 21:04 by Mixtel90
 
Posted: 09:25pm
14 Jun 2025
Copy link to clipboard
homa
Guru


Many thanks to Peter and also Geoff! Have a good trip and enjoy the journey!
Matthias
 
Posted: 06:11am
15 Jun 2025
Copy link to clipboard
karlelch
Senior Member


Hi,

I updated my solar panel display from 2023 to the newest WebMite firmware and it ran almost w/o a change! And from observing it the past 24 hours, more stably than with earlier WebMite versions. This is great!!!

Best
Thomas

P.S. The only change I had to do was using in a format string "%02.0f" instead of "%02.0g". The behaviour of the "g" option seems to have changed:
> ?Format$(5, "%02.0f")
05
> ?Format$(22, "%02.0f")
22
> ?Format$(5, "%02.0g")
05
> ?Format$(22, "%02.0g")
2e+01

Before, the latter also produced "22", but "2e+01" makes more sense considering that "g" is supposed to choose the optimal format.
Edited 2025-06-15 16:11 by karlelch
 
Posted: 07:27am
15 Jun 2025
Copy link to clipboard
Mixtel90
Guru


Manual page 101 - ADC OPEN command
Refers to RP2940 and some very odd pins for the RP2350B!

Shouldn't it be GP40 to GP47 for the RP2350B?

It could be that the pins are re-mapped for the RP2350B to make GP40-43 into GP26-29 and GP44-47 into GP55-58, but this isn't clear in the manual.
 
Posted: 07:53pm
15 Jun 2025
Copy link to clipboard
homa
Guru


delete
Edited 2025-06-16 05:54 by homa
 
   Page 1 of 2    
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025