Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 07:29 25 Nov 2024 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 : PicoMite V5.09.00 release candidates

     Page 8 of 13    
Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 11:34am 03 Jun 2024
Copy link to clipboard 
Print this post

  Quote  I happen to have the F4 source open and initially had the same results.
After a fix to the source now gives this. The swapping of the rows and columns was being done in two places.


This is a fix that is already in my RC4 source - don't know when I did it.
Just checked and RC3 appears to be correct unless someone can say different?
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 12:30pm 03 Jun 2024
Copy link to clipboard 
Print this post

Hi Peter,

Yes, I can confirm that PicoMiteVGA V5.09.00RC4 works correct.
If you want, I can check the RC3's also (I have 3 RC3's from different dates).

Regards,

Volhout

P.S. Have you been working on other fixes that we could verify ? I have a few around the PIO assembler. This is the list I have compiled...

- MATH WINDOW bug in conversion from float to integer (fixed in VGA test release)
- PIO ASSEMBLE requires trailing space after word "pins" in MOV command
- PIO ASSEMBLE "push noblock" compiles as code &h8020 (= "push block")
- Request for feature ADC OPEN to start with GP28 (versus GP26) for GEEK use.
- PIO ASSEMBLER only programs code in memory when "list" option is used (.end program list)
- request for MATH POWER a(),factor,b() raises each element in in a() to the power "factor", writes to b().
- fix error message PIO WRITE (should say value 0...4294967295)
- MATH M_MULT bug (some matrix cells are not updated when b() and c() larger in size than a()) -> fixed in RC4 (must be a VGA test release, since RC3 is the latest).

EDIT: the RC3 on Geoff's website also works correct with MATH M_MULT, it is MMB4W and the 5.08.00 that show the problem.
Edited 2024-06-03 22:51 by Volhout
PicomiteVGA PETSCII ROBOTS
 
homa

Guru

Joined: 05/11/2021
Location: Germany
Posts: 351
Posted: 03:24pm 03 Jun 2024
Copy link to clipboard 
Print this post

Where can I download the firmware V5.09.00 release candidate RC4?
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 06:11pm 03 Jun 2024
Copy link to clipboard 
Print this post

Firmware V5.09.00 release candidate RC4 is now available for download from

https://geoffg.net/Downloads/picomite/PicoMite_Beta.zip

New:
MM.INFO(SYSTEM I2C)
returns I2C, I2C2, or Not set as applicable

MATH POWER inarray(), power, outarray()
raises each element in inarray() to the power defined and puts the output in outarray()

Allows I2C transfers of greater than 255 when using an integer or float array as the source/destination

Bug fixes:

MATH WINDOW bug in conversion from float to integer
PIO ASSEMBLE requires trailing space after word "pins" in MOV command
PIO ASSEMBLE "push noblock" compiles as code &h8020 (= "push block")
PIO ASSEMBLER only programs code in memory when "list" option is used (.end program list)
fixes error message PIO WRITE

Other:
I can highly recommend the Raspberry Pi keyboard with the USB versions. You will see a spurious GAMEPAD when you connect (something to do with their hub implementation) as well as the keyboard but it has three USB ports so you can still connect a mouse and a real game controller with no other wiring.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 07:06pm 03 Jun 2024
Copy link to clipboard 
Print this post

Hi Peter,

Thank you very much for these fixes. I will use the new code immediately.

I have one question about the RAM indicator when "memory" command is issued.
My program excessively uses arrays, so the 64k in 98 variables is to be expected.
36k (must be 38k) is a frame buffer for use with LCD
There is 60k free. What is these 60k? When I do a "new" total RAM is 100k.
But the 60k is part of the sum 40%+22%+38%, but not part of the memory (64k+36k=100k)


> memory
Program:
21K (16%) Program (837 lines)
111K (84%) Free

Saved Variables:
 16K (100%) Free

RAM:
 64K (40%) 98 Variables
 36K (22%) General
 60K (38%) Free
> new
> memory
Program:
  0K ( 0%) Program (0 lines)
132K (100%) Free

Saved Variables:
 16K (100%) Free

RAM:
  0K ( 0%) 0 Variables
  0K ( 0%) General
160K (100%) Free


And YES, I am out of memory.....

Volhout
Edited 2024-06-04 05:08 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 07:49pm 03 Jun 2024
Copy link to clipboard 
Print this post

Hi Peter,

Just to confirm your fixes:
- PIO ASSEMBLER issues are fixed
- MATH POWER works as expected
- MM.INFO(system I2C) nice addition

Thanks !

Volhout
PicomiteVGA PETSCII ROBOTS
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 07:51pm 03 Jun 2024
Copy link to clipboard 
Print this post

Ignore previous question about memory. I need glasses. PicoMite has 160k RAM, not 100k.....

Volhout
Edited 2024-06-04 05:53 by Volhout
PicomiteVGA PETSCII ROBOTS
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2135
Posted: 02:00am 04 Jun 2024
Copy link to clipboard 
Print this post

For the next manual:-
Minor typo in MATH WINDOW
Optionally, it can also return the minimum and maximum values found in the original data (“minin” and “minout”).

Replace with:-
(“minin” and “maxin”).
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 06:18am 04 Jun 2024
Copy link to clipboard 
Print this post

deleted
Edited 2024-06-04 16:21 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 02:06pm 04 Jun 2024
Copy link to clipboard 
Print this post

Hi Peter,

Just curious, is there any value I can get when I get an "out of memory" error.
I have just spend 1 hour to save 2kbyte of data memory, and still have an out of memory error. I need to know how much I exceed the memory boundary.

When it is just 2kb more, I can tune the code... If I need 10kb more, I need to give up on this approach, and re-think the project....

Another question: when I use local variables, is this memory freed up after exiting the SUB/FUNCTION ? Or is it still reserved (I moved DIM array(191) from main level into a SUB with LOCAL array(191) and hope to save 192*8=1536 bytes that are free at main level). I get the out of memory error after MATH M_MULT a(),b(),c() where the c()-array is 22kbyte in size, a() and b() are 6kbyte and 4kbyte). The MATH M_MULT is executed at main level.

Volhout
Edited 2024-06-05 00:11 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 02:31pm 04 Jun 2024
Copy link to clipboard 
Print this post

Harm

Please try the attached (VGA and standard) - It should use less memory in M-MULT if I've got the logic right


PicoMite.zip
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 03:08pm 04 Jun 2024
Copy link to clipboard 
Print this post

@Peter,

I have tested only VGA verions, but that one runs now without framebuffer. Enabling the famebuffer is an out-of-memory again. But VGA is fast enough. Since the PicoMite has more RAM available, I expect I can run the PicoMite with framebuffer (the LCD needs it).

Thanks, this is a dear improvement! Should I check the heap for free RAM when running ?

Volhout.
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 03:54pm 04 Jun 2024
Copy link to clipboard 
Print this post

Harm: One more tweak


PicoMite.zip

Please report
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 06:04pm 04 Jun 2024
Copy link to clipboard 
Print this post

Peter,

I tried this last one (3:54pm) on the PicoMite (nonVGA) with ILI9341 LCD and it runs, including framebuffer. And what is more, I can add up to 32 kbyte additional (DIM arrays) and the code using MATH M_MULT still runs. This is a giant leap forward.

Harm
PicomiteVGA PETSCII ROBOTS
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 06:13pm 04 Jun 2024
Copy link to clipboard 
Print this post

Peter,

Not that I will not directly use it(*), but in my search for speeding up the display of the 2790 boxes I have to draw on screen, I considered using the BOX command with arrays.

BOX x(),y(),w(),h(),1,c,f


For 2790 boxes i would need an array x(2790) and y(2790) containing the top left corner coordinates of the boxes. But since all boxes would be same size, the creation of w(2790) and h(2790) would be an utter waste of RAM. Of coarse when the boxes are square you would only need 1 array used in both locations.

Maybe that is an option on the future wish list for PicoMite. single integers for w and h, where x and y are arrays.

Volhout

(*) I can add 32k now with your second fix, but 2 arrays size 2790 are 44k. I still have to think how to solve that. But the BOX command using arrays is FAST (60ms versus 350ms in for next loops). So I may tinker with it, I may see ways to scale 3x and keep the update rate below 500ms....
Edited 2024-06-05 04:16 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 06:47pm 04 Jun 2024
Copy link to clipboard 
Print this post

Ignore
Edited 2024-06-05 04:58 by matherp
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 07:02am 05 Jun 2024
Copy link to clipboard 
Print this post

Short update Peter,

The last (3.54pm) update also works on VGA. On VGA I can even enable framebuffer, and still have 2kb RAM free. So the total gain is 40+ kbyte RAM in MATH M_MULT.

Thank you,

Volhout
Edited 2024-06-05 17:03 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 07:36am 05 Jun 2024
Copy link to clipboard 
Print this post

Great - I'll change the box command to allow scalars for w and h but that will have to wait until the weekend
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 07:42am 05 Jun 2024
Copy link to clipboard 
Print this post

Thanks !!!

I just tested it with plotting actual 2790 boxes size 5x5 pixels, and it brings the plotting time back from 350ms to 20.9ms. That is a factor of 15 faster (the 60ms mentioned earlier was an estimate based on smaller geometries, but this is the real thing).
Essential is that I keep the array for color, since all boxes are plotted in different colors. I am currently squeezing evey kilobyte from the code, so I can use this. The reward is so huge, it is worth it.

Volhout

P.S. Much of the RAM is used for changing values (voltages, temperatures, colors) so it needs to be in RAM. The screen coordinates x() and y() for the boxes however are (once pre-calculated) static values. Is there a trick to read them from flash in the BOX command ? Store a variable/array in flash like the trick with the tiles/sprites in a csub. It is 44 kbyte total when stored as 64 bit integers (they could even be 9 bit since the largest value is 320 on x() and 240 on y().
Edited 2024-06-05 17:53 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 07:25am 09 Jun 2024
Copy link to clipboard 
Print this post

Firmware V5.09.00 release candidate RC5 is now available for download from

https://geoffg.net/Downloads/picomite/PicoMite_Beta.zip
 
     Page 8 of 13    
Print this page
© JAQ Software 2024