Difference between revisions of "Serial Terminal"

From Land Boards Wiki
Jump to navigation Jump to search
 
(86 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
<video type="youtube">waGELAI8n98</video>
 +
 +
== Serial Terminal ==
 +
 +
This design is based on Grant Searle's Monitor and keyboard controllers.
 +
 +
This is an inexpensive and small serial terminal design. This design can drive 80x25 text and graphics displays.
 +
 +
This design has been implemented on two cards with an optional 3rd card.
 +
** Display Processor
 +
** Serial I/O Processor
 +
** Third (optional) card is a PS/2 Keyboard adapter
 +
 +
[[File:SerialTerminal-P70002-cropped-720px.jpg]]
 +
 
== Display Processor ==
 
== Display Processor ==
  
This is an inexpensive and small serial terminal design. This design can drive 80x25 text and graphics displays. This design is based on Grant Searle's Monitor and keyboard controllers. This design has been implemented on two cards, this card and Serial I/O Processor - which is the other half of this terminal.
+
[[file:DISPLAYPROC-01-640pxY.jpg]]
  
Here's Grant's schematic:
+
* [http://www.searle.wales Grant Searle's 2-Chip Terminal design] - search page for "My simple video/kb interface"
 
+
* Three card set
[[File:Searle-DisplayProc.gif]]
+
** DISPLAYPROC-01 - Display Processor
 +
** SIOProc-01 - Serial I/O Controller
 +
** [[PS2X49]] - PS/2 keyboard Mini-DIN connector
 +
*** Populated half
 +
*** Not using level translator
  
 
=== Video controller specification ===
 
=== Video controller specification ===
Line 11: Line 30:
 
* Very easy to interface to, fast and requires no host/external memory
 
* Very easy to interface to, fast and requires no host/external memory
 
* Character set
 
* Character set
* Full "CGA" (8x8) character definitions as used on the IBM PC (DOS).
+
** Full "CGA" (8x8) character definitions as used on the IBM PC (DOS).
 
* Screen size
 
* Screen size
 
** Text - 80x25, 40x25, 80x12, 40x12, Graphics 160x100 or ANY mix (defined per 1 of 25 rows)
 
** Text - 80x25, 40x25, 80x12, 40x12, Graphics 160x100 or ANY mix (defined per 1 of 25 rows)
Line 35: Line 54:
 
** 4 bit data bus (requires 6 I/O pins)
 
** 4 bit data bus (requires 6 I/O pins)
 
* two-wire (I2C) uses only 2 pins
 
* two-wire (I2C) uses only 2 pins
** I2C (thanks to Dave Curran for his guidance and code on this) supports low (100KHz) and high (400KHz) speed clocks or higher (1MHz or more easily achievable).
+
** I2C (thanks to [http://blog.tynemouthsoftware.co.uk/ Dave Curran] for his guidance and code on this) supports low (100KHz) and high (400KHz) speed clocks or higher (1MHz or more easily achievable).
 
* Hardware
 
* Hardware
 
** Very low cost - two chips - ATmega328 and 74HCT166 (Shift Register)
 
** Very low cost - two chips - ATmega328 and 74HCT166 (Shift Register)
Line 41: Line 60:
 
** J1 - Video Connector
 
** J1 - Video Connector
 
** RCA Jack
 
** RCA Jack
** Center is signal
+
*** Center is signal
** Outside is ground
+
*** Outside is ground
 +
 
 +
=== Grant's Display Processor Schematic ===
 +
 
 +
[[File:Searle-DisplayProc.gif]]
 +
 
 +
=== Connector ===
 +
 
 +
==== P1 - Card Interconnect ====
  
== P1 - Card Interconnect ==
 
 
* 2x8 header, 0.1" pitch
 
* 2x8 header, 0.1" pitch
 
*Pinout
 
*Pinout
Line 64: Line 90:
 
# GND
 
# GND
  
=== ISP Cable ===
+
===== ISP Cable =====
 +
 
 +
* The card can be programmed with an ISP cable through the J1 connector or via the [[ATProgHead]] card
 +
* This is the pinout of the ISP cable
  
 
<pre>
 
<pre>
 
P1 Pin Description ISP Pin Description Color
 
P1 Pin Description ISP Pin Description Color
1 VCC 2 VCC Red
+
1 VCC 2 VCC Red
 
2
 
2
 
3
 
3
 
4
 
4
5 MOSI 4 MOSI Green
+
5 MOSI 4 MOSI Green
6 MISO 1 MISO Grey
+
6 MISO 1 MISO Grey
7 SCK 3 SCK Yellow
+
7 SCK 3 SCK Yellow
 
8
 
8
 
9
 
9
 
10
 
10
 
11
 
11
12 RESET 5 RST White
+
12 RESET 5 RST White
 
13
 
13
 
14
 
14
15 GND 6 GND Black
+
15 GND 6 GND Black
 
16
 
16
<pre>
+
</pre>
  
</pre>
 
 
=== Configuration Resistors ===
 
=== Configuration Resistors ===
  
Configuration Resistor values can also be set through soft switches in the code
+
* Configuration Resistor values can also be set through soft switches in the code
R5 - Two-wire interface (I2C)
+
** R5 - Two-wire interface (I2C)
R6 - 4-bit interface
+
** R6 - 4-bit interface
R7 - 10K for NTSC, open for PAL
+
** R7 - 10K for NTSC, open for PAL
R3, R4 - I2C Termination resistors - Install for I2C termination - typical = 2.2K
+
** R3, R4 - I2C Termination resistors - Install for I2C termination - typical = 2.2K
Software
+
 
Source Code
+
== Serial I/O Processor ==
Copy of the Display Processor Code in my GitHub Repository - any changes are here
+
 
Atmel AVR Studio Download
+
[[File:SIOPROC-01-640px.jpg]]
In
 
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin
 
Type
 
avrdude -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m -e -F -v -patmega328p -carduino -PCOM8 -b19200 -D -Uflash:w:"C:\Users\doug_000\Documents\GitHub\lb-Arduino-Code\LBCards\DisplayProc\AssemblerApplication1\AssemblerApplication1\Debug\AssemblerApplication1.hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
 
Checkout
 
Saw a blinking cursor
 
Assembly Sheet
 
Display Processor Assembly Sheet
 
  
SIOPROC-01-640px.jpg
 
  
Serial I/O Processor
+
* This is an inexpensive and small serial terminal design. This design can drive 80x25 text and graphics displays. This design is based on Grant Searle's Monitor and keyboard controllers. This design has been implemented on two cards, this card and Display Processor - which is the other half of this terminal.
This is an inexpensive and small serial terminal design. This design can drive 80x25 text and graphics displays. This design is based on Grant Searle's Monitor and keyboard controllers. This design has been implemented on two cards, this card and Display Processor - which is the other half of this terminal.
 
  
Here's Grant's schematic:
+
=== Grant's Serial I/o Schematic ===
  
Searle-SIOProc.gif
+
[[File:Searle-SIOProc.gif]]
  
== Features ==
+
=== Features ===
  
 
* Serial interface
 
* Serial interface
Line 128: Line 146:
 
* 8-bit interface connector for card-to-card connections
 
* 8-bit interface connector for card-to-card connections
  
== Connectors ==
+
=== Connectors ===
  
=== P1 - Card Interconnect ===
+
==== P1 - Card Interconnect ====
  
 
* 2x8 header, 0.1" pitch
 
* 2x8 header, 0.1" pitch
Line 141: Line 159:
 
# ID1 - CS* for ISP Download cable
 
# ID1 - CS* for ISP Download cable
 
# ID2 - MOSI for ISP Download cable
 
# ID2 - MOSI for ISP Download cable
ID3 - MISO for ISP Download cable
+
# ID3 - MISO for ISP Download cable
ID4 - SCK for ISP Download cable
+
# ID4 - SCK for ISP Download cable
ID5
+
# ID5
ID6
+
# ID6
ID7
+
# ID7
Unused
+
# Unused
RESET*
+
# RESET*
ACK/SDA (R4 terminator for I2C interface)
+
# ACK/SDA (R4 terminator for I2C interface)
AVAIL/SCL (R3 terminator for I2C interface)
+
# AVAIL/SCL (R3 terminator for I2C interface)
GND
+
# GND
GND
+
# GND
P2 - PS/2 Keyboard
 
PS2Conn.png
 
  
1x4 header, 0.1" pitch
+
==== P2 - Using PS/2 Adapter Cable ====
GND
 
VCC
 
KBCLK
 
KBDAT
 
PS/2 Adapter Cable
 
S-l1600-Adapter-Cable-720px.jpg
 
  
Ordered this cable from ebay.
+
[[File:S-l1600-Adapter-Cable-720px.jpg]]
Replaced 5 pin connector with 4 pin 0.1" pitch "Dupont" connector
+
 
Pinout of cable after re-wiring with new connector
+
* Ordered this cable from ebay.
 +
* Replaced 5 pin connector with 4 pin 0.1" pitch "Dupont" connector
 +
* Pinout of cable after re-wiring with new connector
 +
<pre>
 
PS/2 Pin P2 Pin Description Color
 
PS/2 Pin P2 Pin Description Color
 
1 4 Data TBD
 
1 4 Data TBD
Line 173: Line 186:
 
5 3 Clk TBD
 
5 3 Clk TBD
 
6 N/C N/C N/A
 
6 N/C N/C N/A
P3 - 5V FTDI/Power Connector
+
</pre>
S-l1600.jpg
+
 
 +
==== P3 - 5V FTDI/Power Connector ====
 +
 
 +
* Rev X2 SIOProc card
 +
* 1x6 header, 0.1" pitch
 +
* Pinout matches "standard" FTDI pinout with 1:1 wiring
 +
* [https://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf FTDI Cable]
 +
 
 +
[[File:FTDI_rot.jpg]]
 +
 
 +
* Pinout (signals referenced to SIOProc card)
 +
 
 +
# GND
 +
# RTS (OUT)
 +
# VCC (+5V)
 +
# RX (IN)
 +
# TX (OUT)
 +
# N/C (Marked as CTS on card buy not connected)
 +
 
 +
* VCC pin provides power into the card when used with an FTDI card
 +
 
 +
==== P3 - FTDI to RS-232 DCE Connections ====
 +
 
 +
* [[DCE]] - FTDI to RS-232 with DB-9 female connector
 +
* VCC pin provides 5V out when used with an RS-232 to TTL interface card
 +
* Swap-over cable
 +
 
 +
* Wire pins 1, 3 directly
 +
** Swap pins 2,6
 +
** Swap pins 4,5
 +
 
 +
==== P4 - In-System Programmer (ISP) Connector ====
 +
 
 +
* Cable for use with ArduinoISP programmer
 +
* 0.1" pitch "Dupont" connector
 +
* 2x3
 +
# MISO
 +
# VCC
 +
# SCK
 +
# MOSI
 +
# RESET*
 +
# GND
 +
 
 +
=== Configuration Resistors ===
 +
 
 +
* Configuration Resistor values can also be set through soft switches in the code
 +
** R1, R2 - I2C termination - install to terminate - typically 2.2K
 +
** R5 - Two Wire Interface output (I2C)
 +
** R6 - 4-bit Interface
 +
 
 +
==  PS/2 Keyboard Using PS2X49 card ==
 +
 
 +
[[File:SerialTerminal-P70002-cropped-720px.jpg]]
 +
 
 +
* Using [[PS2X49]] card
 +
** Populate J1 with purple (keyboard) Mini-DIN-6
 +
** Does not require U1 IC or J2
 +
** Cables to P2 on IO card
 +
 
 +
[[File:P985-cropped-640px.jpg]]
 +
 
 +
* R1, R2 = 0 ohms
 +
 
 +
[[File:P987-640px.jpg]]
 +
 
 +
* 1x4 header, 0.1" pitch
 +
# GND
 +
# VCC
 +
# KBCLK
 +
# KBDAT
  
1x6 header, 0.1" pitch
+
* Alternate chassis mount cable
Pinout
+
 
GND
+
[[File:PS2Conn.png]]
RTS
+
 
VCC (+5V)
+
== Software ==
TX
+
 
RX
+
* Source Code
N/C
+
** [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/Terminal Copy of the Display Processor Code in my GitHub Repository - any changes are here]
P4 - In-System Programmer (ISP) Connector
+
* [http://www.atmel.com/tools/atmelstudio.aspx#download Atmel AVR Studio Download]
Cable for use with ArduinoISP programmer
+
* Run CMD shell in Windows
0.1" pitch "Dupont" connector
+
** In C:\Program Files (x86)\Arduino\hardware\tools\avr\bin, type
2x3
+
<pre>
MISO
 
VCC
 
SCK
 
MOSI
 
RESET*
 
GND
 
Configuration Resistors
 
Configuration Resistor values can also be set through soft switches in the code
 
R1, R2 - I2C termination - install to terminate - typically 2.2K
 
R5 - Two Wire Interface output (I2C)
 
R6 - 4-bit Interface
 
Software
 
Source Code
 
Copy of the Serial I/O Processing Code in my GitHub Repository - any changes are located here
 
Atmel AVR Studio Download
 
 
avrdude -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m -e -F -v -patmega328p -carduino -PCOM8 -b19200 -D -Uflash:w:"C:\Users\doug_000\Documents\GitHub\lb-Arduino-Code\LBCards\SIOProc\GccApplication1\GccApplication1\Debug\GccApplication1.hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
 
avrdude -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m -e -F -v -patmega328p -carduino -PCOM8 -b19200 -D -Uflash:w:"C:\Users\doug_000\Documents\GitHub\lb-Arduino-Code\LBCards\SIOProc\GccApplication1\GccApplication1\Debug\GccApplication1.hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
Rev X1 Issues
+
</pre>
FTDI handshake moved from P3-6 to pin P3-2
+
- or -
Cut etch at FTDI connector P3-6
+
<pre>
Add wire U1-26 to P3-2
+
avrdude -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m -e -F -v -patmega328p -carduino -PCOM8 -b19200 -D -Uflash:w:"C:\Users\doug_000\Documents\GitHub\lb-Arduino-Code\LBCards\DisplayProc\AssemblerApplication1\AssemblerApplication1\Debug\AssemblerApplication1.hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
Assembly Sheet
+
</pre>
SIOProc-01 Assembly Sheet
+
 
 +
== Similar Terminals ==
 +
 
 +
* [https://github.com/slu4coder/Minimal-Terminal Minimal Terminal]
 +
 
 +
<video type="youtube">jR-SqXLgBNo</video>
 +
 
 +
== Checkout ==
 +
 
 +
* Saw a blinking cursor
 +
 
 +
=== Rev X2 Issues ===
 +
 
 +
* None
 +
 
 +
=== Rev X1 Issues ===
 +
 
 +
* FTDI handshake moved from P3-6 to pin P3-2
 +
* Cut etch at FTDI connector P3-6
 +
* Add wire U1-26 to P3-2
 +
 
 +
== Assembly Sheet ==
 +
 
 +
* [[SIOProc-01 Assembly Sheet]]
 +
* [[Display Processor Assembly Sheet]]

Latest revision as of 11:16, 4 September 2024

Serial Terminal

This design is based on Grant Searle's Monitor and keyboard controllers.

This is an inexpensive and small serial terminal design. This design can drive 80x25 text and graphics displays.

This design has been implemented on two cards with an optional 3rd card.

    • Display Processor
    • Serial I/O Processor
    • Third (optional) card is a PS/2 Keyboard adapter

SerialTerminal-P70002-cropped-720px.jpg

Display Processor

DISPLAYPROC-01-640pxY.jpg

  • Grant Searle's 2-Chip Terminal design - search page for "My simple video/kb interface"
  • Three card set
    • DISPLAYPROC-01 - Display Processor
    • SIOProc-01 - Serial I/O Controller
    • PS2X49 - PS/2 keyboard Mini-DIN connector
      • Populated half
      • Not using level translator

Video controller specification

  • Very easy to interface to, fast and requires no host/external memory
  • Character set
    • Full "CGA" (8x8) character definitions as used on the IBM PC (DOS).
  • Screen size
    • Text - 80x25, 40x25, 80x12, 40x12, Graphics 160x100 or ANY mix (defined per 1 of 25 rows)
  • Resolution
    • 640x200 for 80 char text
    • 160x100 for graphics
  • Fonts
    • Font sizes are defined for each line
    • All chars on the same line have the same font size and style
  • Graphics
    • Any part of the active screen, up to 160x100 pixels
    • Each pixel individually addressable
    • Defined on any of the 25 screen lines
  • Video output
    • Standard composite monochrome video
    • PAL or NTSC timing
    • Non-interlaced so no flicker
  • Display memory
    • 2000 chars internal + 25 line attributes - no host memory needed
    • Very fast update and scrolling whichever interface is used
  • Interface
    • 8 bit data bus (requires 10 I/O pins)
    • 4 bit data bus (requires 6 I/O pins)
  • two-wire (I2C) uses only 2 pins
    • I2C (thanks to Dave Curran for his guidance and code on this) supports low (100KHz) and high (400KHz) speed clocks or higher (1MHz or more easily achievable).
  • Hardware
    • Very low cost - two chips - ATmega328 and 74HCT166 (Shift Register)
  • Connectors
    • J1 - Video Connector
    • RCA Jack
      • Center is signal
      • Outside is ground

Grant's Display Processor Schematic

Searle-DisplayProc.gif

Connector

P1 - Card Interconnect

  • 2x8 header, 0.1" pitch
  • Pinout
  1. VCC
  2. VCC
  3. ID0
  4. ID1
  5. ID2 - MOSI for ISP Download cable
  6. ID3 - MISO for ISP Download cable
  7. ID4 - SCK for ISP Download cable
  8. ID5
  9. ID6
  10. ID7
  11. Unused
  12. RESET*
  13. ACK/SDA (R4 terminator for I2C interface)
  14. AVAIL/SCL (R3 terminator for I2C interface)
  15. GND
  16. GND
ISP Cable
  • The card can be programmed with an ISP cable through the J1 connector or via the ATProgHead card
  • This is the pinout of the ISP cable
P1 Pin	Description	ISP Pin	Description	Color
1	VCC		2	VCC		Red
2				
3				
4				
5	MOSI		4	MOSI		Green
6	MISO		1	MISO		Grey
7	SCK		3	SCK		Yellow
8				
9				
10				
11				
12	RESET		5	RST		White
13				
14				
15	GND		6	GND		Black
16				

Configuration Resistors

  • Configuration Resistor values can also be set through soft switches in the code
    • R5 - Two-wire interface (I2C)
    • R6 - 4-bit interface
    • R7 - 10K for NTSC, open for PAL
    • R3, R4 - I2C Termination resistors - Install for I2C termination - typical = 2.2K

Serial I/O Processor

SIOPROC-01-640px.jpg


  • This is an inexpensive and small serial terminal design. This design can drive 80x25 text and graphics displays. This design is based on Grant Searle's Monitor and keyboard controllers. This design has been implemented on two cards, this card and Display Processor - which is the other half of this terminal.

Grant's Serial I/o Schematic

Searle-SIOProc.gif

Features

  • Serial interface
  • Fully buffered 115200 baud, handshake on receive, TTL levels.
  • Keyboard interface
  • PC PS/2 standard keyboard connector, accepts standard keyboards made for PCs. Keyboard LED illumination implemented, and allows for caps lock and num lock.

Hardware

  • Two cards
  • 8-bit interface connector for card-to-card connections

Connectors

P1 - Card Interconnect

  • 2x8 header, 0.1" pitch
  • Connector matches the pinout of the other card so it can be mated directly to the other card via 1:1 cable or a female header on this card
  • Pinout
  1. VCC
  2. VCC
  3. ID0
  4. ID1 - CS* for ISP Download cable
  5. ID2 - MOSI for ISP Download cable
  6. ID3 - MISO for ISP Download cable
  7. ID4 - SCK for ISP Download cable
  8. ID5
  9. ID6
  10. ID7
  11. Unused
  12. RESET*
  13. ACK/SDA (R4 terminator for I2C interface)
  14. AVAIL/SCL (R3 terminator for I2C interface)
  15. GND
  16. GND

P2 - Using PS/2 Adapter Cable

S-l1600-Adapter-Cable-720px.jpg

  • Ordered this cable from ebay.
  • Replaced 5 pin connector with 4 pin 0.1" pitch "Dupont" connector
  • Pinout of cable after re-wiring with new connector
PS/2 Pin	P2 Pin	Description	Color
1	4	Data	TBD
2	N/C	N/C	N/A
3	1	GND	TBD
4	2	+5V	TBD
5	3	Clk	TBD
6	N/C	N/C	N/A

P3 - 5V FTDI/Power Connector

  • Rev X2 SIOProc card
  • 1x6 header, 0.1" pitch
  • Pinout matches "standard" FTDI pinout with 1:1 wiring
  • FTDI Cable

FTDI rot.jpg

  • Pinout (signals referenced to SIOProc card)
  1. GND
  2. RTS (OUT)
  3. VCC (+5V)
  4. RX (IN)
  5. TX (OUT)
  6. N/C (Marked as CTS on card buy not connected)
  • VCC pin provides power into the card when used with an FTDI card

P3 - FTDI to RS-232 DCE Connections

  • DCE - FTDI to RS-232 with DB-9 female connector
  • VCC pin provides 5V out when used with an RS-232 to TTL interface card
  • Swap-over cable
  • Wire pins 1, 3 directly
    • Swap pins 2,6
    • Swap pins 4,5

P4 - In-System Programmer (ISP) Connector

  • Cable for use with ArduinoISP programmer
  • 0.1" pitch "Dupont" connector
  • 2x3
  1. MISO
  2. VCC
  3. SCK
  4. MOSI
  5. RESET*
  6. GND

Configuration Resistors

  • Configuration Resistor values can also be set through soft switches in the code
    • R1, R2 - I2C termination - install to terminate - typically 2.2K
    • R5 - Two Wire Interface output (I2C)
    • R6 - 4-bit Interface

PS/2 Keyboard Using PS2X49 card

SerialTerminal-P70002-cropped-720px.jpg

  • Using PS2X49 card
    • Populate J1 with purple (keyboard) Mini-DIN-6
    • Does not require U1 IC or J2
    • Cables to P2 on IO card

P985-cropped-640px.jpg

  • R1, R2 = 0 ohms

P987-640px.jpg

  • 1x4 header, 0.1" pitch
  1. GND
  2. VCC
  3. KBCLK
  4. KBDAT
  • Alternate chassis mount cable

PS2Conn.png

Software

avrdude -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m -e -F -v -patmega328p -carduino -PCOM8 -b19200 -D -Uflash:w:"C:\Users\doug_000\Documents\GitHub\lb-Arduino-Code\LBCards\SIOProc\GccApplication1\GccApplication1\Debug\GccApplication1.hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"

- or -

avrdude -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m -e -F -v -patmega328p -carduino -PCOM8 -b19200 -D -Uflash:w:"C:\Users\doug_000\Documents\GitHub\lb-Arduino-Code\LBCards\DisplayProc\AssemblerApplication1\AssemblerApplication1\Debug\AssemblerApplication1.hex":i -C"C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"

Similar Terminals

Checkout

  • Saw a blinking cursor

Rev X2 Issues

  • None

Rev X1 Issues

  • FTDI handshake moved from P3-6 to pin P3-2
  • Cut etch at FTDI connector P3-6
  • Add wire U1-26 to P3-2

Assembly Sheet