Jump to content

Joel Bodenmann

Administrators
  • Posts

    2,620
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Joel Bodenmann

  1. Have a look at GDISP_NEED_STARTUP_LOGO in the configuration file. By the way: It seems that your display (pages) are swapped. Left and right are swapped.
  2. The display controller is physically connected to your microcontroller/system via some kind of bus. For example parallel or SPI. The acquire_bus() and release_bus() functions are called by the driver itself (which is independent from what interface/bus is being used) before and after making a bus transaction. These functions allow you to acquire the bus before talking on it and releasing it once you're done. In case of a simple SPI interface this is where you want to set your CS pin level accordingly. More complex systems might need to call OS functions to acquire/request bus access and stuff like that. The GDisplay structure represents the actual display. You can have a look at the documentation to figure out what information is contained. Usually you're interested in this when dealing with multiple displays or requiring the private board file area.
  3. Yep, that's correct: Pixmaps are meant to be used for this. Single-file inclusion is just a method designed to be as comfortable as possible. You can always include the µGFX library sources the classical way. It's just a bit more work. But now that you already know µGFX a bit it should be fairly simple
  4. And a GINPUT toggle for the pushbutton to select stuff
  5. Glad to hear that you got it working! I'm not sure about what v3 repo you're talking about tho. You should be using the master branch of the official uGFX git repository: https://git.ugfx.io/uGFX/uGFX That branch will become v2.9 which contains the new type systems and other things to prepare for the v3.0 major update.
  6. In general you don't want to build µGFX as a static library because there is A LOT of pre-processor magic happening that optimizes tons of things during compile time. We've had many customer projects where they wanted to build µGFX as a static library. After some short argumentations they usually dropped that idea fast - except for one customer. And from there on it was a constant pain in the butt. A lot of time was lost due to different problems that only arose due to building µGFX as a static library. I'm currently on the road so I've limited comfort to write down detailed reasons. But in general: No you don't want to do that except some very specific special cases where you'd know that you want that and why. I hope that helps.
  7. What you want is the Toggle driver of GINPUT. It allows to attach hardware buttons to µGFX applications. There's a working example for some Atmel SAM platform. You might want to use the forum search on "toggle" to find more information.
  8. Hello & welcome to the µGFX community! You will certainly be able to run µGFX on that hardware with that SDK. There's not really much to it. As expected: Setup a working project and then add µGFX to it. As you've mentioned there are guides for that (you might want to have a look at the agnostic guide as well).
  9. GDISP drivers have an interface for reading out the framebuffer. You can use that to get direct access to the pixel data. But keep in mind that uGFX itself doesn't need a framebuffer. So there are certain setups where this won't be possible because there's no framebuffer accessible. If this is a higher end application you might already be using Pixmaps which are essentially framebuffers. The Pixmaps have high-level API to return a gdispImage object of the framebuffer contents.
  10. That's nice, thanks for sharing! Is this in a state where we could add it as an example to the downloads section?
  11. Agreed - Over five years ago this wasn't supported/working. These days it works just fine
  12. I have no idea what you expect to get from such a post. Please read the documentation and ask specific questions.
  13. 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.
  14. 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.
  15. 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. ugfx_port.c gos_nrf5sdk11.c gos_nrf5sdk11.h
  16. 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.
  17. Glad to hear that you managed to get it working!
  18. well the most important thing is checking/changing the initialization sequence.
  19. 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!
  20. 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.
  21. Can you please attach a *.zip archive containing a minimum runnable test case that we can run?
  22. 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.
  23. 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; } }
×
×
  • Create New...