|
|
@ -56,4 +56,24 @@ void dupterm_task_init(); |
|
|
|
void ets_event_poll(void); |
|
|
|
#define ETS_POLL_WHILE(cond) { while (cond) ets_event_poll(); } |
|
|
|
|
|
|
|
// C-level pin HAL
|
|
|
|
#include "etshal.h" |
|
|
|
#include "gpio.h" |
|
|
|
#include "esp8266/modpyb.h" |
|
|
|
#define mp_hal_pin_obj_t pyb_pin_obj_t |
|
|
|
#define mp_hal_get_pin_obj(o) mp_obj_get_pin_obj(o) |
|
|
|
#define mp_hal_pin_config_od(p) do { \ |
|
|
|
ETS_GPIO_INTR_DISABLE(); \ |
|
|
|
PIN_FUNC_SELECT((p)->periph, (p)->func); \ |
|
|
|
GPIO_REG_WRITE(GPIO_PIN_ADDR(GPIO_ID_PIN((p)->phys_port)), \ |
|
|
|
GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN((p)->phys_port))) \ |
|
|
|
| GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_ENABLE)); /* open drain */ \ |
|
|
|
GPIO_REG_WRITE(GPIO_ENABLE_ADDRESS, \ |
|
|
|
GPIO_REG_READ(GPIO_ENABLE_ADDRESS) | (1 << (p)->phys_port)); \ |
|
|
|
ETS_GPIO_INTR_ENABLE(); \ |
|
|
|
} while (0) |
|
|
|
#define mp_hal_pin_low(p) gpio_output_set(0, 1 << (p)->phys_port, 1 << (p)->phys_port, 0) |
|
|
|
#define mp_hal_pin_od_high(p) gpio_output_set(1 << (p)->phys_port, 0, 1 << (p)->phys_port, 0) |
|
|
|
#define mp_hal_pin_read(p) GPIO_INPUT_GET(GPIO_ID_PIN((p)->phys_port)) |
|
|
|
|
|
|
|
#endif // _INCLUDED_MPHAL_H_
|
|
|
|