BRT Community

Please login or register.

Login with username, password and session length
Advanced search  

News:

Welcome to the Bridgetek Community!

Please read our Welcome Note

Technical Support enquires
please contact the team
@ Bridgetek Support

Please refer to our website for detailed information on all our products - Bridgetek - Bridging Technology

Pages: [1] 2

Author Topic: Blind effect with draw images  (Read 19118 times)

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Blind effect with draw images
« on: October 24, 2022, 12:10:46 PM »

Hello, 
I get a weird refresh effect (like a blind) when the screen draws a full image after the screen has shown a full image before. But when the screen displays, for example, a list and then draws a full image, it's fine.

This is the configuration:
Code: [Select]
#define EVE_VSIZE   (320u)  /* Tvd Number of visible lines (in lines) - display height */               //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_HSIZE   (240u)  /* Thd Length of visible part of line (in PCLKs) - display width */         //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern

#define EVE_VSYNC0  (10u)   /* Tvf Vertical Front Porch */                                              //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_VSYNC1  (12u)   /* Tvf + Tvp Vertical Front Porch plus Vsync Pulse width */                 //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_VOFFSET (22u)   /* Tvf + Tvp + Tvb Number of non-visible lines (in lines) */                //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_VCYCLE  (343u)  /* Tv Total number of lines (visible and non-visible) (in lines) */         //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern

#define EVE_HSYNC0  (16u)   /* Thf Horizontal Front Porch */                                            //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_HSYNC1  (36u)   /* Thf + Thp Horizontal Front Porch plus Hsync Pulse width */               //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_HOFFSET (76u)   /* Thf + Thp + Thb Length of non-visible part of line (in PCLK cycles) */   //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_HCYCLE  (317u)  /* Total length of line (visible and non-visible) (in PCLKs) */             //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern

#define EVE_PCLK    (5u)    /* 60/5 = 12 MHz                                            */              //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_PCLKPOL (1u)    /* negative active clock edge                               */              //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_SWIZZLE (0u)    /* order of bits in each colour channel to be reserved.     */              //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
#define EVE_CSPREAD (0u)    /* helps reduce the switching noise                         */              //lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern
Logged

BRT Community

  • Administrator
  • Hero Member
  • *****
  • Posts: 745
    • View Profile
Re: Blind effect with draw images
« Reply #1 on: October 24, 2022, 03:27:50 PM »

Hello,

Thank you for yoru post.

Can you just confirm which version of EVE yo're using and how you are loading these subsequent full screen images (RAM_G or via flash)?

Best Regards,
BRT Community
Logged

Rudolph

  • Sr. Member
  • ****
  • Posts: 391
    • View Profile
Re: Blind effect with draw images
« Reply #2 on: October 24, 2022, 03:40:41 PM »

Are you using DL_CLEAR at the beginnning of the display-list?

And I wonder about the comment:
//lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern

How is this identified as a MISRA 20.2 violation?
Logged

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Re: Blind effect with draw images
« Reply #3 on: October 24, 2022, 10:01:46 PM »

Hello,

Thank you for yoru post.

Can you just confirm which version of EVE yo're using and how you are loading these subsequent full screen images (RAM_G or via flash)?

Best Regards,
BRT Community

Version EVE 3 with FT811. I load PNG image from the RAM_G
Logged

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Re: Blind effect with draw images
« Reply #4 on: October 25, 2022, 10:19:45 AM »

Are you using DL_CLEAR at the beginnning of the display-list?

And I wonder about the comment:
//lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern

How is this identified as a MISRA 20.2 violation?

Yes, I use DL_CLEAR and DL_CLEAR_RGB.  About the lint is because the defines start with capital letter E.
Logged

BRT Community

  • Administrator
  • Hero Member
  • *****
  • Posts: 745
    • View Profile
Re: Blind effect with draw images
« Reply #5 on: October 25, 2022, 02:11:51 PM »

Hello,

Are you loading both images into RAM_G at the same time, or is this taking place concurrently?

Could you share your sections of code where you load the images then run the display list to display these?

Best Regards,
BRT Community
Logged

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Re: Blind effect with draw images
« Reply #6 on: October 25, 2022, 06:36:47 PM »

Hi,
No, I am loading and drawing both images separately (one image follows the other image). The code will be executed twice, once for each image. The image to load is PNG.

Code: [Select]
Private uint32 Write32BitsInArray(const uint32 start, const uint32 data)
{
    uint32 cont = start;

    gpDataBuffer[++cont] = (uint8)(data);           
    gpDataBuffer[++cont] = (uint8)(data >> 8u);     
    gpDataBuffer[++cont] = (uint8)(data >> 16u);   
    gpDataBuffer[++cont] = (uint8)(data >> 24u);   

    EveIncCmdOffset(FifoWriteLocation, 4u);    // increment FifoWriteLocation 4 bytes

    return cont;
}
Private void DrawListGraphic(const GraphicDrawImage_t *const data)
{
    uint32 cont = 0uL;

    const uint32 address = EVE_RAM_CMD + (uint32)FifoWriteLocation;

    gpDataBuffer[cont] = (uint8)((address >> 16u) | MEM_WRITE);
    gpDataBuffer[++cont] = (uint8)(address >> 8u); 
    gpDataBuffer[++cont] = (uint8)(address & 0x000000ffu); 

    cont = Write32BitsInArray(cont, CMD_DLSTART);
    cont = Write32BitsInArray(cont, DL_CLEAR_RGB | WHITE);
    cont = Write32BitsInArray(cont, DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);

    cont = EveSetBitmap(start, data->address , data->format, data->width, data->height);
    cont = Write32BitsInArray(cont, DL_COLOR_RGB | (uint32)data->color);
    cont = Write32BitsInArray(cont, BEGIN(EVE_BITMAPS));

    cont = Write32BitsInArray(cont, VERTEX2II((uint32)data->x0, (uint32)data->y0, (uint32)0u, (uint32)0u));
    cont = Write32BitsInArray(cont, END());

    cont = Write32BitsInArray(cont, DISPLAY());
    cont = Write32BitsInArray(cont, CMD_SWAP);
    SendGraphicData(++cont, 0u); // Send gpDataBuffer over SPI

    EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation); // This method sends the fifoWriteLocation over SPI 
                                                                                                                     // with SPI chip select actions.
}

Private GraphicServiceState_t EveCmdLoadimage(const GraphicLoadImage_t* const dataImage)
{
    uint32 i;

    LibBufOperResetBuffer(gpDataBuffer, 0u, GRAPHIC_MAX_TX_SIZE);

    addr = EVE_RAM_CMD + (uint32)FifoWriteLocation;

    gpDataBuffer[cont] = (uint8)((addr >> 16u) | MEM_WRITE);
    gpDataBuffer[++cont] = (uint8)(addr >> 8u);   
    gpDataBuffer[++cont] = (uint8)(addr);

    cont = Write32BitsInArray(cont, CMD_LOADIMAGE);
    cont = Write32BitsInArray(cont, dataImage->address);
    cont = Write32BitsInArray(cont, 0u);

    for(i = 0; i < dataImage->len; i++){                   // Save the image into the buffer to send it over SPI
        gpDataBuffer[++cont] = dataImage->data[i];           
    }

    padding = (uint8)(dataImage->len & 0x03u);
    padding = 4u-padding;
    padding &= 3u;
    EveIncCmdOffset(FifoWriteLocation, (uint16)padding);

    while (padding > 0u) {
        gpDataBuffer[++cont] = 0x00u;                           
        padding--;
    }

    SendGraphicData(++cont, 0u);  // Send gpDataBuffer over SPI

    EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation);
}
Logged

Rudolph

  • Sr. Member
  • ****
  • Posts: 391
    • View Profile
Re: Blind effect with draw images
« Reply #7 on: October 25, 2022, 08:05:10 PM »

//lint !e960 Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern

How is this identified as a MISRA 20.2 violation?

About the lint is because the defines start with capital letter E.

I am afraid that you are up to something.
I do not have access to the actual C standard right now but it looks like it reserves practically
anthing for defines that starts with "E" - what the heck?

The comment can't be quite right though.

Check https://gimpel.com/demo.html with this snippet:

#include <stdint.h>

#define EVE_PCLK    (9U)
#define EVE_PCLKPOL (2U)

uint8_t hello(const uint8_t var);


uint8_t hello(const uint8_t var)
{
    uint8_t ret = 0U;
   
    if(var < EVE_PCLK)
    {
        ret = EVE_PCLKPOL;
    }

    return ret;
}

There is no rule violation with MISRA C 2012.
And for MISRA C 2004 I get this:
note 980: macro name 'EVE_PCLK' matches a pattern reserved to the compiler because it begins with 'E' and a following uppercase letter [MISRA 2004 Rule 20.1, advisory]

So this is 980 and not 960, rule 20.1 not rule 20.2.

Technically the EVE_ suffix violates the C-standard (because of reasons...), but I dare to say that practically the risk
of colliding with anything that is defined or will be defined for errno.h is close to zero,
if errno.h is even used at all.
Even MISRA 2004 reduced this to "advisory" and at least with PC-LINT this does not show up per default with MISRA 2012.
And at least GCC does not seem to warn about this, not even with -Wextra and -pedantic.
Nothing on https://godbolt.org/ with clang and -Wreserved-identifier either.
Plus, if that actually collides the result will very likely be an ERROR.

So my assesment for my library is that there is no immediate need to change the prefix,
this is something I may address with the next major version.

Anyways, any suggestions for a new prefix?
The EVE_ is just perfect.
I started out with FT8_ but that got old shortly afterwards. :-)
Using BT8_ should be more future-proof but just looking at it I would rather keep EVE_.
Logged

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Re: Blind effect with draw images
« Reply #8 on: October 26, 2022, 10:20:02 AM »

Hi Rudolph,
Only with #define EVE_VSIZE (320u)  lint gives me this message:
Code: [Select]
#define EVE_VSIZE   (320u)  /* Tvd Number of visible lines (in lines) - display height */
".\Source\Config\ConfigGraphic.h" 20 9 Note 960: Violates MISRA 2004 Required Rule 20.2, Re-use of C90 identifier pattern: EVE_VSIZE because it begins with 'E' and a following uppercase letter

For me the Note is 960 not 980 in Rule 20.2

About the suggestions for a new prefix, I like your prefix EVE_ but if you want to avoid lint notes... maybe something like BT_EVE_ . But I think your prefix is ​​fine, and you shouldn't change it.

Logged

BRT Community

  • Administrator
  • Hero Member
  • *****
  • Posts: 745
    • View Profile
Re: Blind effect with draw images
« Reply #9 on: October 26, 2022, 12:13:11 PM »

Hello,

Hi,
No, I am loading and drawing both images separately (one image follows the other image). The code will be executed twice, once for each image. The image to load is PNG.

Code: [Select]
Private uint32 Write32BitsInArray(const uint32 start, const uint32 data)
{
    uint32 cont = start;

    gpDataBuffer[++cont] = (uint8)(data);           
    gpDataBuffer[++cont] = (uint8)(data >> 8u);     
    gpDataBuffer[++cont] = (uint8)(data >> 16u);   
    gpDataBuffer[++cont] = (uint8)(data >> 24u);   

    EveIncCmdOffset(FifoWriteLocation, 4u);    // increment FifoWriteLocation 4 bytes

    return cont;
}
Private void DrawListGraphic(const GraphicDrawImage_t *const data)
{
    uint32 cont = 0uL;

    const uint32 address = EVE_RAM_CMD + (uint32)FifoWriteLocation;

    gpDataBuffer[cont] = (uint8)((address >> 16u) | MEM_WRITE);
    gpDataBuffer[++cont] = (uint8)(address >> 8u); 
    gpDataBuffer[++cont] = (uint8)(address & 0x000000ffu); 

    cont = Write32BitsInArray(cont, CMD_DLSTART);
    cont = Write32BitsInArray(cont, DL_CLEAR_RGB | WHITE);
    cont = Write32BitsInArray(cont, DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);

    cont = EveSetBitmap(start, data->address , data->format, data->width, data->height);
    cont = Write32BitsInArray(cont, DL_COLOR_RGB | (uint32)data->color);
    cont = Write32BitsInArray(cont, BEGIN(EVE_BITMAPS));

    cont = Write32BitsInArray(cont, VERTEX2II((uint32)data->x0, (uint32)data->y0, (uint32)0u, (uint32)0u));
    cont = Write32BitsInArray(cont, END());

    cont = Write32BitsInArray(cont, DISPLAY());
    cont = Write32BitsInArray(cont, CMD_SWAP);
    SendGraphicData(++cont, 0u); // Send gpDataBuffer over SPI

    EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation); // This method sends the fifoWriteLocation over SPI 
                                                                                                                     // with SPI chip select actions.
}

Private GraphicServiceState_t EveCmdLoadimage(const GraphicLoadImage_t* const dataImage)
{
    uint32 i;

    LibBufOperResetBuffer(gpDataBuffer, 0u, GRAPHIC_MAX_TX_SIZE);

    addr = EVE_RAM_CMD + (uint32)FifoWriteLocation;

    gpDataBuffer[cont] = (uint8)((addr >> 16u) | MEM_WRITE);
    gpDataBuffer[++cont] = (uint8)(addr >> 8u);   
    gpDataBuffer[++cont] = (uint8)(addr);

    cont = Write32BitsInArray(cont, CMD_LOADIMAGE);
    cont = Write32BitsInArray(cont, dataImage->address);
    cont = Write32BitsInArray(cont, 0u);

    for(i = 0; i < dataImage->len; i++){                   // Save the image into the buffer to send it over SPI
        gpDataBuffer[++cont] = dataImage->data[i];           
    }

    padding = (uint8)(dataImage->len & 0x03u);
    padding = 4u-padding;
    padding &= 3u;
    EveIncCmdOffset(FifoWriteLocation, (uint16)padding);

    while (padding > 0u) {
        gpDataBuffer[++cont] = 0x00u;                           
        padding--;
    }

    SendGraphicData(++cont, 0u);  // Send gpDataBuffer over SPI

    EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation);
}

Thank you for the code snippets, I cannot see anything in these which would be causing the issue you are seeing directly.

Can you just confirm in what order these are functions are executed, and if have a function that awaits REG_CMD_READ == REG_CMD_WRITE after issuing data to the co-processor?

For example, in the following code we are writing PNG data into RAM_CMD to be used with a CMD_LOADIMAGE, the EVE_LIB_AwaitCoProEmpty() funciton is used to check the data has been consumed before we move onto the next step which is drawing the image on screen with a display list.

Code: [Select]
EVE_LIB_BeginCoProList();
EVE_CMD_LOADIMAGE(start_addr, 0);

// Send raw JPEG encoded image data to coprocessor. It will be decoded
// as the data is received.
while (flag != 2)
{
for (i = 0; i < sizeof(buf); i++)
{
buf[i] = *img++;
if (buf[i] == 0xff)
{
flag = 1;
}
else
{
if (flag == 1)
{
if (buf[i] == 0xd9)
{
flag = 2;
i++;
break;
}
}
flag = 0;
}
}
EVE_LIB_WriteDataToCMD(buf, (i + 3)&(~3));
};
EVE_LIB_EndCoProList();
EVE_LIB_AwaitCoProEmpty();


EVE_LIB_AwaitCoProEmpty() is s follows:

Code: [Select]
void EVE_LIB_AwaitCoProEmpty(void)
{
// Await completion of processing
HAL_WaitCmdFifoEmpty();


}

// ------ Wait for co-processor read and write pointers to be equal ------------
uint8_t HAL_WaitCmdFifoEmpty(void)
{
uint32_t readCmdPointer;

// Wait until the two registers match
do
{
// Read the graphics processor read pointer
readCmdPointer = HAL_MemRead32(EVE_REG_CMD_READ);

} while ((writeCmdPointer != readCmdPointer) && (readCmdPointer != 0xFFF));


if(readCmdPointer == 0xFFF)
{
// Return 0xFF if an error occurred
return 0xFF;
}
else
{
// Return 0 if pointers became equal successfully
return 0;
}
}


Best Regards,
BRT Community
Logged

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Re: Blind effect with draw images
« Reply #10 on: October 26, 2022, 01:32:05 PM »

Hi,
The order is:

Code: [Select]
Private GraphicServiceState_t EveCmdLoadimage(const GraphicLoadImage_t* const dataImage)
{
    uint32 i;

    LibBufOperResetBuffer(gpDataBuffer, 0u, GRAPHIC_MAX_TX_SIZE);

    addr = EVE_RAM_CMD + (uint32)FifoWriteLocation;

    gpDataBuffer[cont] = (uint8)((addr >> 16u) | MEM_WRITE);
    gpDataBuffer[++cont] = (uint8)(addr >> 8u);   
    gpDataBuffer[++cont] = (uint8)(addr);

    cont = Write32BitsInArray(cont, CMD_LOADIMAGE);
    cont = Write32BitsInArray(cont, dataImage->address);
    cont = Write32BitsInArray(cont, 0u);

    for(i = 0; i < dataImage->len; i++){                   // Save the image into the buffer to send it over SPI
        gpDataBuffer[++cont] = dataImage->data[i];           
    }

    padding = (uint8)(dataImage->len & 0x03u);
    padding = 4u-padding;
    padding &= 3u;
    EveIncCmdOffset(FifoWriteLocation, (uint16)padding);

    while (padding > 0u) {
        gpDataBuffer[++cont] = 0x00u;                           
        padding--;
    }

    SendGraphicData(++cont, 0u);  // Send gpDataBuffer over SPI

    EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation);
}

Code: [Select]
Private void CheckIcState(const osMsgData data)
{
BOOL loop = TRUE;
while(loop){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
cmdRead = ((uint16)((uint16)readSPI[1] << 8u) + (uint16)readSPI[0]);
if ((cmdRead & 0x0003u) != 0u) {
      EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x01u);
EveMemWrite(SEND_32_BITS, REG_CMD_READ, RESET_CMD_STATE);
EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, RESET_CMD_STATE);
EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x00u);
loop = false;
}
else if (cmdRead != 0XFFC){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
}
else {
loop = false;
}
}
}


Code: [Select]
Private void DrawListGraphic(const GraphicDrawImage_t *const data)
{
    uint32 cont = 0uL;

    const uint32 address = EVE_RAM_CMD + (uint32)FifoWriteLocation;

    gpDataBuffer[cont] = (uint8)((address >> 16u) | MEM_WRITE);
    gpDataBuffer[++cont] = (uint8)(address >> 8u);
    gpDataBuffer[++cont] = (uint8)(address & 0x000000ffu);

    cont = Write32BitsInArray(cont, CMD_DLSTART);
    cont = Write32BitsInArray(cont, DL_CLEAR_RGB | WHITE);
    cont = Write32BitsInArray(cont, DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);

    cont = EveSetBitmap(start, data->address , data->format, data->width, data->height);
    cont = Write32BitsInArray(cont, DL_COLOR_RGB | (uint32)data->color);
    cont = Write32BitsInArray(cont, BEGIN(EVE_BITMAPS));

    cont = Write32BitsInArray(cont, VERTEX2II((uint32)data->x0, (uint32)data->y0, (uint32)0u, (uint32)0u));
    cont = Write32BitsInArray(cont, END());

    cont = Write32BitsInArray(cont, DISPLAY());
    cont = Write32BitsInArray(cont, CMD_SWAP);
    SendGraphicData(++cont, 0u); // Send gpDataBuffer over SPI

    EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation); // This method sends the fifoWriteLocation over SPI
                                                                                                                     // with SPI chip select actions.
}

Code: [Select]
Private void CheckIcState(const osMsgData data)
{
BOOL loop = TRUE;
while(loop){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
cmdRead = ((uint16)((uint16)readSPI[1] << 8u) + (uint16)readSPI[0]);
if ((cmdRead & 0x0003u) != 0u) {
      EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x01u);
EveMemWrite(SEND_32_BITS, REG_CMD_READ, RESET_CMD_STATE);
EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, RESET_CMD_STATE);
EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x00u);
loop = false;
}
else if (cmdRead != 0XFFC){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
}
else {
loop = false;
}
}
}
Logged

BRT Community

  • Administrator
  • Hero Member
  • *****
  • Posts: 745
    • View Profile
Re: Blind effect with draw images
« Reply #11 on: October 27, 2022, 03:02:19 PM »

Hello,

Thank you for the details, could you add a check before you call the DrawListGraphic() function for REG_CMD_READ==REG_CMD_WRITE, maybe in the CheckIcState() function

I note you are checking for a co-processor error, but not that the data in RAM_CMD has been consumed by the co-processor.

And just to clarify, is it a black screen or corrupted data you are seeing in-between the subsequent images when being displayed concurrently? i.e. does the screen flicker black or does it show say half an image?

Best Regards,
BRT Community
Logged

raydem

  • Newbie
  • *
  • Posts: 28
    • View Profile
Re: Blind effect with draw images
« Reply #12 on: October 27, 2022, 03:51:36 PM »

Hi,
I check it read the REG_CMDB_SPACE register, if is equal to 0xFFC is the same that REG_CMD_READ==REG_CMD_WRITE.

Not black screen or corrupted data, the second image it is show like if the display draws line by line (horizontal line). Not draw the image complete is like animation.
Logged

Rudolph

  • Sr. Member
  • ****
  • Posts: 391
    • View Profile
Re: Blind effect with draw images
« Reply #13 on: October 27, 2022, 05:25:39 PM »

About the suggestions for a new prefix, I like your prefix EVE_ but if you want to avoid lint notes... maybe something like BT_EVE_ . But I think your prefix is ​​fine, and you shouldn't change it.

At least right now I am going with MISRA C 2012 and ignore the issue. :-)
Usually MISRA checks are out of reach for me and I guess for almost everone who uses my library.
At least I got no report regarding MISRA.
Well, I usually compile with -Wall -Wextra -pedantic and fixed what cppcheck found.

I had the opportunity though to generate a MISRA C 2012 report and that was not pretty.
There will be fixes. :-)
Logged

BRT Community

  • Administrator
  • Hero Member
  • *****
  • Posts: 745
    • View Profile
Re: Blind effect with draw images
« Reply #14 on: October 28, 2022, 09:41:42 AM »

Hello,

Thanks for the clarification.

Could let me know if you are using the same address for each image in RAM_G when calling CMD_LOADIMAGE?

It sounds like the data for the second image is being decompressed into RAM_G whilst the previous display list is still active, which would result in the behaviour you are describing. I would suggest utilising a different section of RAM_G for the second image if this is the case.

Hi,
I check it read the REG_CMDB_SPACE register, if is equal to 0xFFC is the same that REG_CMD_READ==REG_CMD_WRITE.

Not black screen or corrupted data, the second image it is show like if the display draws line by line (horizontal line). Not draw the image complete is like animation.

Best Regards,
BRT Community
Logged
Pages: [1] 2