Just a quick question.
I am using one of the new CY8CKIT-042 PSoC4 Pioneer Kits.
There are some things that I am not able to get working on it (like a simple 16x2 LCD display), even though I have tried everything that I know to try.
I am no expert using Creator (3.0), or the PSoC, or the 'kit', but I am really reaching the end of things to try.
As a last resort, I got out my magnifier and read the Part Number on the PSoC4 chip. It is...
My question... What does the 'ES' stand for?
If it is what I think it means, then I am using an 'Engineering Sample' part on this board. (Or trying to use one.)
Can someone shed some light on this? If it _is_ an Engineering Sample (and I have purchased two (2) Pioneer Kits - both have 'ES' parts on them), then this may explain why I am having difficulties.
ES is engineering sample. My kit, also is ES labeled.
Post an archive of your project for forum to take a look at, under file menu in Creator.
When you post don't use Chrome.
I assume you are using a 44780 controller based LCD ? Part number, datasheet also helpful.
And how you have it connected to kit.
Before I upload my code, perhaps someone could verify if they have gotten a 16x2 LCD display to work on the Pioneer Kit.
I am using the provided LCD component, and have it hooked up to the only contiguous port available on the Pioneer kit - P2[0-6].
I get nothing on the display.
The only thing that works is the potentiometer that makes the display darker when adjusted.
A search for "Pioneer LCD" at the top of this page reveilled at least this thread www.cypress.com/ which at this time I could not follow since the target server seems to be down temporarily.
So there ARE Pioneer kits with a connected LCD.
It is quite usual habit to sign the first chips on the market as "ES" since the specs are out and the users may come up with problems they have found so far which then would be written down in the Errata-sheet. As you can see (or rather: as you cannot) there is no errata for the PSoC4 yet, indicating that the Cypress engeneers did a comparable good job (this time).
So lean back and relax. When something is not working it might be your fault, it might be hte system's fault. But I estimate the chances are 95 by 5.
What about posting your complete project? Some of us already asked for that. Fastest way to get help here.
Thanks for the input. Yes, I saw the First 50 projects thread, and got my hopes up that I had a solution in that. I spent a lot of time (about 15 to 20 minutes) downloading a huge Zip file.
I then unzipped it, and looked for that one 'Character LCD Display' program, that turned out to be ... not there. What is being used is some graphic touch screen display, or other non-related device.
I, too have experience with 'ES' chips, I.E. the PSoC 3 - and am therefore leery of anything from Cypress with 'ES' in the part number.
I will post my code later today, but want to review it one last time, and clean it up a bit, which may also help me find a solution on my own.
As for Dana's comment about using a Hitachi 44780 - these haven't been made in a while. I am using a compatible part that is newer - and runs at 3.3 volts. Unless she (or anyone else) has a part number of an approved LCD display that I can use.
Dana, I am using an LCD Display with a ST7066U controller - which I have researched, and I believe is compatible.
Yes, I have the Potentiometer hooked up, and so far, that is the only part of the LCD that _is_ working. I get a solid black bar when I turn the pot all the way to one end of travel.
Looking further in to this - I will post more on this later after I have run more tests.
James, first link in prior post worthless, its a SPI interface to LCD,
but second link might still be of value.
Just as an aside, you issued a LCD_Start() to the component ? I have forgotten in
the past to do that myself.
Dana said, "Just as an aside, you issued a LCD_Start() to the component ? I have forgotten in the past to do that myself."
Dana, yes, I did an LCD_Start.
I also spent the entire day, wiring up a different LCD Display. I ran this display using the program, and am getting the same results. Nothing on the display.
I have checked, double-checked, triple-checked, quadruple-checked (are you seeing a pattern here?) the wiring to the LCD. It is per the documentation for hooking up the LCDs. I have it correct, per the documentation.
I have attached the Archive of the program that I am using. (I hope it is attached...)
I have yet to hear from anyone who has personally wired up an LCD display to the PSoC4 Pioneer Kit, and gotten it successfully to run.
I do not need 'example code', I believe that I have looked up a good example that was included with the Pioneer Kit, and copied much of that to my program.
In fact, I programmed the example code into the Pioneer Kit, and it does not produce a display on the LCD either.
All I know is that I have been working on this - just the display - for over two weeks now. If I cannot get it to work, I am abandoning the PSoC4 as a viable microprocessor for my next project, and will use something else.
I am at a remote site, so do not have capability of wiring up LCD, but
using Pioneer kit I observe the following -
1) Delays do not seem to work right
2) You do not need LCD_Init(), thats taken care of by Start(), it calls Init().
3) Setting breakpoints do not seem to work right, in fact I got a debug error from the tool,
not the code, and debug exited on its own.
4) I had to update firmware on my board, to 2.03, not sure if this is connected to anything.
5) I looked at LCD signaling, looks like display is gettting written to. Again, I do
not have a display connected.
I would post a CASE at (point them to this thread) -
"Create a Case"
I found some remarks regarding the ST7066U needs some longer delays than the Hitachi controller requires. There are some complains of other users not getting the chip initialized or needing two initialization sequences. I would suggest you to check for solutions provided.
I made a little progress, but breakpoints still not working.
In fact board breaking at API C code, but all BPs have been cleared ?
I also changed to Minprog3 to see if PSOC 5LP causing issues. No
"In fact board breaking at API C code" I had a similar experience once, after removing the USB-Port driver and rebooting PC and re-connecting the Pioneer-board that bug was gone. All happened on a vista machine.
I did, in fact, connect a 16x2 LCD to the PSoC4 Pioneet kit. And I can prove it with pictures, since I did so as part of my frequency counter blog series. As I needed to re-route the LCD connections to different pins (and could not use a port because of this) I used the multi-port LCD component (see also here).
@Bob, no idea what is going on. I did as you suggested, uninstall driver including
remove old driver SW option, reboot, reinstall thru board USB port not working, So
went to Miniprog3 again, even that is not break pointing properly. I am going to try
reflashing board PSOC5.
Project is posters posted archive.
I did the reinstall of the 5LP boot loader, using programmer, then windows
wakes up asking for a driver, I point it towards the -042 install directory, NADA.
Now, One man will abandon the Pioneer-Kit.
Don't worry, Here I come.
He love the fact rather than pdf
His name is PSoC73, A drifting cowboy,
His family roots is Japanese Ninjya
All Bugs will run away.
Anyway, I'm doing your design
Fortunately or to say unfortunately
I got a same result that you said
The Investigation is now starting
Be more patient.
This is a LCD start up wave form, Too short!
As you know, LCD initial sequence needs long delay as 40ms..
It is very clear to see LCD_Char.c
This form measured as 68.8 us, this is whole LCD initial time span.
Might be PSoC4's initial sequence of clocking has wrong
CyDelay must has malfunctions.
I would be prove this things.
This is Problem of LCD_Start()
I was change initial sequence as ...
..... Pin_Trig_Write(1); // start trigger
// LCD_Char_Start(); // this was coment out
... LCD_Char_Init(); // for instead
... LCD_Char_Enable(); //
..... Pin_Trig_Write(0); // end of initiate
This time, 83.47 ms
It seems as usually but still not working
I have notice last 10ms, something many data was shown
It is not as usual.
"Now this is the time for all brave men"... to create a MyCase getting Cypress informed of this issue. They have got a lab that's a bit larger than ours (at least in San Jose and at least mine ) so it may take them just a few days to nail down the problem.
Deliver them *aLL* your documents, wiring and part-numbers of your used display, point to this thread and let us see what's coming out of that.
You also might want to try to "multi-port LCD" component. There was a version of it where the release notes was "increased delays", so maybe you have more luck with that...
Odd that LCD_Init() prodices a longer startup, as LCD_Start() calls LCD_Init( ), generated code looks like
/* If not initialized then perform initialization */
if(LCD_Char_initVar == 0u)
LCD_Char_initVar = 1u;
/* Turn on the LCD */
Good morning to all,
Over the weekend, I did a bit more soldering, adding another header for a new LCD display.
I plugged it in, and 'fired it up', so to speak. Alas, no display.
I also downloaded the LCDmp (multi-port) Component (as suggested) and tried that - assigning it to the same P2 port pins, since doing otherwise will require me to add additional wiring to a different Port, and a new header (I'm running out of supplies here... hahahaha).
One note - If you look at the LCD.c and LCD.h files and compare them, you will notice very different code between the LCD Ver1.90 Component and the LCDmp Ver 1.20 Component - which may be why one works, and the other doesn't - for the gentleman that is using LCDmp and getting it to work on the PSoC4 Pioneer Kit.
Also, there is some interesting 'bit-shifting', and 32-bit vs 8-bit code going on in the PSoC4 code. They have specific 'if-then' code for the PSoC4 that does not get executed for the PSoC3 or PSoC5 processors. The LCDmp does not have PSoC4 specific code in the LCD.c file.
Yes, I have also been looking at timing and delays - adding my own CyDelay(xxx) to my code to try to slow it down enough so that the LCD display can boot up and initialize. Anything further takes me in to modifying the LCD.c code, which I am not too comfortable in doing - yet - but may have to, to get it to work.
I have also printed out datasheets (partial pages) for the respective LCD drivers - making sure that they are compatible (they are).
I'm not a software engineer... I'm a code hacker. This is getting deeper that I like to go with a simple 'LCD Display' type of thing, that should work 'out of the box'.
Thanks for all of your help and suggestions so far. I am a bit frustrated.
Just wait for my next question. I'll start another post for that one. 😉
One more thought on this. I have been looking at the Instructions that can be sent to the LCD controllers.
I am also comparing these Instructions utilized by a different microprocessor (made by a different company) that has LCD support. I am finding discrepancies that are not explainable.
None of the codes should be the same. There are redundant codes - I.E.
Which code gets used? The correct code. That would be the Reset Cursor code.
There are others, too. From my research, the 8-Bit & 4-Bit Init codes should be 0x30 & 0x20 (not 0x02 & 0x03). I am not however able to change these in the .h files.
Another code that may be affecting my display is the '2-Lines' command, which should be 0x28 and not 0x2C. (According to the Hitachi datasheet, when using 2-lines, you need to use the 5x8 font, and not the 5x10 font).
Minor discrepancies? Perhaps. All I know is that the display is not working and they are sending commands to the display that are different than the commands that a different microprocessor is using.
The commands send to the LCD are not a property of a microcontroller. They are a property of the program running on the MCU. So the other MCU you are looking at is just running another program... Are you able to run your display with that other MCU?
So if you know which bytes are send over the wire, you can verify with the ST7066U data sheet (http://www.newhavendisplay.com/app_notes/ST7066U.pdf , page25) whether they are correct or not. Also, you should verify the delays between the commands.
If all else fails, try to initialize the display manually - its not that difficult. If you succeed with that, you can then check what is the problem in the Creator component, and report a bug... (I have only displays known to have a HD44780 on them, and the other ones where I don't know the chip work properly...)
I was tried some different way
Multi port LCD module and different patern of pin assign.
Change initial command that came from PSoC1 LCD module.
Change delays timing.
Basically, Creator's LCD module has no problem
at least with PSoC3 and PSoC5
PSoC4's program directive part (#if #else) is wrong?
I can confirm that the LCD module (at least the multi-port LCD) works fine on the PSoC4:
This is a HD44780-based LCD (its one from a -050 kit IIRC).
I noticed the signal bit toggle is odd,
Look at LCD4.jpg, this is initial sequence
First setting signal was shown as ... 3/3/3/2
E is the strobe signal, this must toggle on every nibble(D4-D7 data)
but it was toggle only 2 times, as you see
It must be 4 times, on every nibble.
This is a clue
So far, I have been made a renewed test bench
And signal behaviour is strange still
Even it is transparent output, but the timing was shifted,
This is not what I want to toggle
This is a clue
I can't say nothing at all
Look at this picture, LCD5.jpg
Signals quite NOT correspond as I issued
Nibble data is 3/3/3/2 and I was fire strobe 3 times for one nibble, this is to ensure strobing.
And there is zero between 3 - 3, which not strobed
But as you see, continuous 3 and 2 (last data is 2)
Where is strobe signal, that must shown 12 times !
What's was going on PSoC4?
I recall similar issue
Once, I notify that PSoC1's timing is strange in case using shadow register
But i had lost interest to that.
Is this relate with PSoC4 architecture?
I don't know
The time-resolution in LCD4 is not good enough - 10ms/div. The time for a single by is in the microseconds... So each pulse on the EN line is one byte transfer.
But in LCD3, one can see a single byte transfer, and it looks fine (R/W goes high for a read, and there are 2 pulses on EN to read both nibbles).
The initialization in LCD4 looks fine, when compared with the HD44780 data sheet (see page 46): first, write a single value of 0x03 (one nibble only), wait at least 4.1ms, write another nibble of 0x03, wait 100µS, write 0x03 - this will set the 8-bit-mode. The next write of 0x02 (single nibble again) will then set the 4-bit-mode. Then the normal initialization starts, by writing two nibbles per byte.
For initializing an HD44780 display to 4-bit-mode, the first 4 nibbles to be send are 3/3/3/2. Each needs to be strobed a single time. There need to be at least 4.1ms between the first 2 nibbles, and 100µS between then second and the third.
But I can only repeat: I know that the multi-port-LCD component works with a HD44780 display out of the box. So either your display is not compatible, or something in the wiring is wrong...
Again: I found remarks regarding the ST7066U needs some longer delays than the Hitachi controller requires. There are some complains of other users not getting the chip initialized.
PSoC73 said "My LCD under test is SC1602BBWB-XA-LB-G"
That LCD uses the ST7066U controller - not the Hitachi controller. (I've attached a datasheet for your LCD Display) This is the same controller that my LCDs is using - although, I also tried other LCDs with the same results (but I didn't drill down to determine the controller on those LCDs - so they may also be using the ST7066U controller.)
I guess the solution is to only look for, and buy LCDs that use a Hitachi controller... but aren't these going to put us back a few years in technology? I was hoping to use one of the more modern LCD displays. I was also hoping that I would not have to worry about having to specify a certain LCD display for my product, that would be compatible with the PSoC4.
On another note, I did create a Case for this issue, and so am getting help from Cypress through that avenue.
Also - I want to state that I am running the PSoC4 at 3.3-volts and the LCD display that I am using is also spec'ed, and running at 3.3-volts. This may make a difference, if the PSoC runs slower at a lower voltage (not sure, but some processors do).
Also - to head off any 'well switch it to +5-volts' comments - I did that (at the risk of letting the magic smoke out of the LCD Display). I moved the jumper on the Pioneer Kit to the +5-volts position, which is now powering the PSoC4 at +5-volts. (The LCD display is still wired to +3.3-volts.)
The result? I get a much brighter LCD Display of black bars - and it is still not working.
Thanks for all of the help and suggestions. I'm not sure what I will do at this point. One of the reasons for going with this PSoC4 was the I/O and the ability to use Creator to create cool firmware that could run - and include a display in my project. If I am not able to add a display - I may as well stay with what I am using - a BS-2 from Parallax.
Can you post your project, and the schematic you are using (the real one you have wired up)? I will look this evening whether I have a ST7066U display around and will test it on a Pioneer Kit.
Does your display work within another project?