Menu
JAQForum Ver 19.10.27

Forum Index : Microcontroller and PC projects : PicoMite Firmware Release Version 6.02.00

   Page 3 of 3    
Posted: 06:10pm
27 Jan 2026
Copy link to clipboard
lizby
Guru

  matherp said  Just wait until you are retired, then you will really have no time

I said, after retirement, I don't know how I ever had time to work.
 
Posted: 09:33pm
27 Jan 2026
Copy link to clipboard
bfwolf
Senior Member

  matherp said  
  Quote  To busy at work. Hardly time to breathe.

Just wait until you are retired, then you will really have no time



In the Black Forest, we say in dialect, "If you retire, you automatically become a member of the Dädschmer e.V. association!" - "Dädschmer" is dialect and can best be translated as "wouldyouplease".
 
Posted: 08:58am
28 Jan 2026
Copy link to clipboard
ksinger
Regular Member

The sprite(b,...) command did not handle mirrored sprites. It is corrected here together with the demo. Bye.
spriteb_for_6.0.2.zip
 
Posted: 06:56am
29 Jan 2026
Copy link to clipboard
ville56
Guru

Just stumbled over a problem with framebuffers. Don't know if this is a restriction because of the display used. If I enter the following commands

> option list
PicoMite MMBasic RP2350B V6.02.00
OPTION SYSTEM SPI GP2,GP3,GP4
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION PICO OFF
OPTION CPUSPEED (KHz) 200000
OPTION DISPLAY 40, 145
OPTION LCDPANEL ST7789_320, RLANDSCAPE,GP6,GP5,GP7,GP8
OPTION PLATFORM 2450B-test
> framebuffer create
> framebuffer layer
> framebuffer merge

the pico enters a locked state, only reset or power-cycle resumes operation.

I've used the same command sequence on a Webmite 2040 with the display configured as

OPTION LCDPANEL ILI9341, RLANDSCAPE,GP5,GP6,GP7,GP8,INVERT

and that works ok.

Note: the display ST7789_320 on the 2350B is physicall not a full 320x240 but 320x170. All graphics commands (line, arc) work though, except the layerbuffer merge.

Gerald
 
Posted: 08:31am
29 Jan 2026
Copy link to clipboard
matherp
Guru

Just checked Petscii robots on a st7789_320 (waveshare pico-restouch-lcd-2.8) on a rp2350A and it works perfectly. It uses framebufffer merge to work so I can't see why it wouldn't work on your display.
 
Posted: 02:31pm
30 Jan 2026
Copy link to clipboard
ville56
Guru

could it be that it does hang in my setup because the ST7789 display I use is only connected to the MOSI (SPI0 TX) from the pico, meaning that no display data can be read back?
 
Posted: 06:52pm
01 Feb 2026
Copy link to clipboard
DNSGeek
Newbie

I have a PicoCalc with an RPi Pico 2W. RP2350

Every release after V6.00.02RC23. causes the system to boot, show the spash screen with the version number and a > prompt, then after about 5-10 seconds the screen just goes black. V6.00.02RC23. is the only release that seems to work correctly.

I've tried every beta, every RC and every release. I've replaced my RP2350 with a brand new one ordered directly from PiShop twice.  I've tried the pico_2 and the pico_2w versions for each. The behavior is the same.

What can I submit to help identify why it's completely failing on my board? I ran the softest uf2 and it said the SD card was OK.
 
Posted: 07:09pm
01 Feb 2026
Copy link to clipboard
matherp
Guru

I assume you are using the modified PicoCalc firmware? If so, it is difficult to help.
Load  RC23. Does LIST OPTIONS show you the configuration settings? If so, copy these down. Load the standard 6.02.00 WEBMITERP2350 firmware. You can access the firmware though a computer connected to the USB port on the Pico. You will have a blank screen but you can then apply the options you have noted EXCEPT the keyboard. Start with SYSTEM SPI. Try both the ILI9488SP and ST7796SP LCD drivers. Nobody is sure what LCD the PicoCalc is using. It may be neither of those but they are all very similar. The ILI9488SP driver runs the slowest and is probably the most general. Assuming that all works then you will have to follow up on the PicoCalc forum as there is nothing I can do - I don't have one.
 
Posted: 08:23pm
01 Feb 2026
Copy link to clipboard
toml_12953
Guru

  ville56 said  Just stumbled over a problem with framebuffers. Don't know if this is a restriction because of the display used. If I enter the following commands

> option list
PicoMite MMBasic RP2350B V6.02.00
OPTION SYSTEM SPI GP2,GP3,GP4
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION PICO OFF
OPTION CPUSPEED (KHz) 200000
OPTION DISPLAY 40, 145
OPTION LCDPANEL ST7789_320, RLANDSCAPE,GP6,GP5,GP7,GP8
OPTION PLATFORM 2450B-test
> framebuffer create
> framebuffer layer
> framebuffer merge

the pico enters a locked state, only reset or power-cycle resumes operation.

I've used the same command sequence on a Webmite 2040 with the display configured as

OPTION LCDPANEL ILI9341, RLANDSCAPE,GP5,GP6,GP7,GP8,INVERT

and that works ok.

Note: the display ST7789_320 on the 2350B is physicall not a full 320x240 but 320x170. All graphics commands (line, arc) work though, except the layerbuffer merge.

Gerald


Here's my setup and it seems to work fine:

PicoMite MMBasic RP2350B V6.02.00
Copyright 2011-2025 Geoff Graham
Copyright 2016-2025 Peter Mather

BETA Revision C
Total of 6 Mbytes PSRAM available
>framebuffer create
>framebuffer layer
>framebuffer merge
>? "It seems OK to me."
It seems OK to me.
>


Here are my options:
PicoMite MMBasic RP2350B V6.02.00
OPTION SERIAL CONSOLE COM1,GP0,GP1,BOTH
OPTION SYSTEM SPI GP10,GP11,GP12
OPTION SYSTEM I2C GP6,GP7, SLOW
OPTION FLASH SIZE 16777216
OPTION LIBRARY_FLASH_SIZE  52000
OPTION COLOURCODE ON
OPTION CONTINUATION LINES ON
OPTION CASE UPPER
OPTION DEFAULT COLOURS GREEN, BLACK
OPTION KEYBOARD I2C
OPTION PICO OFF
OPTION CPUSPEED (KHz) 396000
OPTION LCDPANEL CONSOLE ,, FF00
OPTION DISPLAY 26, 40
OPTION LCDPANEL ST7796SP, PORTRAIT,GP14,GP15,GP13,,INVERT
OPTION BACKLIGHT LCD 32
OPTION SDCARD GP17, GP18, GP19, GP16
OPTION AUDIO GP26,GP27', ON PWM CHANNEL 5
OPTION RTC AUTO ENABLE
OPTION PSRAM PIN GP47
 
Posted: 09:00pm
01 Feb 2026
Copy link to clipboard
JanVolk
Guru

I'm having trouble measuring the DS18B20 sensor with the latest firmware version.
The first measurement is measured at 0.25 resolution, as per the settings.
If I connect multiple sensors (three in total) and start logging, the first sensor produces an error of 1000,
and the second is measured at 0.25 resolution, and the third at 0.5 resolution.
If I swap sensors one and two, the first sensor remains at 1000.
If I set:
TEMPR START GP2, 3, 800
TEMPR START GP3, 3, 800
TEMPR START GP4, 3, 800
Then the first measurement is again 1000, the second at resolution 3, and the third at resolution 1 in the first round.
The second round is the first measurement at 1000, the second at resolution 1, and the third at resolution 0.
If I swap sensors one and two, the error doesn't migrate. I did the same with three other sensors on the GP6, GP7, and GP8. The GP7 gives an error reading, but the resolution is the same as described above.
Do I happen to have the wrong sensors (fake), or am I possibly doing something wrong? The first series is wired, and the second series is without.
Has anyone else seen this? Some time ago, I made a selection of all my DS18B20 sensors using an earlier firmware version and kept the fake sensors separate.
On a different platform, the readings are correct. So I'm a bit confused.

> list
TEMPR START GP2,3,800
TEMPR START GP3,3,800
TEMPR START GP4,3,800

Print "Stoppen is Ctrl+C"

Do
 Print
 Print "Temperatuur GP2 .. :" Str$(TEMPR(GP2,800), 4, 6); " C"
 Print "Temperatuur GP3 .. :" Str$(TEMPR(GP3,800), 4, 6); " C"
 Print "Temperatuur GP4 .. :" Str$(TEMPR(GP4,800), 4, 6); " C"
 Pause 10000
Loop

> run
Stoppen is Ctrl+C

Temperatuur GP2 .. :1000.000000 C
Temperatuur GP3 .. :  16.937500 C
Temperatuur GP4 .. :  17.000000 C

Temperatuur GP2 .. :1000.000000 C
Temperatuur GP3 .. :  17.000000 C
Temperatuur GP4 .. :  17.000000 C

Temperatuur GP2 .. :1000.000000 C
Temperatuur GP3 .. :  17.000000 C
Temperatuur GP4 .. :  17.000000 C

> option list
PicoMite MMBasic RP2040 V6.02.00
OPTION SYSTEM I2C GP20,GP21
OPTION COLOURCODE ON
OPTION HEARTBEAT OFF
OPTION PICO OFF
OPTION CPUSPEED (KHz) 200000
OPTION DISPLAY 50, 100
OPTION SDCARD GP19, GP10, GP11, GP12
OPTION PLATFORM PicoMite RP2040-SD:32G


Kind regards,

Jan.
 
Posted: 11:42pm
01 Feb 2026
Copy link to clipboard
phil99
Guru


A test with two DS18B20 sensors.
The one on GP6 is genuine and the one on GP7 is a fake and requires TEMPR START before every read or it reads 1000.
There seems to be an interaction between the two TEMPR START commands.
The one with the shorter read time appears to set the read time for both sensors. The  result is the one set to the higher precision doesn't get time to perform its read.
> TEMPR START GP6,3 :TEMPR START GP7,3 : ? tempr(GP6), tempr(GP7)
13.25   12.0625
> TEMPR START GP6,3 :TEMPR START GP7,2 : ? tempr(GP6), tempr(GP7)
13.1875         12.125
> TEMPR START GP6,3 :TEMPR START GP7,1 : ? tempr(GP6), tempr(GP7)
13.25   12
> TEMPR START GP6,3 :TEMPR START GP7,0 : ? tempr(GP6), tempr(GP7)
13.1875         12
>
> TEMPR START GP6,2 :TEMPR START GP7,3 : ? tempr(GP6), tempr(GP7)
13.25   12.0625
> TEMPR START GP6,2 :TEMPR START GP7,2 : ? tempr(GP6), tempr(GP7)
13.25   1000
> TEMPR START GP6,2 :TEMPR START GP7,1 : ? tempr(GP6), tempr(GP7)
13.25   1000
> TEMPR START GP6,2 :TEMPR START GP7,0 : ? tempr(GP6), tempr(GP7)
13.3125         1000
>
> TEMPR START GP6,1 :TEMPR START GP7,3 : ? tempr(GP6), tempr(GP7)
13.3125         12.125
> TEMPR START GP6,1 :TEMPR START GP7,2 : ? tempr(GP6), tempr(GP7)
13.3125         1000
> TEMPR START GP6,1 :TEMPR START GP7,1 : ? tempr(GP6), tempr(GP7)
13.3125         1000
> TEMPR START GP6,1 :TEMPR START GP7,0 : ? tempr(GP6), tempr(GP7)
13.3125         1000
>
> TEMPR START GP6,0 :TEMPR START GP7,3 : ? tempr(GP6), tempr(GP7)
13.3125         12.125
> TEMPR START GP6,0 :TEMPR START GP7,2 : ? tempr(GP6), tempr(GP7)
13.3125         1000
> TEMPR START GP6,0 :TEMPR START GP7,1 : ? tempr(GP6), tempr(GP7)
13.3125         1000
> TEMPR START GP6,0 :TEMPR START GP7,0 : ? tempr(GP6), tempr(GP7)
13.3125         1000
>


Edit.
Adding an explicit timeout to the TEMPR START command of the fake unit is a workaround that restores function.
> TEMPR START gp7,2 :TEMPR START gp6,3 : ? tempr(gp7), tempr(gp6)
1000    13.375
> TEMPR START gp7,2,500 :TEMPR START gp6,3 : ? tempr(gp7), tempr(gp6)
12.25   13.5625
>

Edited 2026-02-02 09:57 by phil99
 
Posted: 12:52am
02 Feb 2026
Copy link to clipboard
JanVolk
Guru

I found my problem. The TEMPR START command must be present within the loop; otherwise, it won't work properly.
Sorry for interrupting your valuable time. I still have a lot to learn.

Kind regards,

Jan.
 
Posted: 08:25am
02 Feb 2026
Copy link to clipboard
matherp
Guru

  Quote  I found my problem. The TEMPR START command must be present within the loop; otherwise, it won't work properly.
Sorry for interrupting

Glad its working. What I was going to point out is the timeout parameter in the TEMPR command
  Quote  TEMPR START pin [,precision] [,timeout]

  Quote  'precision' is the resolution of the measurement and is optional. It is a number
between 0 and 3 meaning:
0 = 0.5ºC resolution, 100 ms conversion time.
1 = 0.25ºC resolution, 200 ms conversion time (this is the default).
2 = 0.125ºC resolution, 400 ms conversion time.
3 = 0.0625ºC resolution, 800 ms conversion time.
The optional timeout parameter overrides the conversion times above to allow
for slow devices.
 
Posted: 06:21pm
02 Feb 2026
Copy link to clipboard
JanVolk
Guru

I don't know if this is the intention, but I need to record the same TEMPR START twice in the same loop to get the same data, otherwise the default accuracy of 1 in the data file would be lost.
Could this also be included in the manual?

Open "TemperatureLog.xls" For Output As #1

Do While Inkey$ = ""
 TEMPR START GP3,3
 TEMPR START GP4,3
 TEMPR START GP5,3
 Print Date$;" ";Left$(Time$,5);": GP3:";Str$(TEMPR(GP3),2,3);" GP4:";Str$(TEMPR(GP4),2,3);" GP5:";Str$(TEMPR(GP5),2,3)
 TEMPR START GP3,3
 TEMPR START GP4,3
 TEMPR START GP5,3
 Print #1, Date$ " " Left$(Time$,5) ", " Str$(TEMPR(GP3),2,3) ", " Str$(TEMPR(GP4),2,3) ", " Str$(TEMPR(GP5),2,3)
 Pause 10000
Loop
Close #1

Kind regards,

Jan.
 
Posted: 08:42am
03 Feb 2026
Copy link to clipboard
ville56
Guru

Peter,

I have an issue with the WS2812 command. It seems to have problems with the heap as it locks up the whole MMbasic system in certain cases. I've attached a test program to see what I mean.

The program creates BLIT buffers, where the number, width and heigth can be specified. If I specify
10 Buffers, w=105 and h=105, all is well

with 10 buffers, w=105 and h=106, I get
[22] Print "write blit ";b_idx+1
Error : Not enough Heap memory

with 10 buffers, w=106 and h=106, MMbasic locks up without any message.

If the WS2812 statement is commented out, all runs well, no matter how big the BLITs are. Other statements do no harm ...

my environment is:
PicoMite MMBasic RP2350B V6.02.00
OPTION SYSTEM SPI GP2,GP3,GP4
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION PICO OFF
OPTION CPUSPEED (KHz) 200000
OPTION DISPLAY 40, 145
OPTION LCDPANEL ST7789_320, PORTRAIT,GP6,GP5,GP7,GP8
OPTION PSRAM PIN GP0

It is independent of the display used, btw.

The program is:


'  
 option explicit
 option default none
 
 Dim integer b_idx, max_blit, blit_w, blit_h
 SetPin gp9,dout
 
 
 input "max BLIT [10] ";max_blit
 if max_blit = 0 then max_blit = 10
 
 input "BLIT width [110] ";blit_w
 if blit_w = 0 then blit_w = 110
 
 input "BLIT heigth [110] ";blit_h
 if blit_h = 0 then blit_h = 110
 
 load_blit             'fill BLIT buffers

Do
 For b_idx = 0 To max_blit-1
 Print "write blit ";b_idx+1
 Blit write(b_idx+1),35,0
 
 print "write WS2812"
 
 '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 'this line locks the pico
 WS2812 B, gp9, 1, Rnd()*&hffffff      'write to LEDs
 
 'the following statements do no harm at all
 line 0,0,200,200,10,rgb(red)
 pin(gp9) = 1 : pin(gp9) = 0
 print "abcdefghijk"
 text 35,35,"abcdefghijk"
 
 Pause 1000
 cls
 
 Next b_idx
Loop

End

Sub load_blit
 Local integer idx

 For idx = 1 To max_blit
   Print "loading BLIT buffer "idx
   Blit read idx,0,0, blit_w,blit_h
 Next idx
End Sub




Gerald
 
Posted: 08:55am
03 Feb 2026
Copy link to clipboard
Volhout
Guru

@Peter,

PicoCalc is on GitHub, and it uses the ST7365 LCD driver.
From their website:

ST7365P_SPEC_V1.0.zip

Their current MMBasic release is based on 6.00.02 (says GitHub).

Volhout
Edited 2026-02-03 18:55 by Volhout
 
Posted: 12:00pm
03 Feb 2026
Copy link to clipboard
phil99
Guru


@JanVolk, maybe read the DS18B20s just once like this:-
Open "TemperatureLog.xls" For Output As #1

Do While Inkey$ = ""
 TEMPR START GP3,3
 TEMPR START GP4,3
 TEMPR START GP5,3
 output$ = Date$+" "+Left$(Time$,5)+": GP3:"+Str$(TEMPR(GP3),2,3)+" GP4:"+Str$(TEMPR(GP4),2,3)+" GP5:"+Str$(TEMPR(GP5),2,3)
 Print output$
 Print #1, output$
 Pause 10000
Loop
Close #1


If TemperatureLog.xls is intended to accumulate readings perhaps use:-

Open "TemperatureLog.xls" For Append As #1
.
Edited 2026-02-03 22:08 by phil99
 
Posted: 08:12pm
04 Feb 2026
Copy link to clipboard
JanVolk
Guru

Thanks Peter and phil99,

Sorry for my late reply. Thanks for your reply.
I did indeed use Geoffg's example on his website.
This raised the above-mentioned issues for me.
Phil99's comments are very helpful, and I will explore them further.
I do indeed want to start recording data and have already looked at the various I2C codes for the EEPROM and VAR.

Kind regards,

Jan.
 
Posted: 08:18pm
04 Feb 2026
Copy link to clipboard
JanVolk
Guru

Dear and Geoffg,

Where can I find the description of the new I2CLCD commands in the latest manual?
I looked at the latest version 4 of V6.02.00 on Geoffg's website but couldn't find anything in the command list or anywhere on a page?
Peter describes it excellently on the PicoMite V6.02.00 Release Candidates - Structured Types V6.02.00RC6 forum, page 8.
Could this also be included in the manual? Or did I miss something?

Kind regards,

Jan.
 
Posted: 10:11pm
04 Feb 2026
Copy link to clipboard
phil99
Guru


To make it easier to import into a spreadsheet program perhaps use .CSV format with comas as column separators.

It may be difficult to fit the long output$ in the editor window so you could do it in two parts as below or use "Option Continuation Lines On".

The time taken to read the sensors and save the results will add an unknown amount to the 10S Pause. Using the Timer can improve the accuracy of the reading interval.

Open "TemperatureLog.csv" For Append As #1

Do
  t = timer
  TEMPR START GP3,3
  TEMPR START GP4,3
  TEMPR START GP5,3
  output$ = Date$+", " + Left$(Time$,5) + ",  GP3, " + Str$(TEMPR(GP3),2,3)
  Inc output$, ",  GP4," + Str$(TEMPR(GP4),2,3) + ",  GP5," + Str$(TEMPR(GP5),2,3)
  Print output$
  Print #1, output$
  do : loop until timer - t > 9999.95 'adjust to get exact time if that is needed.
Loop Until Inkey$

Close #1
 
   Page 3 of 3    


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

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