Boa tarde Sr.(s)!
Segue rotina abaixo de inicialização. Conforme podem observar, o quarto byte do array lcd_setup é 0x30 enquanto o correto, para a utilização da segunda linha de um lcd16x2 seria 0x38. Acontece que quando troco para 0x38 e testo, nada aparece no display. Já quando utilizo inicializando como se fosse um lcd 16x1, consigo escrever normalmente na primeira linha!
void drvCLCDInit (void)
{
auto u8_t u8i;
volatile const u16_t wait[] = {50000, 5000, 200, 200, 1, 1, 1, 1};
volatile const u8_t lcd_setup[] = {0x30, 0x30, 0x30, 0x30, 0x08, 0x01, 0x06, 0x0C};
sysucSFR_PORT3_SEL = 0x00;
sysucCLCD_CTRL_WRTE = 0x00;
sysucCLCD_CTRL_DIRE = 0x0F;
sysucSFR_PORT4_SEL = 0x00;
sysucCLCD_PORT_WRTE = 0x00;
sysucSFR_PORT4_DIR = 0xFF;
sysucSFR_PORT4_REN = 0x00;
for(u8i = 0; u8i < sizeof(lcd_setup); u8i++)
{
sysucDelayUs(*(wait + u8i));
drvCLCDWrite(CLCD_MODE_INST, (u8i > 2) ? TRUE : FALSE, (* (lcd_setup + u8i)));
}
}
Se alguém puder me ajudar, agradeceria muito, pois já perdi muito tempo com esse lcd e simplesmente não consigo escrever na segunda linha!