Forum Discussion
Altera_Forum
Honored Contributor
9 years agoEverything solved, now I can print char and do stuff.
The second issue was caused by wrong timing. The Clear Display command is quite slow and it take 1.52ms to be done, so I Changed usleep(2000). As I said I've taken super wide delays since I wanted to avoid timing issue. This is my working/corrected code, I hope it may help someone: IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_LCD_DATA_BASE, 0b11111111); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x00); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(16000); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x38); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(4500); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x38); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(200); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x38); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(200); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x38); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(200); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x0E); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(200); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x01); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(2000); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x06); usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b001); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b000); usleep(200); //data to test lcd IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_DATA_BASE, 0x41); // A usleep(1); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b101); usleep(2); IOWR_ALTERA_AVALON_PIO_DATA(PIO_LCD_COMMAND_BASE, 0b100); usleep(2);