void lcd_send_data(unsigned char data) { lcd_e(0); lcd_rs(1); // starszy nibble 0xF- lcd_e(1); lcd_nibble( data >> 4 ); lcd_e(0); _delay_us(50);_delay_us(50); // m³odszy nibble 0x-F lcd_e(1); lcd_nibble( data & 0x0f); lcd_e(0); _delay_us(50);_delay_us(50); }
void lcd_send_instr(unsigned char data) { lcd_e(0); lcd_rs(0); // wysy³amy instrukcjê // starszy nibble 0xF- lcd_e(1); lcd_nibble( data >> 4 ); lcd_e(0); _delay_us(50);_delay_us(50); // m³odszy nibble 0x-F lcd_e(1); lcd_nibble( data & 0x0f); lcd_e(0); _delay_us(50);_delay_us(50); }
int lcd_drv_write(mdev_t *dev, const char *line1, const char *line2) { int ret; ret = wakelock_get(WL_ID_LCD_WRITE); if (ret != WM_SUCCESS) return ret; ret = os_mutex_get(&lcd_mutex, OS_WAIT_FOREVER); if (ret == -WM_FAIL) { lcd_e("failed to get mutex"); wakelock_put(WL_ID_LCD_WRITE); return ret; } __write_to_lcd(dev, line1, line2); os_mutex_put(&lcd_mutex); wakelock_put(WL_ID_LCD_WRITE); return 0; }
int lcd_drv_init(I2C_ID_Type id) { int ret; MDEV_lcd.name = MDEV_NAME_lcd; if (mdev_get_handle(MDEV_NAME_lcd) != NULL) return WM_SUCCESS; pinmux_drv_init(); gpio_drv_init(); i2c_drv_init(id); ret = os_mutex_create(&lcd_mutex, "lcd", OS_MUTEX_INHERIT); if (ret == -WM_FAIL) { lcd_e("Failed to create mutex"); return -WM_FAIL; } mdev_register(&MDEV_lcd); MDEV_lcd.private_data = (uint32_t) id; init_lcd(); return WM_SUCCESS; }