Skip to content

Commit

Permalink
esp8266/modpybuart: Fix UART parity setting.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
daniel-k authored and pfalcon committed Jul 27, 2016
1 parent 0181606 commit aa4ada9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
2 changes: 2 additions & 0 deletions esp8266/modpybuart.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 6 additions & 4 deletions esp8266/uart.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef _INCLUDED_UART_H_
#define _INCLUDED_UART_H_

#include <eagle_soc.h>

#define UART0 (0)
#define UART1 (1)

Expand All @@ -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 {
Expand Down

0 comments on commit aa4ada9

Please sign in to comment.