Page 74

Epson Research and Development

 

Vancouver Design Center

 

 

**Clear the display, and all of video memory, by writing 81920 bytes

**of 0. This is done because an image in display memory is not rotated

**when the switch to portrait display mode occurs.

*/

pMem = p13705;

for (tmp = 0; tmp < MEM_SIZE; tmp++)

{

*pMem = 0; pMem++;

};

/*

**We will use the default portrait mode scheme so we have to adjust

**the ROTATED width to be a power of 2.

**(NOTE: current height will become the rotated width)

*/

tmp = 1;

while (Height > (1 << tmp)) tmp++;

Height = (1 << tmp);

OffsetBytes = Height * BitsPerPixel / 8; /*

**Set:

**1) Line Byte Count to size of the ROTATED width (i.e. current height)

**2) Start Address to the offset of the width of the ROTATED display.

**(in portrait mode the start address registers point to bytes)

*/

SET_REG(0x1C, (BYTE)OffsetBytes);

OffsetBytes--;

SET_REG(0x0C, LOBYTE(OffsetBytes)); SET_REG(0x0D, HIBYTE(OffsetBytes)); /*

**Set Portrait mode.

**Use the non-X2 (default) scheme so we don't have to re-calc the frame

**rate. MCLK will be <= 25 MHz so we can leave auto-switch enabled.

*/

SET_REG(0x1B, 0x80); /*

**Draw a solid blue 100x100 rectangle centered on the display.

**Starting co-ordinates, assuming a 320x240 display are:

**(320-100)/2 , (240-100)/2 = 110,70.

*/

for (y = 70; y < 180; y++)

{

/*

**Set the memory pointer at the start of each line.

**Pointer = MEM_OFFSET + (Y * Line_Width * BPP / 8) + (X * BPP / 8)

**NOTICE: as this is default portrait mode, the width is a power

**of two. In this case, we use a value of 256 pixels for

**our calculations instead of the panel dimension of 240.

S1D13705

Programming Notes and Examples

X27A-G-002-03

Issue Date: 02/01/22

Page 168
Image 168
Epson S1D13705 technical manual Vancouver Design Center