![]() |
Forum Index : Microcontroller and PC projects : PIO-Prog for Hub75 display
![]() ![]() |
|||||
Author | Message | ||||
AlbertR Regular Member ![]() Joined: 29/05/2025 Location: GermanyPosts: 46 |
Thanks, Don. Sorry that the change didn't work. I was able to reproduce the error by reducing the dummy bytes, which is why I tried it. The P4 displays I ordered should arrive next week. I'll continue researching on my own for now. If they don't have this problem, I'll be happy to get back to you. I know the problem with brightness and the camera. The images don't reflect reality. You create very attractive displays. Where do you get the time and temperature from? Do you synchronize the time continuously with your source or just once a day? There is still an error in my program. I made the transfers for the hours too simple. It was probably too late in the evening. I have improved it in the WS2812 version for now. Regards Albert |
||||
bigmik![]() Guru ![]() Joined: 20/06/2011 Location: AustraliaPosts: 2968 |
Gday Albert, All I am really impressed with your demos Albert. I hope to have a play with it soon, I have ordered 2 displays (both cheap indoor to test) 1 is a P2.5 64x64 square display the other is a P4 64x32. I am keen to see how they go. Regards, Mick (The big one) . Mick's uMite Stuff can be found >>> HERE (Kindly hosted by Dontronics) <<< |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5328 |
Albert, I am not sure this is new to you, but do you know that PIO can use a ring buffer ? It will endless send the content of that buffer without MMBasic interference. So you do not need TX DMA interrupts. I use this in the logic analyzer (a ring buffer is being filled waiting for a trigger) and a function generator (a ringbuffer is endless played with sine wave data in it). The analog output is generated from a ladder DAC connected to GPIO pins. Attached is the function generator core. It uses the ring buffer and TX DMA. But the TX DMA returns after 2^32 loops (&hffffffff). I think in current MMBasic, if you enter for "repeat" the value 0, it will loop indefinite. sin_gen_test_pkd.zip Regards, Volhout P.S. If you start experimenting with it, take notice of the fact that the ring buffer should start at specific address in memory. That is best achieved if you make sure the ring buffer is the first variable array you define. Edited 2025-10-09 20:03 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
AlbertR Regular Member ![]() Joined: 29/05/2025 Location: GermanyPosts: 46 |
Hi Volhout, Thank you for your support. I know the ring-buffer, but I did not know how I could change the data in it, during the PIO use them. As long as the data does not change, it would be the best solution, but what if they do. From your SineGen-example, you stop the PIO, first checking if it runs. Is the PIO stopping at a defined read-position or can I check where it is? Where will the PIO start after "Pio init machine"? I think not at the last data-pos. I'm going to give it a try, somewhere there is a solution. Possible a change in the firmware by handling the IRQ. ![]() |
||||
Canada_Cold Regular Member ![]() Joined: 11/01/2020 Location: CanadaPosts: 45 |
Hi Albert, The clock display I built uses a DS3231 as the RTC. There is a fantastic code example called “Super Clock” on Geoff’s website. https://geoffg.net/SuperClock.html The temperature display is from a AHT10 module. These are available on Ebay, and are very cheap, but do have very good accuracy. I used the code posted by phil99. Also an excellent code example. https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=16276 The display if in Fahrenheit and is displayed with 2 decimal points. That’s likely to much information for a general display, however the one pictured is setup in my work shop. Don |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 5328 |
Hi Albert, For MMBasic the ring buffer looks like a linear file. When you start the DMA it will start from the beginning of the array. Only at the end it will wrap to the beginning. But for MMBasic it simply is a linear array. I haven't tried it, but I would not be surprized that you can write changes to the array while the PIO DMA is running. EDIT: just tested, and you can MATH SET xx,array() while TX DMA is running. /EDIT The only thing important is to keep display and array in sync. EDIT : One way to do that is to make the sync signal become part of the array. Then data and sync signal will always be aligned. /EDIT Volhout Edited 2025-10-09 22:08 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
AlbertR Regular Member ![]() Joined: 29/05/2025 Location: GermanyPosts: 46 |
Hi, @ Volhout, the sync in the data is a good idea. I had one for EndOfLine, i will try an addtional EndOfPage or something like that. Thanks ![]() @Don, thanks for the links. Sometimes it's difficult to keep track of everything in the forum and find the things that interest you, especially if you don't know about them yet. @Mick, I will program a version for a 1/32 scan-display soon. Also I will change the structure of the workarray to save memory and to increase the speed, I hope ![]() The connection will be also changed to make it easier to expand the colordeep if wished and possible switchable. I think ,it is still a project in development. Regards Albert |
||||
![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |