summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266
diff options
context:
space:
mode:
authordaniel-k <github@daniel-krebs.net>2016-07-26 17:56:13 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-07-27 21:05:45 +0300
commitaa4ada943a1e08e595630875135a2d7816718194 (patch)
tree878141850bcd4badcb2e75a9fd1c50a45ff195d0 /esp8266
parent01816068c8254c3440e8e6afac250ae00e332b91 (diff)
downloadmicropython-aa4ada943a1e08e595630875135a2d7816718194.tar.gz
micropython-aa4ada943a1e08e595630875135a2d7816718194.zip
esp8266/modpybuart: Fix UART parity setting.
The configuration bits for the UART register were wrong and the parity couldn't be enabled, because the exist_parity member hasn't been updated. I took this ESP8266 register description (http://esp8266.ru/esp8266-uart-reg/) as reference. Verification has been done with a logic analyzer.
Diffstat (limited to 'esp8266')
-rw-r--r--esp8266/modpybuart.c2
-rw-r--r--esp8266/uart.h10
2 files changed, 8 insertions, 4 deletions
diff --git a/esp8266/modpybuart.c b/esp8266/modpybuart.c
index f27ee4e2d2..25320fa1e7 100644
--- a/esp8266/modpybuart.c
+++ b/esp8266/modpybuart.c
@@ -112,9 +112,11 @@ STATIC void pyb_uart_init_helper(pyb_uart_obj_t *self, size_t n_args, const mp_o
if (args[ARG_parity].u_obj != MP_OBJ_NULL) {
if (args[ARG_parity].u_obj == mp_const_none) {
UartDev.parity = UART_NONE_BITS;
+ UartDev.exist_parity = UART_STICK_PARITY_DIS;
self->parity = 0;
} else {
mp_int_t parity = mp_obj_get_int(args[ARG_parity].u_obj);
+ UartDev.exist_parity = UART_STICK_PARITY_EN;
if (parity & 1) {
UartDev.parity = UART_ODD_BITS;
self->parity = 1;
diff --git a/esp8266/uart.h b/esp8266/uart.h
index 21894d3fa6..2b97683ff8 100644
--- a/esp8266/uart.h
+++ b/esp8266/uart.h
@@ -1,6 +1,8 @@
#ifndef _INCLUDED_UART_H_
#define _INCLUDED_UART_H_
+#include <eagle_soc.h>
+
#define UART0 (0)
#define UART1 (1)
@@ -18,14 +20,14 @@ typedef enum {
} UartStopBitsNum;
typedef enum {
- UART_NONE_BITS = 0,
- UART_ODD_BITS = 0,
- UART_EVEN_BITS = BIT4
+ UART_NONE_BITS = 0,
+ UART_ODD_BITS = BIT0,
+ UART_EVEN_BITS = 0
} UartParityMode;
typedef enum {
UART_STICK_PARITY_DIS = 0,
- UART_STICK_PARITY_EN = BIT3 | BIT5
+ UART_STICK_PARITY_EN = BIT1
} UartExistParity;
typedef enum {