* README.md
- Add new readme indicating that this host program is only intended for the
stream-based demo, and explaining how to use it
* host.adb
- Add much more comments in the header block explaining how to use this program and
why it is needed
- Parameterize the host port number instead of hard-coding it
* demo_serial_port_blocking.adb
- Use normalized (new) procedure names for Send and Receive, for consistency with
other versions
- Add comments re: baud rate and other settings required
* demo_serial_port_nonblocking.adb
- Better name for local procedure
- Add many more comments re: settings
* demo_serial_port_streaming.adb
- Replace source code in comment header block with location of the actual
code and project file.
- Add comment re: serial port settings
* peripherals_blocking.ads
- Peripheral should be a constant
- COM can now reference the designated USART, the component of Peripheral
* peripherals_nonblocking.ads
- Same as for peripherals_blocking.ads
* peripherals_streaming.ads
- Same as for peripherals_blocking.ads
* serial_io-blocking.ads
- Type Serial_Port now designates a USART rather than type Peripheral
- No longer provide call through routines for the Serial_IO package's
Initialize_Hardware and Configure since client can easily call them. Better
separation of concerns as a result.
- Change signatures of internal routines to be access-to-USART
* serial_io-blocking.adb
- Internal simplifications reflecting change to access discriminant now designating type USART
- Remove code for Initialize_Hardware and Configure, per removal from package spec
* serial_io-nonblocking.ads
- Type Serial_Port now designates a USART rather than type Peripheral
- No longer provide call through routines for Serial_IO packages
Initialize_Hardware and Configure since client can easily do so, and simplifies this package
- Change signatures of internal routines to be access-to-USART
* serial_io-nonblocking.adb
- Internal simplifications reflecting change to access discriminant now designating type USART
- Remove code for Initialize_Hardware and Configure, per removal from package spec
- Use short-circuit control forms in ISR since don't need to check both conditions, should be
a little faster
* serial_io-streaming.ads
- Type Serial_Port now designates a USART rather than type Peripheral
- No longer provide call through routines for Serial_IO packages
Initialize_Hardware and Configure since client can easily do so, and simplifies this package
- Change signatures of internal routines to be access-to-USART
* serial_io-streaming.adb
- Internal simplifications reflecting change to access discriminant now designating type USART
- Remove code for Initialize_Hardware and Configure, per removal from package spec
* serial_io.ads
- Procedure Initialize_Hardware's formal parameter is no longer an access parameter
- Procedure Configure's first formal parameter is now access to USART
* serial_io.adb
- Change to prcoedures' signatures as per spec
- Procedure Configure now uses distinguished receiver syntax for USART routines, much cleaner
The compiler expands an assignment to part of the DR register
to a read-modify-write sequence. However, reading DR has
the side-effect of clearing the SR.RXNE bit, so sending
a byte could result in the loss of input bytes.
RM0386 Rev 6 22.3.12 notes that there may be a delay before the BDTR.MOE
bit reads as 1 after writing to it. The RM says that only a single
instruction is needed, but testing has shown that this is incorrect.
With the previous code, calling Enable_Main_Output and then immediately
calling a procedure to set a different part of the register could result
in the MOE bit being inadvertently set low.