-
Posts
2,656 -
Joined
-
Last visited
-
Days Won
2
Content Type
Forums
Store
Downloads
Blogs
Posts posted by Joel Bodenmann
-
-
Agreed - Over five years ago this wasn't supported/working. These days it works just fine
-
I have no idea what you expect to get from such a post. Please read the documentation and ask specific questions.
-
Hi,
There's a step-by-step guide that shows you how to integrate the µGFX library into an existing Keil project: https://wiki.ugfx.io/index.php/Using_Keil_µVision_5_MDK-ARM
Make sure that the integration works and that µGFX is actually running before you enable the GDISP module.
-
Hi,
We don't currently have a PSoC 6 setup available. However, the basics are always the same.
Before you have your SPI peripheral spitting out the expected/correct waveforms there's no much sense digging into µGFX itself.I'm sure you'll get plenty of good help from people that actually use this platform. All that SPI & timer stuff is generic and not relevant to µGFX itself.
-
Please excuse the late reply - I wanted to digg out some sources.
We've plenty of people that use µGFX on nRF51 and nRF52 platforms. The nRF51 does have a systick. I've attached a GOS port and the corresponding systick handler implementation for an nRF51 port I made quite some time ago.
In general: You might want to check whether the µGFX core runs before starting to use optional modules such as GDISP and GINPUT. You can have a look at the GOS demos - they allow you to check whether the µGFX core is working correctly without using the display code.
-
I don't currently have any setup available that least me easily test the Linux event driver. However, I used it myself in the past without any problems.
I'd recommend you to setup a project that allows you compiling on a Linux machine with a desktop environment using the SDL2 port for easy debugging. Step through the code to figure out where it's going wrong.
-
Glad to hear that you managed to get it working!
-
well the most important thing is checking/changing the initialization sequence.
-
Hello & welcome to the µGFX community!
I'm glad to hear that you managed to get everything working.
We're always extremely interested in contributions like that!
-
Use the forum seach. You'll find that a lot of ILIxxcx users experience these kind problems. I've made a very verbose forum post about this just a few days ago. You'll find a lot of content about that.
-
Can you please attach a *.zip archive containing a minimum runnable test case that we can run?
-
Okay, so at this point we're pretty sure that there's something "wrong" in the board file. Unfortunately, that's always the trickiest for us to help with as it's completely out of our scope.
The following things are helpful to track down the problem:
- Tripple check your line logic: It's very common to accidentally invert the reset logic and similar,
- Lower your SPI clock to something <= 1MHz to rule out electrical issues due to too high clock speeds.
- Remove any DMA & general interrupt stuff and implement everything polling.
- Use a logic analyzer to confirm that the data on the bus matches the values passed to the board file functions.
- Most display controller provide some sort of chip ID-readout. You can query that in the drivers initialization function to figure out whether transmission is working correctly.
- The ILIxxxx display controllers tend to be extremely difficult to work with when ordered from chinese sources. The main issue is that you often don't get the chip that you though you get. Eg. sometimes you get an ILI9325 instead of an ILI9320. To make matters worse, some of the ILI display controllers have (completely) different initialization sequences for different chip revisions. Usually you get some demo code with the display module that you're buying. Verify that the initialization sequence in the drivers initialization function matches with that provided by the manufacturer. If in doubt, always use the one you received with your display module.
-
37 minutes ago, AlexK17 said:
I changed the parent to label and container to which the label belongs, but both
labels are shown only on the start page.
You do not have to change anything on the parent container.
Just to be clear: What you want to achieve is to have two display pages ghContainerPage1 and ghContainerPage2 as well as a label ghLabel1. The label ghLabel1 is supposed to show up both on ghContainerPage1 and ghContainerPage2 when changing the display page. You use the widgetSetParent() function I posted above in the guiShowPage() that is being generated by the µGFX-Studio:
void guiShowPage(guiPage page) { // Hide all pages gwinHide(ghContainerPage2); gwinHide(ghContainerPage1); // Show the selected page switch (page) { case PAGE2: widgetSetParent(ghLabel1, ghContainerPage2); gwinShow(ghContainerPage2); break; case PAGE1: widgetSetParent(ghLabel1, ghContainerPage1); gwinShow(ghContainerPage1); break; default: break; } }
-
You misread the code that I posted (and probably the explanation/legend I posted below the code snipped). Just translate it to pure C code:
void widgetSetParent(GHandle widget, GHandle newParent) { gwinHide(widget); gdispFlush(); // This is optional and only required in certain driver scenarios to prevent artifacts from showing up. widget->parent = newParent; gwinShow(widget); }
-
Yep, that seems correct. I remember that I left of pretty much at that point. I still wish to finish it at some point. If I remember correctly it's like 95% done.
The segfault should be easy to track down as it will be either a buffer allocation or an array index overflow. -
The spinbox in that branch is made for nummeric values, not texts
-
Glad to hear that!
The online font converter tends to be down quite a lot (we currently have about 80% availability on the statistics). The reason for that is because we're hosting quite a lot of servers (µGFX is a spin-off of an already existing engineering company. We're running a lot of stuff for different projects and also customers. Whenever we do any kind of migrations, changing environment or doing any other kind of modifications we test everything in a test setup. Once we feel comfortable we always move the µGFX online font converter first as it's a pretty good reference server (it uses a few different technologies) which allows us to test everything from simple backups to load balancing and high availability systems.
It's just that the online font converter is the perfect balance between "not critical infrastructure" and "people actually use it" which is just awesome for testing everything before touching real production environments.
-
Hi,
We are manually moderating all git server registrations. This process will change with the release of µGFX 3.0. For now, just let us know your registration username or e-mail and we'll manually validate your account (feel free to PM so you don't have to share any info on this public forum).
-
I'm standing between doors right now so I haven't checked your actual code yet, but let's work our way through the basics:
- Did you use the debugger to check whether the system is halting somewhere?
- Are you getting the µGFX logo to show up but you simply don't get your own stuff to show on the display (make sure that the startup logo option in the configuration file is enabled)?
- Did you check that the integration is actually working? You might want to run one of the GOS demos to confirm that stuff like software timers and threading is working correctly
-
That doesn't matter. As I said it's code from a wrapper around the normal uGFX window.
-
Thank you for your feedback - much appreciated as always!
The next release is very near. So far we've added static text items to the background editor and I've also reworked the way that post generation stuff works. It's a lot nicer and a lot more flexible now.
I'm not sure if we add arraying support for the next release already or if we move that to a different release. -
That sounds great! I'm looking forward seeing that widget
You simply add the function to the widget's VMT which handles incoming dial events - simple as that! --> https://wiki.ugfx.io/index.php/Creating_a_widget#VMT
-
If you need information on multiple display pages the recommended way of doing things is making the page container smaller and adding the widgets that display the required information within the area not covered by that display page. There's an example of a statusbar widget in the download section.
If that is not possible (eg. due to how the UI is designed) you can actually change a widgets parent container. Here's a code snipped of a C++ wrapper class that is used inside the µGFX-Studio to accomplish this:
void UGfxWindow::setParent(const UGfxContainer* parent) { // Sanity check if (!_ghandle) { return; } // Sanity check if (!parent || !parent->handle()) { return; } // Change parent container gwinHide(_ghandle); gdispGFlush(_ghandle->display); _ghandle->parent = parent->handle(); gwinShow(_ghandle); }
_ghandle is an attribute that is simply the GHandle of the µGFX window. Similary, parent->handle() is the GHandle of the new container.
-
Hi,
Yes that's, possible. But it's currently not implemented in the µGFX-Studio itself. But you can compile any µGFX application as a native desktop application (eg. Windows, Linux, MacOS, BSD, ...). The cool thing is that it's not a simulation or emulation like with other libraries, but instead it's a native application using the native µGFX library. Therefore, every single pixel is exactly like it will be on the target device.
Here's the guide on how to do that on Windows: https://wiki.ugfx.io/index.php/Your_First_Compile_-_Windows
You'll find similar guides for Linux and MacOS.Eventually, the µGFX-Studio will generate the necessary code (main code, configuration file, ...) and render it as part of the studio.
PSoC 6 - ILI9341 help please!!!
in Support
Posted
That's nice, thanks for sharing!
Is this in a state where we could add it as an example to the downloads section?