Using coprocessor (FT813)

FTDI/Bridgetek EVE2 & EVE3 & EVE4 SPI TFT Series by Matrix Orbital

Moderator: Mods

Post Reply
rascalito
LCD Geek
Posts: 38
Joined: Sat Apr 18, 2020 11:22 pm

Using coprocessor (FT813)

Post by rascalito »

Hello!

I could get started by using several examples and I'm able to initialize the display and write shapes using the RAM_DL
memory space. However, I still don't understand how to get the coprocessor working. Please look at what I have written (1)

When I use the RAM_DL part, (no coprocessor slider, #define COP_SLIDER 0), it works, and I get a white rectangle
on blue background.

As for the coprocessor "slider" command, I wrote it with wr32 and wr16 commands, but I'm not sure how to finish the list.
In the DL command method, there is write DLSWAP_FRAME command, but how can I close a coprocessor list?
Basically it does nothing. Coudld anybody tell me what's wrong?

Thanks

R.

CoProcessor.PNG
CoProcessor.PNG (36.75 KiB) Viewed 3113 times
(1) By the way, when I posted code with BB code tag, the form replied "forbidden, contains contacts, probably spam", I found
no other solution than taking a screen copy. Can anybody tell me how to post code? I used the BB code "code" (between
brackets) as on many other forums to post it, but it doesn't work.

Next problem, I pressed preview, not post, and it says: Forbidden. You sent forms too often. Please wait a few minutes.
I already waited close to 10 minutes (not checked, but in the meantime, I got one phone call, made a screen copy, etc...).
How long am I supposed to wait in that kind of situation? How long should I wait? (Right now, it works because the problem
was yesterday evening, but it would be nice to know approximately how long I have to work, and it would be even better
to be trusted because my first messgagses show (I think) I'm not a spammer.

Raquel
Matrix Orbital
Matrix Orbital
Posts: 796
Joined: Thu Aug 19, 2004 3:37 pm
Location: MO Office

Re: Using coprocessor (FT813)

Post by Raquel »

Hello R,

If you please take a look at sections 5.3 and 5.4 of the manual, it explains interaction with RAM_DL.
Co-processor commands are not to be written in the RaM_DL, as the co-processor will be the one writing them to the RAM_DL.

If you also want to check out our sample code here:
https://github.com/MatrixOrbital/Basic-EVE-Demo

Thank you,
Raquel Malinis
Design and Development
Matrix Orbital

rascalito
LCD Geek
Posts: 38
Joined: Sat Apr 18, 2020 11:22 pm

Re: Using coprocessor (FT813)

Post by rascalito »

Hello Raquel!
Co-processor commands are not to be written in the RaM_DL, as the co-processor will be the one writing them to the RAM_DL.
Yes, that was my intention, not to write in RAM_DL, and therefore the attached picture shows that Ihave written everything in
RAM_CMD.
If you please take a look at sections 5.3 and 5.4 of the manual, it explains interaction with RAM_DL.
I will assume you are referring to 5.3 and 5.4 of "FT81X Series Programmers Guide Version 1.2 Issue Date: 2018-10-02"

I have understood how to use the DL memory, and it works because it's almost fully described in the documentation.
Code snippet 8 gives a full source code except the last SWAP command. This code is absolutely not ambiguous, and
the code I wrote in the bottom part (#else) of my code is based on code snippet 8. And the attached image has been done
the same way, all in the DL memory because I couldn't use widget sliders.

Snippet 8 is very clear because it says what I have to write and where, using wr32 which is basically a SPI command.
So if I write everything from CLEAR to DISPLAY, and then use the SWAP command, it works. In my application, I wrote
all the sliders by hand, but now I would like to use the coprocessor.

I know that if I fill FT813::Test() function with code snippet 8, and finish it with a swap command (wr8(REG_DLSWAP, DLSWAP_FRAME);)
then it works. Now I'm trying to do a simple slider in the CMD buffer. But for the time being, I will stick with the very first
documentation example in 5.3, which should produce (I guess), a red background.

The documentation code snippet is like this:

Code: Select all

	cmd(CMD_DLSTART);					// start a new display list
	cmd(CLEAR_COLOR_RGB(255, 0, 00));	// set clear color
	cmd(CLEAR(1, 1, 1));					// clear screen
	cmd(DISPLAY()); // display
As cmd is defined page 9 as "write 32 bits command to coprocessor engine FIFO RAM_CMD",
I supppose it translates to this, according to command layout of Button, paragraph 5.28

Code: Select all

void FT813::Test(void) {
	wr32(RAM_CMD, CMD_DLSTART);
	wr32(RAM_CMD + 4, CLEAR_COLOR_RGB(255, 0, 0));
	wr32(RAM_CMD + 8, CLEAR(1, 1, 1));	// clear screen
	wr32(RAM_CMD + 12, DISPLAY());
	//	Verify if something has been written
	mDLPos = rd32(REG_CMD_DL);
	//	Swap
	wr8(REG_DLSWAP, DLSWAP_FRAME);
}

Now the documentation says (5.3, interaction with RAM_DL) that the coprocessor manages
a register, REG_CMD_DL, and that this one should give me the position in the current DL buffer.
When I read the contents of REG_CMD_DL, it always reports 0.
So I guess I have to send an instruction to the coprocessor to tell it to translate the CMD list to DL list.
Could anybody tell me what exactly is missing here?

Best regards,

R

PS: for info, my current hand written application looks like this.
Sliders.jpeg
Sliders.jpeg (41.63 KiB) Viewed 2904 times

rascalito
LCD Geek
Posts: 38
Joined: Sat Apr 18, 2020 11:22 pm

Re: Using coprocessor (FT813)

Post by rascalito »

Hello!

I think I got it.

Here is the result:
Sliders2.jpeg
Sliders2.jpeg (47.43 KiB) Viewed 2888 times
R

Raquel
Matrix Orbital
Matrix Orbital
Posts: 796
Joined: Thu Aug 19, 2004 3:37 pm
Location: MO Office

Re: Using coprocessor (FT813)

Post by Raquel »

This is awesome, thanks for sharing!
Raquel Malinis
Design and Development
Matrix Orbital

rascalito
LCD Geek
Posts: 38
Joined: Sat Apr 18, 2020 11:22 pm

Re: Using coprocessor (FT813)

Post by rascalito »

Hello Raquel!

Something I don't find in the documentation:

1. Is there a way to write the slider in the opposite direction?

2. Is there a way to set another color for the white part? Apparentlty I can change only the

3. If not, is there a way to access the DL list generated by the coprocessor in order to modify it and
write my own widgets in the DL space?

Thanks,

R

Raquel
Matrix Orbital
Matrix Orbital
Posts: 796
Joined: Thu Aug 19, 2004 3:37 pm
Location: MO Office

Re: Using coprocessor (FT813)

Post by Raquel »

Hello R,

If you please check out Table 18, Widgets Color Setup Table on the programming guide.
Also, with the color change, the color interpretation can be deemed the direction of the slider.

Code: Select all

Cmd_FGcolor(MAKE_COLOR(255, 0, 0)); //Red Knob
Cmd_BGcolor(MAKE_COLOR(0, 255, 0)); //green right of Knob
Send_CMD(COLOR_RGB(0, 0, 255));     //blue left of Knob
Cmd_Slider(16, 16, 480-48, 16, 0, 128, 256);
Best Regards,
Raquel Malinis
Design and Development
Matrix Orbital

Post Reply