Tags:
view all tags
%DASHBOARD{ section="dashboard_start" }% %DASHBOARD{ section="banner" image="%PUBURLPATH%/Cosmac/ForthSTM32WB/nucleo-header.jpg" title="USB-CDC for Serial Communication" titlestyle="color:#F00000;" }% %DASHBOARD{ section="box_start" title="Intro" width="485" height="250"}% ---+ Intro To work with a Forth system you need some kind of a [[https://en.wikipedia.org/wiki/System_console][console]]. A text [[https://en.wikipedia.org/wiki/Computer_terminal#Text_terminals][terminal]] with [[https://en.wikipedia.org/wiki/RS-232][RS-232]] port has been used for this purpose in the past, today PCs have software to emulate terminals but do not have any RS-232 interface. But there are usually USB interfaces instead. The [[https://en.wikipedia.org/wiki/USB_communications_device_class][USB-CDC]] appears as a traditional RS-232 port in your operating system (Linux =/dev/ttyACMx=, Windoze =COMx=). No need to bother with baud rates, handshaking, parity and other awkward things. %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" title="Contents" width="460" height="250"}% %TOC% %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ Terminal-IO <pre> emit? ( -- Flag ) Ready to send a character? key? ( -- Flag ) Checks if a key is waiting key ( -- Char ) Waits for and fetches the pressed key emit ( Char -- ) Emits a character hook-emit? ( -- a-addr ) Hooks for redirecting terminal IO on the fly hook-key? hook-key hook-emit </pre> <pre> : ascii ( -- ) 127 32 do i emit loop ; : crs-ascii ( -- ) 127 32 do i crs-emit loop 10 crs-emit / LF ; </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ USB-CDC Words (API) <pre> cdc-emit ( c -- ) Emit one character cdc-key ( -- c ) Receive one character cdc-emit? ( -- ? ) Ready to send a character cdc-key? ( -- ? ) Is there a key press ? uart ( -- ) redirect console to serial interface (UART) cdc ( -- ) redirect console to USB-CDC crs ( -- ) redirect console to BLE CRS </pre> For console redirection see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/common/terminalhooks.s][terminalhooks.s]]. Default console is UART, but if you press button SW2 on reset, the console is redirected to the USB-CDC device, see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/cube/mecrisp.s][mecrisp.s]]. Default console for the dongle is USB-CDC. %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ UART (Serial) Words (API) <pre> serial-emit ( c -- ) Emit one character serial-key ( -- c ) Receive one character serial-emit? ( -- ? ) Ready to send a character serial-key? ( -- ? ) Is there a key press ? baudrate ( u -- ) set baud rate (e.g. 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, <b>115200</b>) paritybit ( u -- ) set parity bit <b>0 none</b>, 1 odd, 2 even wordlength ( u -- ) set word length 7, <b>8</b>, 9 (including parity) stopbits ( u -- ) set stop bits <b>1</b>, 2 uart ( -- ) redirect console to serial interface (UART) cdc ( -- ) redirect console to USB-CDC crs ( -- ) redirect console to BLE CRS </pre> For console redirection see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/common/terminalhooks.s][terminalhooks.s]]. Default console is UART, but if you press button SW2 on reset, the console is redirected to the USB-CDC device, see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/cube/mecrisp.s][mecrisp.s]]. Default console for the dongle is USB-CDC. %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ BLE Cable Replacement Words (API) <pre> crs-emit ( c -- ) Emit one character crs-key ( -- c ) Receive one character crs-emit? ( -- ? ) Ready to send a character crs-key? ( -- ? ) Is there a key press ? uart ( -- ) redirect console to serial interface (UART) cdc ( -- ) redirect console to USB-CDC crs ( -- ) redirect console to BLE CRS </pre> For console redirection see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/common/terminalhooks.s][terminalhooks.s]]. Default console is UART, but if you press button SW2 on reset, the console is redirected to the USB-CDC device, see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/cube/mecrisp.s][mecrisp.s]]. Default console for the dongle is USB-CDC. %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="dashboard_end" }% -- %USERSIG{PeterSchmid - 2020-04-20}% ---++ Comments %COMMENT%
Edit
|
Attach
|
Watch
|
P
rint version
|
H
istory
:
r28
|
r8
<
r7
<
r6
<
r5
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r6 - 2020-05-18
-
PeterSchmid
Home
Site map
Cosmac web
MRR web
MecrispCube web
SuperRandonnee web
TWiki web
Ursula web
Velo web
MecrispCube Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Edit
Attach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback