Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SerialX.begin - support 7 bit modes. #391

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

KurtE
Copy link
Contributor

@KurtE KurtE commented Nov 13, 2024

As per the forum thread:
https://forum.arduino.cc/t/uno-r4-and-serial1-different-nr-databits/1192974/9

Sketches that tried to use the standard modes such as Serial_7E1 Would not work and sounds like they would hang.

This sketch simply duplicated the 8 bit modes, in the switch statement, and changed _8 to _7... So for example:

     case SERIAL_7E1:
          uart_cfg.data_bits = UART_DATA_BITS_7;
          uart_cfg.parity = UART_PARITY_EVEN;
          uart_cfg.stop_bits = UART_STOP_BITS_1;
          break;

There was already support for handling this in the FSP layer. I verified that 7E1 and 7O1 worked using logic analyzer. Also verified that the standard 8N1 still worked.

Note: The ArduinoCore-API file HardwareSerial.h has many other defined modes, which are probably
not supported, on the UNO R4, such as: SERIAL_5E2

Which the switch statement still does not handle, and the uart_cfg items will not be set... But that is beyond this fix.

As per the forum thread:
https://forum.arduino.cc/t/uno-r4-and-serial1-different-nr-databits/1192974/9

Sketches that tried to use the standard modes such as Serial_7E1
Would not work and sounds like they would hang.

This sketch simply duplicated the 8 bit modes, in the switch statement, and changed _8 to _7...
So for example:
```
     case SERIAL_7E1:
          uart_cfg.data_bits = UART_DATA_BITS_7;
          uart_cfg.parity = UART_PARITY_EVEN;
          uart_cfg.stop_bits = UART_STOP_BITS_1;
          break;
```
There was already support for handling this in the FSP layer.
I verified that 7E1 and 7O1 worked using logic analyzer.  Also verified that the standard 8N1 still worked.

Note: The ArduinoCore-API file HardwareSerial.h has many other defined modes, which are probably
not supported, on the UNO R4, such as: SERIAL_5E2

Which the switch statement still does not handle, and the uart_cfg items will not be set...
But that is beyond this fix.
@per1234 per1234 added type: imperfection Perceived defect in any part of project topic: code Related to content of the project itself labels Nov 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: code Related to content of the project itself type: imperfection Perceived defect in any part of project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants