From bcc9298e5bd2049bbee8c1d00482d2695b8e0b70 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 29 Mar 2014 01:24:44 +0000 Subject: [PATCH] stmhal: Add TODO's to exti.c; fix delay in lcd.c. --- stmhal/exti.c | 3 +++ stmhal/lcd.c | 11 ++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/stmhal/exti.c b/stmhal/exti.c index c5378d835..e5e9b53bd 100644 --- a/stmhal/exti.c +++ b/stmhal/exti.c @@ -66,6 +66,8 @@ // There is also a C API, so that drivers which require EXTI interrupt lines // can also use this code. See exti.h for the available functions and // usrsw.h for an example of using this. +// +// TODO Add python method to change callback object. #define EXTI_OFFSET (EXTI_BASE - PERIPH_BASE) @@ -302,6 +304,7 @@ void Handle_EXTI_Irq(uint32_t line) { if (line < EXTI_NUM_VECTORS) { exti_vector_t *v = &exti_vector[line]; if (v->callback_obj != mp_const_none) { + // TODO need to wrap this in an nlr_buf; really need a general function for this rt_call_function_1(v->callback_obj, MP_OBJ_NEW_SMALL_INT(line)); } } diff --git a/stmhal/lcd.c b/stmhal/lcd.c index d2db7b7ba..c5952fa48 100644 --- a/stmhal/lcd.c +++ b/stmhal/lcd.c @@ -1,3 +1,4 @@ +#include #include #include @@ -59,8 +60,12 @@ #define LCD_INSTR (0) #define LCD_DATA (1) +static void lcd_delay(void) { + __asm volatile ("nop\nnop"); +} + static void lcd_out(int instr_data, uint8_t i) { - HAL_Delay(0); + lcd_delay(); PYB_LCD_PORT->BSRRH = PYB_LCD_CS1_PIN; // CS=0; enable if (instr_data == LCD_INSTR) { PYB_LCD_PORT->BSRRH = PYB_LCD_A0_PIN; // A0=0; select instr reg @@ -69,7 +74,7 @@ static void lcd_out(int instr_data, uint8_t i) { } // send byte bigendian, latches on rising clock for (uint32_t n = 0; n < 8; n++) { - HAL_Delay(0); + lcd_delay(); PYB_LCD_PORT->BSRRH = PYB_LCD_SCL_PIN; // SCL=0 if ((i & 0x80) == 0) { PYB_LCD_PORT->BSRRH = PYB_LCD_SI_PIN; // SI=0 @@ -77,7 +82,7 @@ static void lcd_out(int instr_data, uint8_t i) { PYB_LCD_PORT->BSRRL = PYB_LCD_SI_PIN; // SI=1 } i <<= 1; - HAL_Delay(0); + lcd_delay(); PYB_LCD_PORT->BSRRL = PYB_LCD_SCL_PIN; // SCL=1 } PYB_LCD_PORT->BSRRL = PYB_LCD_CS1_PIN; // CS=1; disable