Christer-A
Member
I want to decode 9-bit serial. It is 8bit data and the 9th bit is used for separate signal. (Not a Parity).
I found here on Teensy information about support for 9-bit by editing "HardwareSerial.h".
However I could not find the file under "Finder-Applications-controlclick Arduino-show package content" on Mac.
I use Ardino IDE 2.2.1 and Teensy 1.58.
I then started to play with an Arduino UNO Rev4 (M4chip) transmitting and an Teensy 4.0 receiving.
Tx: Seven different Serial.begin was tested. (9600), (9600,SERIAL_8N1), (9600,SERIAL_8N2), (9600,SERIAL_8N2),
(9600,SERIAL_8E1), (9600,SERIAL_8E2), (9600, SERIAL_8O1) and (9600,SERIAL_8O2).
DATA: 41HEX, 42HEX and 43HEX.
Rx on Teensy4: with HWSERIAL.begin(9600); All seven Tx above was received as 41HEX, 42HEX and 43HEX. OK.
Tx: Serial_8E1:
Rx on Teensy with HWSERIAL.begin(9600,SERIAL_8E1); showed 41HEX, 42HEX and 1 43 HEX.
(The parity bit for 41 is 0, for 42 is 0 but for 43 it is 1.
Is it so that HWSERIAL.begin(9600,SERIAL_8E1 is a 9.bit decoding???
Rx code:
// set this to the hardware serial port you wish to use
#define HWSERIAL Serial1
void setup() {
Serial.begin(115200);
// HWSERIAL.begin(9600); // OK received 41, 42, 43 in HEX
//HWSERIAL.begin(9600, SERIAL_8N1); // OK received 41, 42, 43 in HEX
//HWSERIAL.begin(9600, SERIAL_8N2); // OK received 41, 42, 43 in HEX
HWSERIAL.begin(9600, SERIAL_8E1); // received 41, 42, 1 43 HEX)
// HWSERIAL.begin(9600, SERIAL_8E2); // received 41, 42, 1 43 HEX)
//HWSERIAL.begin(9600, SERIAL_8O1); // received 1 41 HEX), 1 42 HEX), 43 HEX)
//HWSERIAL.begin(9600, SERIAL_8O2); // received 1 41 HEX), 1 42 HEX), 43 HEX)
//HWSERIAL.begin(9600, SERIAL_9N1); // No COMPILE
delay(1000);
Serial.println("Teensy_example_code_Serial_CAmod") ;
delay(1000);
}
void loop() {
int incomingByte;
if (HWSERIAL.available() > 0) {
incomingByte = HWSERIAL.read();
Serial.print("received: ");
Serial.print("DEC: ");Serial.print(incomingByte, DEC);
Serial.print(". HEX: ");Serial.println(incomingByte, HEX);
}
}
I found here on Teensy information about support for 9-bit by editing "HardwareSerial.h".
However I could not find the file under "Finder-Applications-controlclick Arduino-show package content" on Mac.
I use Ardino IDE 2.2.1 and Teensy 1.58.
I then started to play with an Arduino UNO Rev4 (M4chip) transmitting and an Teensy 4.0 receiving.
Tx: Seven different Serial.begin was tested. (9600), (9600,SERIAL_8N1), (9600,SERIAL_8N2), (9600,SERIAL_8N2),
(9600,SERIAL_8E1), (9600,SERIAL_8E2), (9600, SERIAL_8O1) and (9600,SERIAL_8O2).
DATA: 41HEX, 42HEX and 43HEX.
Rx on Teensy4: with HWSERIAL.begin(9600); All seven Tx above was received as 41HEX, 42HEX and 43HEX. OK.
Tx: Serial_8E1:
Rx on Teensy with HWSERIAL.begin(9600,SERIAL_8E1); showed 41HEX, 42HEX and 1 43 HEX.
(The parity bit for 41 is 0, for 42 is 0 but for 43 it is 1.
Is it so that HWSERIAL.begin(9600,SERIAL_8E1 is a 9.bit decoding???
Rx code:
// set this to the hardware serial port you wish to use
#define HWSERIAL Serial1
void setup() {
Serial.begin(115200);
// HWSERIAL.begin(9600); // OK received 41, 42, 43 in HEX
//HWSERIAL.begin(9600, SERIAL_8N1); // OK received 41, 42, 43 in HEX
//HWSERIAL.begin(9600, SERIAL_8N2); // OK received 41, 42, 43 in HEX
HWSERIAL.begin(9600, SERIAL_8E1); // received 41, 42, 1 43 HEX)
// HWSERIAL.begin(9600, SERIAL_8E2); // received 41, 42, 1 43 HEX)
//HWSERIAL.begin(9600, SERIAL_8O1); // received 1 41 HEX), 1 42 HEX), 43 HEX)
//HWSERIAL.begin(9600, SERIAL_8O2); // received 1 41 HEX), 1 42 HEX), 43 HEX)
//HWSERIAL.begin(9600, SERIAL_9N1); // No COMPILE
delay(1000);
Serial.println("Teensy_example_code_Serial_CAmod") ;
delay(1000);
}
void loop() {
int incomingByte;
if (HWSERIAL.available() > 0) {
incomingByte = HWSERIAL.read();
Serial.print("received: ");
Serial.print("DEC: ");Serial.print(incomingByte, DEC);
Serial.print(". HEX: ");Serial.println(incomingByte, HEX);
}
}