From 6623d45af9adf3d1e401c269b49ac81ecd241490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Tue, 25 Jul 2023 11:04:12 +0000 Subject: [PATCH] optimisation: Tighter LCD timing Author: leptun Change in memory: Flash: -14 bytes SRAM: 0 bytes --- Firmware/lcd.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Firmware/lcd.cpp b/Firmware/lcd.cpp index 39d84c4bf..5715ca97d 100644 --- a/Firmware/lcd.cpp +++ b/Firmware/lcd.cpp @@ -129,18 +129,17 @@ static void lcd_send(uint8_t data, uint8_t flags, uint16_t duration = LCD_DEFAUL _delay_us(5); lcd_writebits(data); #ifndef LCD_8BIT - if (!(flags & LCD_HALF_FLAG)) - { - _delay_us(LCD_DEFAULT_DELAY); - lcd_writebits(data<<4); + if (!(flags & LCD_HALF_FLAG)) { + // _delay_us(LCD_DEFAULT_DELAY); // should not be needed when sending a two nibble instruction. + lcd_writebits((data << 4) | (data >> 4)); //force efficient swap opcode even though the lower nibble is ignored in this case } #endif delayMicroseconds(duration); } -static void lcd_command(uint8_t value, uint16_t delayExtra = 0) +static void lcd_command(uint8_t value, uint16_t duration = LCD_DEFAULT_DELAY) { - lcd_send(value, LOW, LCD_DEFAULT_DELAY + delayExtra); + lcd_send(value, LOW, duration); } static void lcd_write(uint8_t value)