Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 19:31 25 Nov 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 : Microcontroller and PC projects : PIO-Prog for Hub75 display

     Page 4 of 5    
Author Message
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 693
Posted: 12:00pm 11 Nov 2025
Copy link to clipboard 
Print this post

I've ordered one of these.
Yao Cai Xing Official Store
It's a P2 128x64LED 256x128mm Hub75 1/32 display for £18 free delivery.
See what turns up?
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 8315
Posted: 03:18pm 11 Nov 2025
Copy link to clipboard 
Print this post

It's the official store, so a dog collar and a fake remote that says (in the Chinese-only instructions) that it's for a compact cow milking machine.

Probably.

;)
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 02:20pm 12 Nov 2025
Copy link to clipboard 
Print this post

Hi together,

my last Bitmap-Userdriver for the Hub-display has problems with different fonts and "scale". I changed that in this version

Hub75User128x64.zip

I don't know if this is the quickest solution, but maybe someone would like to take a look at it.






If someone want to use my PIO-Program for the Hub75, I have noticed that the output no longer works with version RC11. For testing purposes, only use b14 up to RC10.


Regards
Albert
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 693
Posted: 06:05pm 13 Nov 2025
Copy link to clipboard 
Print this post

Thanks Albert, when my new panel arrives and I locate a spare 2350 Pico I'll attempt wiring it up and testing. :-)
Looking at your code, it looks like you have managed to use the standard screen frame buffer, set to the appropriate resolution, (128x64 in this case) so all standard graphics commands that would appear on the screen should work, is that correct?
Is there still a limitation on the firmware version, or did you or Peter resolve that?
Thanks Kevin.
Edited 2025-11-14 04:42 by Bleep
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 08:41pm 13 Nov 2025
Copy link to clipboard 
Print this post

Hi Kevin,

no, unfortunately I haven't figured that out.
I'm using the option to implement a display driver in Basic.
Here is the thread from Peter for this
MM-all: Display drivers in Basic

Unfortunately, PIO is still experiencing issues with the firmware. It appears to be related to the ring buffer. There has also been a change here.
  Quote  
nbr specified loopbackcount not specified (or 0)- standard single shot DMA
nbr  0        loopbackcount specified           - ringbuffer
nbr and loopbackcount specified and identical   - auto restart of the DMA on completion


If you configure the DMA TX transfer to “auto restart,” it will initially function with most displays. Then it's like my first approach and requires a few dummy bytes at the end of the data. A few changes need to be made for that.  

'for save displaydata(ringbuffer)
Dim integer Pack(2049)
'uncomment ringbuffer
'PIO make ring buffer Pack,4096*2*2  '64 x 64 x 2 in bytes by 16bit/color(2)



Sub StartHub75Pio()
 PIO dma tx 1,0,2049*2,Pack(),,,2049*2 '32 bit transfers auto restart
End Sub


greetings
Albert
Edited 2025-11-14 18:01 by AlbertR
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5485
Posted: 08:16am 14 Nov 2025
Copy link to clipboard 
Print this post

Hi Albert,

There are constraints for the ring buffer. It must be sized as a power of 2 (i.e. 2048, not 2049) and it must be at a 16k boundary in memory. For this to true, you must  define the ring buffer as the first memory allocation. Do not DIM any array before it, since that will shift the start address of the ring buffer.

Also the array is only DIM'ed without size.



Please find attached code where MMBasic streams data using a ring buffer into PIO, where PIO parallel outputs the data to a ladder DAC.


sin_gen_test_pkd.zip


But since Peter worked on his MMbasic VGA implementation recently, there may be another option. Peter has implemented automatic restarting DMA's into the PIO FIFO in V6.01.00rc12. That may be an even better way to do this, since you are outputting data only, and it could work with arbitrary array sizes. However, I did not test it. Look at Peters VGA code in the "an alternate way to make VGA" thread.

Volhout

P.S. when this code was written, there was a constraint on the maximum number of loops the ring buffer could make (the value &hffffffffffffffff). In current MMbasic you can set that value to 0, and it will loop forever.
Edited 2025-11-14 18:21 by Volhout
PicomiteVGA PETSCII ROBOTS
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 08:26am 14 Nov 2025
Copy link to clipboard 
Print this post

Hi Volhout,

thanks for the comment. But since RC12 the ringbuffer did not longer works with my PIO-prog. For a solution I comment the ringbuffer out and go back to the version with dummy-bytes at the end of the array. They are needed to delaying the end of PIO-stop.
The ringbuffer is not in use in the workaround.

Albert
 
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 4154
Posted: 08:50am 14 Nov 2025
Copy link to clipboard 
Print this post

  AlbertR said  since RC12 the ringbuffer did not longer works with my PIO-prog.

Is that a bug in RC12 (& does Peter know, if so)?

John
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 09:19am 14 Nov 2025
Copy link to clipboard 
Print this post

Hi John,

I am not an experienced PIO programmer, so I initially wrote “in my program”.
I would not want to say that it is a bug. Perhaps someone with experience would like to check it. I can't say if Peter knows it.

He read the comment in this thread that the graphic output of lines with a thickness of 1 does not work and he correct it with the last RC. Thanks for that.

Albert
Edited 2025-11-14 19:23 by AlbertR
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 10:24am 17 Nov 2025
Copy link to clipboard 
Print this post

Hi Peter,

I think I have found an other bug of the Userdisplay-driver in Basic

The picture show the problem, Roundes Boxes work in Outline perfect but fails in filling, with Polygons it is reversed.



Regards
Albert
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10646
Posted: 11:01am 17 Nov 2025
Copy link to clipboard 
Print this post

Please try RC14 and report
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 01:02pm 17 Nov 2025
Copy link to clipboard 
Print this post

Hi Peter,

I tried it with RC14, the same result. All other draw-functions for the "Userdisplay" works perfect as you can see in the video.


UserRboxPolygonTest_.zip


Regards,
Albert
Edited 2025-11-17 23:02 by AlbertR
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10646
Posted: 03:59pm 17 Nov 2025
Copy link to clipboard 
Print this post

What exact firmware version are you using? RP2040/2350 PicoMite vga etc
Edited 2025-11-18 02:00 by matherp
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 04:07pm 17 Nov 2025
Copy link to clipboard 
Print this post

It is the

PicoMiteRP2350V6.01.00RC14

Regards
Albert
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10646
Posted: 05:28pm 17 Nov 2025
Copy link to clipboard 
Print this post

I suspect your drawrectangle routine isn't sorting the coordinates


Sub mm.user_rectangle x1,y1,x2,y2,col
local integer t
If x2<=x1 Then
t=x1
x1=x2
x2=t
EndIf
If y2<=y1 Then
t=y1
y1=y2
y2=t
EndIf


The other bug will be fixed in RC15
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 06:55pm 17 Nov 2025
Copy link to clipboard 
Print this post

Hi Peter,

that helped, thanks.
Polygon and RBox work now.
Sorry, my mistake.

Greetings
Albert
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 693
Posted: 08:36pm 17 Nov 2025
Copy link to clipboard 
Print this post

Hi Albert,
Looks like my 128x64 HUB75 display panel will arrive in the next couple of days, it's past customs. Would you be able to post a complete, sample program to drive it for testing, maybe the one in your video above? or any other you think is suitable?
Do I need a 2350 for this size panel, because of the memory required?
Thanks Kevin.
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 12:47pm 18 Nov 2025
Copy link to clipboard 
Print this post

Hi Kevin,

here my last sample/test program for the user-display-functions. It knows
CLS ,PIXEL, LINE, BOX, RBOX, CIRCLE, TEXT, GUI BITMAP, POLYGON and ARC
I hope I did not forget one.

Hub75User128x64.zip
this time no video

At the moment, you need a 2350 for 128x64. I may change that in the future. Possible with only 64 colors(RGB222). It looks like nobody wants 4096(RGB444).

There is still the problem with the DMA TX-ringbuffer, but the appended programm should work with your display.

Regards
Albert
 
AlbertR
Regular Member

Joined: 29/05/2025
Location: Germany
Posts: 85
Posted: 01:38pm 18 Nov 2025
Copy link to clipboard 
Print this post

@ Peter,

I found something after all.
If I want to use "Transparent Text"(-1 for the background colour) for the UserDisplay, I allways got an "Error : Invalid syntax", for Gui Bitmap and Text.

If you have some time, could you check the PIO DMA TX ring-buffer function? It worked perfectly until RC10. Now I have to use “Auto restart” and a few dummy bytes. This works for most displays, but not all.

Regards
Albert
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10646
Posted: 01:56pm 18 Nov 2025
Copy link to clipboard 
Print this post

You can't use transparent text for user drivers .

  Quote   could you check the PIO DMA TX ring-buffer function?


show me the command you are using
 
     Page 4 of 5    
Print this page
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025