|
Forum Index : Microcontroller and PC projects : PicoMite V7.00.00b8 and release candidates
| Author | Message | ||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
The RC2 release on github has been updated with the fixes for Mattias' bugs and another one that no-one has reported |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 641 |
Peter, just a silly question: is there a reason why an array DIMed in main cannot be REDIMed in a SUB or FUNCTION via its passed variable name? It fails with Error : Cannot find 'variable name'. It is possible to use the global variable name tough but this is IMHO not a very flexible approach but there may be limits by design ... 73 de OE1HGA, Gerald |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
Give me an example of what you want to work and I'll look at it |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 641 |
just an example of how I wanted to cope with the array-extension: ' OPTION EXPLICIT OPTION DEFAULT NONE dim integer i_array(1) 'define array with initial size 1 re_dim(i_array()) 'call sub to change the size of the array end sub re_dim(i_ar() as integer) redim preserve i_ar(20) 'REDIM fails end sub 73 de OE1HGA, Gerald |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
Sorry but this one is a no The change would be significant, not trivial. The error is the symptom of a deeper limit: REDIM cannot reach the caller's array through a parameter, and making it do so touches the call mechanism and the caches around it. Why it fails. Inside the SUB, i_ar is a local record that only aliases the caller's array: at MMBasic.c:3461 the call setup points its data at the caller's memory, flags it T_PTR, and copies the dimensions. REDIM works by erasing the variable and dimensioning it again, and erase at MMBasic.c:7665 searches only the global records, so a local is never found and the user gets "Cannot find i_ar". That is the whole of the current behaviour. Why the fix is not small. Letting erase see locals would not help, because erasing the alias and dimensioning again would create a new local array that dies at END SUB, leaving the caller's array at its old size. For the program to work REDIM would have to: Recognise the T_PTR alias and find the caller's own record. The local keeps only a data pointer, not the caller's record, so that means searching every live record, globals and outer frames, for one that owns that memory. A call like re_dim(a(3)) passes an element offset, so the pointer does not even match the owner's base. Reallocate the caller's memory, copy the contents, and rewrite its dimensions and size in place. Fix every other alias of the same memory: this frame's parameter and any outer frames' in a recursive chain, each with its own copy of the dimensions. Invalidate everything that caches the record or its address: the DO-condition fast path, the symbol bindings, and anything compiled code holds. Today's REDIM gets that for free because erase releases the record and a fresh one is made. A mistake in any of those corrupts memory silently rather than erroring, which is what makes it a significant change. |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 641 |
thank you for investigation. This is what I meant with "limitation by design". It is an incredible piece of software what you have created. Really great work. 73 de OE1HGA, Gerald |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 641 |
Peter, another minor issue: on the same hardware there still is different behaviour of WEB SCAN : PicoMitePC3 MMBasic USB RP2350B Edition V7.00.00RC2 Performing wifi scan ssid: WLAN12170466 rssi: 0 chan: 1 mac: 34:2c:c4:e9:01:c1 sec: 7 ssid: UPCE8DCA59 rssi: -74 chan: 1 mac: ac:22:05:e0:e6:2c sec: 7 ssid: JN88fg rssi: -67 chan: 1 mac: 0c:72:74:57:9f:25 sec: 5 ssid: Drei_H288A_24G_9fb2 rssi: 0 chan: 9 mac: c0:b1:01:11:23:c6 sec: 5 The rssi values are partially implausible. 0 is only a theoretical value and would mean a very strong signal if it is on a dB scale. But on one of the next scans the same networks may show up with a plausible -xx value. Also the number of networks reported an each scan differs considerably between PicoMitePC3 and WebMite builds. PC3 build reports less networks and also the rssi values with WebMite build seems to go further down (e.g. -87 dB). To me it seems that there is a difference in the initialisation of the radio part between the builds mentioned. also noted that the "Performing wifi scan" shows up somewhere between the network lines on PC3 build whereas it is always on top with webMite build if done interactively. With the WebMite Edition on the same hardware the scans are much more plausible and the output is clean. As already written, the hardware is always the same as well as the version, only the build differs. 73 de OE1HGA, Gerald |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
The scan isn't reliable - ignore the rssi values. Either a wan is there or not |
||||
| homa Guru Joined: 05/11/2021 Location: GermanyPosts: 715 |
Great! I’ll give it a go tomorrow. |
||||
| Peter63 Senior Member Joined: 28/07/2017 Location: SwedenPosts: 217 |
I get a message saying there isn’t enough memory when I try to load a BAS file > option list WebMite MMBasic RP2350A Edition V7.00.00RC2 OPTION SYSTEM I2C GP10,GP11 OPTION FLASH SIZE 4194304 OPTION COLOURCODE ON OPTION CPUSPEED (KHz) 200000 OPTION WIFI temp, ******************, PICO02C0FF9CC75 OPTION TCP SERVER PORT 80 OPTION SDCARD GP5, GP6, GP4, GP3 OPTION RTC AUTO ENABLE > > save"showtime.bas > files B:/ 04:47 18-10-2026 973 general-server.txt 05:12 18-10-2026 150 index.html 05:09 18-10-2026 382 server1.bak 05:09 18-10-2026 382 server1.bas 05:19 18-10-2026 25 showtime.bas 04:49 18-10-2026 163 typical-web-page.txt 0 directories, 6 files > list "showtime.bas Print Date$, Time$ End > run 18-10-2026 05:20:00 > new > load"showtime.bas Error : Not enough memory for 314368 bytes > Try to Nuke Pico2W Tested further. The Error seems to only occur when I load things from SDCARD (B:). Works totally fine from A: wait a sec, I think I got the connection wrong with the sdcard module... Checked further. SDCARD seems to be connected properly. Tried writing a new program. Saved it to B: (SDCARD), but when I try to load the program I get the error "Not enough memory for 314368 bytes" Edited 2026-10-18 15:51 by Peter63 |
||||
| terekgabor Senior Member Joined: 02/01/2026 Location: HungaryPosts: 153 |
Hello Peter! I am working on a kind of internet radio player on Picocalc. First stage to browse radio channel addresses. I tried to use de1.api.radio-browser.info for search stations. But during connection with WEB OPEN TLS CLIENT I got error TLS client error -14. Can you help me what can it be? Thanks! G@bor Footnote added 2026-10-19 20:42 by terekgabor I forgot: version is WebMiteRP2350V7.00.00RC2. |
||||
| homa Guru Joined: 05/11/2021 Location: GermanyPosts: 715 |
> option list PicoMitePC3 MMBasic USB RP2350B Edition V7.00.00RC2 ... No problem, I can easily load an x.bas file with "185856" bytes from b:/ |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
Peter63 You need to post the program and also try with a space before the filename |
||||
| Peter63 Senior Member Joined: 28/07/2017 Location: SwedenPosts: 217 |
Hi Tried an earlier version of WebMite to make sure everything works. WebMite MMBasic RP2350A Edition V6.03.00 Loaded program from SDCARD, works without any problems You need to post the program and also try with a space before the filename Here is the program Print Date$, Time$ End Tested on WebMite MMBasic RP2350A Edition V7.0.00b8 > load "showtime.bas" Error : Not enough memory for 314368 bytes Tested on WebMite MMBasic RP2350A Edition V7.00.00RC2 > option list WebMite MMBasic RP2350A Edition V7.00.00RC2 OPTION FLASH SIZE 4194304 OPTION COLOURCODE ON OPTION CPUSPEED (KHz) 200000 OPTION SDCARD GP5, GP6, GP4, GP3 > b: > load "showtime.bas" Error : Not enough memory for 314368 bytes |
||||
| Volhout Guru Joined: 05/03/2018 Location: NetherlandsPosts: 6184 |
Peter, Before you do a final release, you may want to look at the "additional manuals". There are several manuals that show artefacts (mostly in tables). In example "Game Input Devices" table "Common PS/2 Scancodes (set 2) at the boundary of page 5 - 6 - 7 - 8. The table is corrupt. Confirmed on Windows 11 Acrobat reader, as well as Ubuntu Linux (Libre Office pdf viewer). Regards, Volhout PicomiteVGA PETSCII ROBOTS |
||||
| mozzie Guru Joined: 15/06/2020 Location: AustraliaPosts: 468 |
G'day Peter, Please don't take this as me being pushy, not sure if this was missed in a previous post: This has also reminded me of a feature request I hope you would consider: The original MicroMite allowed the COMn interrupt to be fired on the receipt of a specific char by using =n (=13 for CR) in the OPEN command parameter list. This was not AFAIK carried over to the PicoMite. Is it possible to add this functionality, as it would make parsing variable length input from serial devices far more streamlined. I get the feeling the PIC32 hardware may have made this simpler. I consider this a very useful feature of the original MicroMite and would be great if the PicoMite could implement the same, possibly in a future release? V8.00.00 Regards, Lyle. |
||||
| Frank N. Furter Guru Joined: 28/05/2012 Location: GermanyPosts: 1155 |
First of all: I really love the Bluetooth versions!!! But: I'm not sure if it's such a great thing that the device connects to any keyboard right away. I had my Pico Computer 3 with me at the office today, and my coworker turned on her Bluetooth keyboard. My Pico Computer 3 connected to it immediately without me even wanting it to... I'm having problems with one of my Bluetooth speakers: > bluetooth scan Scanning... 00:11:67:A1:18:2D -68 dBm Audio "BT-WE" 1 device found > bluetooth connect "BT-WE" Error : Connection failed (Bluetooth error 0x05) > What does “Bluetooth error 0x05” mean? Frank |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
"Bluetooth error 0x05" means authentication failure: the device and the board couldn't prove to each other that they're paired. The number is the standard Bluetooth status code (ERROR_CODE_AUTHENTICATION_FAILURE in btstack). The connection itself got through, but the security step that follows it failed. It isn't a range problem: that would be 0x04, page timeout. There are three usual causes: The two sides disagree about the pairing. One side still holds the old stored key and the other doesn't. This happens when: the device was reset or paired with something else and forgot the board; the board lost its pairings while the device kept its key. Any upgrade that resets the options does this, such as the PicoMiteRP2350BTH coming from RC1. Wrong PIN for a device that pairs the older way. Without a PIN the board answers 0000, and a device expecting 1234 rejects it. The device isn't in pairing mode, so it refuses a fresh pairing. Check the speaker manual and try adding the correct pin to the connect command. See the manual for syntax |
||||
| Volhout Guru Joined: 05/03/2018 Location: NetherlandsPosts: 6184 |
Peter, On 2040 (both MIN, and normal) rc2, I cannot read from PIO FIFO. Didn’t this happen before .?. You fixed it then, but maybe the fix got lost. This is not the DMA read, or the ring buffer, but read into basic variables. It is used in the frequency counter. Tell me if you want Some example code. Volhout Edited 2026-10-20 15:00 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 12034 |
Yes please |
||||
| The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2026 |