View previous topic :: View next topic |
Author |
Message |
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
Serial port terminal with 9 bit support [Solved] |
Posted: Mon Sep 19, 2022 10:26 am |
|
|
Hi,
I'm trying to monitor 9-bit serial communication (part of a project from another topic) on my PC. So far I haven't been able to find any software to support that. I tried Terraterm, Coolterm, Yat, Realterm and like 20 others. Does PC even support that format of data?
I'm able to see what is going on the line with a logic analyzer, but it would be nice to have a monitoring program. |
|
|
Jerson
Joined: 31 Jul 2009 Posts: 125 Location: Bombay, India
|
|
Posted: Mon Sep 19, 2022 8:33 pm |
|
|
Most terminals online will support 9 bits. Maybe you're looking for the wrong keywords.
It would be 8bit data with parity. Most terminals will support this.
Look for @bray terminal My favourite on Win |
|
|
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
|
Posted: Mon Sep 19, 2022 10:41 pm |
|
|
Dear Jerson,
it is 9 bit data. Not 8 + parity. PIC is able to send and receive that. And so far no online terminal that I found supports it.. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19538
|
|
Posted: Mon Sep 19, 2022 10:49 pm |
|
|
Evey terminal program shoud offer proper 9bit support.
The exception would be if your hardware serial port does not support it.
SIO that comes with the compiler does offer this. If it is not there in the
port settings, then it almost certainly implies that you do not have a
real serial port, but something like a USB serial without support for this.
8 bit with parity is not 9bit. It uses 9 bits but not with the extra bit as
data. It is possible to cheat this for limited use as 9nit, but it is not going
to be a useable way to monitor 9bit data.
\i suspect your problem is the actual serial port you are trying to use
does not support 9bit. Only a few of the better USB to RS232 adapters
offer this. |
|
|
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
|
Posted: Mon Sep 19, 2022 11:34 pm |
|
|
Ttelmah, I've used your code to send and receive 9bit. Reliable as a bomb. Alas, no terminal program offers 9 bit. Development is done on 18f46k22, and this one has 9 bit support on UART.
Last edited by PrinceNai on Tue Sep 20, 2022 12:41 am; edited 3 times in total |
|
|
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
|
Posted: Mon Sep 19, 2022 11:39 pm |
|
|
To make it clear: PIC does send and receive 9 bit data. I'd just like to see that in a terminal. But you're right, of course. I'm using a cheap serial - usb and a logic probe on PIC RX. |
|
|
chaphill
Joined: 07 May 2019 Posts: 21 Location: Chappell Hill, Tx
|
|
Posted: Tue Sep 20, 2022 12:02 pm |
|
|
I have used 9 bit communication to multiple boards in data acquisition systems for a number of years. There are four ways that you can communicate with a PC that I am aware of.
1. Use the 8 bit plus parity setting on the pc side and just ignore the 9th bit. That will allow you to monitor the traffic and such, you just won't know what the 9th bit is doing.
2. If you write your own custom program to communicate with the 9 bit bus and use the 9th bit to indicate an address from a pc used as a bus master to the slaves you can also use the 8 bit plus parity, with the parity bit set low at all times except manually set the parity bit high for the one address byte. I have used this for years with no problems.
3. Use a pic with two serial ports to do the "dirty work" of sending and receiving 8 bit data on the pc side and translate the data received from the pc to set the first bit high for the address to slaves (first byte in the block for my protocol). This again was with my protocol of the bus master being the pc.
4. My preferred method is just get a logic analyzer and be done with it. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19538
|
|
Posted: Tue Sep 20, 2022 12:44 pm |
|
|
The point you are missing is that the standard PC UART does not support
9bit operation. A few do. There is a Startech chip, and an FTDI one that
do. These come with their own drivers that support 9bit operation.
The standard Windows drivers do not offer this.
I've merrily monitored 9bit busses with these by just using their driver,
and routing the serial inout to the display. In Linux it is relatively easier
I found at least two serial programs in the past that when used with a
UART that supported 9bit did offer it. I'm sure that SIO was one that did
but that was a long time ago, so not sure that the current versions do.
The key thing though is you need to be starting with a PC UART that
supports 9bit operation. You are not going to get anywhere until you have
this. |
|
|
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
|
Posted: Tue Sep 20, 2022 2:28 pm |
|
|
I guess it's going to be a logic analyzer, then :-) |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9243 Location: Greensville,Ontario
|
|
Posted: Wed Sep 21, 2022 5:58 am |
|
|
Kinda surprised no one has said to simply build/program a PIC 'interface module' to receive the 9 bit data and send to PC as 2 bytes. Hardware is a PIC and a USB<>TTL module. Then cut YOUR custom terminal program to handle the data.
It's a lot cheaper than a logic analyzer, and YOU can control how the data is presented on the screen. as long as the USB speed is 2x faster than the PIC side there won't be any delay in throughput.
or am I missing something ? |
|
|
jeremiah
Joined: 20 Jul 2010 Posts: 1354
|
|
Posted: Wed Sep 21, 2022 7:19 am |
|
|
Putty has an option for 9 data bits. Have you tried that?
https://www.putty.org/ |
|
|
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
|
Posted: Thu Sep 22, 2022 9:38 am |
|
|
Guys,
Thanks for all the answers and suggestions. At the end I went with a logic analyzer (from China, 5€, but it more than does the job to see what is going on on the line at a 19.20 baud speed. At 2Ms/s it can run forever). My problem here was that data comes fast, every 200ms. Different lengths of the messages. Since I'm a one man band and it takes me at least 20s from the start of the capture to actually trigger what I want to capture, that are a lot of characters that look identical. Same address every time. And the software doesn't have any filtering options that I'm aware of. But when I saw the format, it was easy to write something that just fills the buffer in a PIC with 512 characters and then export watch window from Mplab via .txt to Excel.
Maybe I was just lazy and wanted something with that built in. Record, export, analyze. |
|
|
newguy
Joined: 24 Jun 2004 Posts: 1909
|
|
Posted: Thu Sep 22, 2022 12:46 pm |
|
|
Not cheap, but the best logic analyzer I've ever used: https://www.saleae.com/
Not affiliated in any way, just a satisfied customer.
If the link doesn't appear due to the site's anti-advertising filters, just google "saleae". You'll have to dig a bit, but I'd be very surprised if their software does not include 9 bit serial decode. |
|
|
PrinceNai
Joined: 31 Oct 2016 Posts: 480 Location: Montenegro
|
|
Posted: Fri Sep 23, 2022 7:10 am |
|
|
That is the software I use, Logic 2.4. Even their 1.x software worked great. It decodes and shows all the data, with tons of options for serial. Number of bits (up to 64 per transfer), inverted/non inverted, LSB or MSB first,... What I haven't been able to do with it or I just didn't find the way is to present that data in a bit more readable form. |
|
|
chaphill
Joined: 07 May 2019 Posts: 21 Location: Chappell Hill, Tx
|
|
Posted: Sat Sep 24, 2022 8:18 am |
|
|
The Saleae logic analyzer is the one i use as well. The software handles the 9 bit protocol just fine, even handling a nonstandard baud rate from a module I designed before I knew any better. I highly recommend it. |
|
|
|