From fecee2b0ae7c9131f41f80f6aeb5f0c7be93c291 Mon Sep 17 00:00:00 2001 From: Damien <damien.p.george@gmail.com> Date: Sat, 2 Nov 2013 16:41:51 +0000 Subject: [PATCH] Floats work with MP on board; function for LCD pixel manipulation. --- stm/lcd.c | 15 +++++++++++++-- stm/lcd.h | 1 + stm/main.c | 13 +++++++++++++ stm/mpyconfig.h | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/stm/lcd.c b/stm/lcd.c index 0f645eb930..ee4f4da4e0 100644 --- a/stm/lcd.c +++ b/stm/lcd.c @@ -198,8 +198,8 @@ void lcd_print_strn(const char *str, unsigned int len) { chr = 127; } const uint8_t *chr_data = &font_petme128_8x8[(chr - 32) * 8]; - for (int i = 0; i < 8; i++) { - lcd_out(LCD_DATA, chr_data[i]); + for (int j = 0; j < 8; j++) { + lcd_out(LCD_DATA, chr_data[j]); } } @@ -207,3 +207,14 @@ void lcd_print_strn(const char *str, unsigned int len) { sys_tick_delay_ms(200); } } + +// writes 8 vertical pixels +// pos 0 is upper left, pos 1 is 8 pixels to right of that, pos 128 is 8 pixels below that +void lcd_draw_pixel_8(int pos, int val) { + int page = pos / 128; + int offset = pos - (page * 128); + lcd_out(LCD_INSTR, 0xb0 | page); // page address set + lcd_out(LCD_INSTR, 0x10 | ((offset >> 4) & 0x0f)); // column address set upper + lcd_out(LCD_INSTR, 0x00 | (offset & 0x0f)); // column address set lower + lcd_out(LCD_DATA, val); // write data +} diff --git a/stm/lcd.h b/stm/lcd.h index 7b243ee7e3..56c541698e 100644 --- a/stm/lcd.h +++ b/stm/lcd.h @@ -1,3 +1,4 @@ void lcd_init(void); void lcd_print_str(const char *str); void lcd_print_strn(const char *str, unsigned int len); +void lcd_draw_pixel_8(int pos, int val); diff --git a/stm/main.c b/stm/main.c index 0837f1972f..96b923ad1a 100644 --- a/stm/main.c +++ b/stm/main.c @@ -603,6 +603,13 @@ py_obj_t pyb_rtc_read(void) { return py_const_none; } +py_obj_t pyb_lcd8(py_obj_t pos, py_obj_t val) { + int pos_val = py_get_int(pos); + int val_val = py_get_int(val); + lcd_draw_pixel_8(pos_val, val_val); + return py_const_none; +} + int main(void) { // TODO disable JTAG @@ -673,6 +680,7 @@ soft_reset: rt_store_attr(m, qstr_from_str_static("uout"), rt_make_function_1(pyb_usart_send)); rt_store_attr(m, qstr_from_str_static("uin"), rt_make_function_0(pyb_usart_receive)); rt_store_attr(m, qstr_from_str_static("ustat"), rt_make_function_0(pyb_usart_status)); + rt_store_attr(m, qstr_from_str_static("lcd8"), rt_make_function_2(pyb_lcd8)); rt_store_name(qstr_from_str_static("pyb"), m); } @@ -1027,3 +1035,8 @@ soft_reset: printf("PYB: soft reboot\n"); goto soft_reset; } + +double __aeabi_f2d(float x) { + // TODO + return 0.0; +} diff --git a/stm/mpyconfig.h b/stm/mpyconfig.h index 388ad1cc4d..06a4bd8e02 100644 --- a/stm/mpyconfig.h +++ b/stm/mpyconfig.h @@ -1,6 +1,6 @@ // options to control how Micro Python is built -#define MICROPY_ENABLE_FLOAT (0) +#define MICROPY_ENABLE_FLOAT (1) #define MICROPY_EMIT_CPYTHON (0) #define MICROPY_EMIT_X64 (0) #define MICROPY_EMIT_THUMB (1) -- GitLab