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