Blend Mode

Alpha

@brunomacabeusbr

@davidsilvam

#ifce

PIC

O que era mesmo isso aí?

+

=

Objetivo

Adaptar o código escrito do ARM para funcionar no PIC

Escolhas de projeto

Uso dessa placa de teste

Uso do compilador C18

Tiny Bootloader!?

Testes

Simulação no Proteus(UART)

Interpretador hexadecimal

Problemas e soluções

Comunicação serial e envio do cabeçalho

#pragma config PLLDIV     = 5
#pragma config CPUDIV     = OSC1_PLL2
#pragma config FOSC       = HSPLL_HS
#pragma config WDT        = OFF  

...

void configuraPIC(){
    TRISC = 0b10000000;
}

void configuraUSART(){
    OpenUSART(USART_TX_INT_OFF &
              USART_RX_INT_OFF &
              USART_ASYNCH_MODE &
              USART_EIGHT_BIT &
              USART_SYNC_SLAVE &
              USART_CONT_RX & 
              USART_BRGH_HIGH, 154);
}

void cabecalhoPPM(){
    while(BusyUSART());
    putcUSART(0x50);
    while(BusyUSART());
    putcUSART(0x36);
    while(BusyUSART());
    putcUSART(0x0A);
    ...
}

void rgbToUSART(){
    while(BusyUSART());
    putcUSART(pixelRGB[0]);
    while(BusyUSART());
    putcUSART(pixelRGB[1]);
    while(BusyUSART());
    putcUSART(pixelRGB[2]);
}

Passar as imagens para o PIC

rom unsigned char mapPixelsDest[30][30][3] = {{{0,0,0},{0,0,0},{224,224,224},
{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},
{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},
{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},
{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},{224,224,224},
{224,224,224},{0,0,0},{0,0,0}},{{0,0,0},{224,224,224},{160,160,160},{160,160,160},
{160,160,160},{160,160,160},{160,160,160},{160,160,160},{160,160,160},{160,160,160},
{160,160,160},{160,160,160},{160,160,160},{160,160,160},{160,160,160},{160,160,160}...

rom unsigned char mapPixelsSour[30][30][3] = {{{255,255,255},{255,255,255},{255,255,255},
{255,255,255},{255,255,255},{255,255,255},{255,255,255},{255,255,255},{255,255,255},
{255,255,255},{255,255,255},{32,74,222},{32,74,222},{32,74,222},{32,74,222},{32,74,222},
{32,74,222},{32,74,222},{32,74,222},{255,255,255},{255,255,255},{255,255,255},
{255,255,255},{255,255,255},{255,255,255},{255,255,255},{255,255,255},{255,255,255},
{255,255,255}},{{255,255,255},{255,255,255},{255,255,255},{255,255,255},{255,255,255},
{255,255,255},{255,255,255},{255,255,255},{32,74,222},{32,74,222},{32,74,222},{32,74,222},
{32,74,222},{32,74,222},{32,74,222},{32,74,222},{32,74,222},{32,74,222},{32,74,222}...
void createStruct(char *nome, FILE *fp, int widthImg, int heightImg) {
    int i, j,z,r;
    char str[3];
    FILE *fpStr;

    fpStr = fopen(nome, "w");
    if (fpStr == NULL)
        printf("Erro ao criar arquivo!");

    fputc('{', fpStr);
    for (i = 0; i < heightImg; i++) {
        fputc('{', fpStr);
        for(j = 0; j < widthImg; j++){
            fputc('{', fpStr);
            for(z = 0; z < 3; z++){
                fread(&r, sizeof(char), 1, fp);
                sprintf(str, "%d", r);
                fprintf(fpStr, "%d", atoi(str));
                if (z != 2)
                    putc(',', fpStr);
            }
            fputc('}', fpStr);
            if (j != heightImg - 1)
                fputc(',', fpStr);
        }
        fputc('}', fpStr);
        if (i != heightImg - 1)
            fputc(',', fpStr);
    }
    fputc('}', fpStr);
    fputc(';', fpStr);
    fclose(fpStr);
}

Resultados

+

=

Aprendizado

Comunicação serial no PIC

Ferramentas da IDE MPLAB para o PIC

3

aprendizados

Tiny Bootloader

Melhorar o algoritmo

Para gerar o mapa de pixels em hard conding, ao invés de salvar em arquivos separados o mapa de pixels, deveria armazenar diretamente no arquivo que será compilado

Bibliografia

http://ww1.microchip.com/downloads/en/devicedoc/39632c.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf

http://www.microchip.com/forums/m727407.aspx

http://www.microchip.com/forums/m571452.aspx

Consumo de memória PIC4550

Blend Mode - Alpha (PIC)

By brunomacabeus

Blend Mode - Alpha (PIC)

  • 713