Software UART Library

The mikroPascal PRO for FT90x provides routines for implementing Software UART communication. These routines are hardware independent and can be used with any MCU.
The Software UART Library provides easy communication with other devices via the RS232 protocol.

Important : The Software UART library implements time-based activities, so interrupts need to be disabled when using it.

External dependencies of Software UART Library

The following variables must be defined in all projects using Software UART Library: Description : Example :
var Soft_Uart_RX_Pin : sbit; sfr; external; Data In line. var Soft_Uart_RX_Pin : sbit at GPIO_PIN26_Bit;
var Soft_Uart_TX_Pin : sbit; sfr; external; Data Out line. var Soft_Uart_TX_Pin : sbit at GPIO_PIN27_Bit;

Library Routines

Soft_UART_Init

Prototype

function Soft_UART_Init(baud_rate : dword; inverted : word) : byte;

Description

Configures and initializes the software UART module.

Software UART routines use Delay_Cyc routine. If requested baud rate is too low then calculated parameter for calling Delay_Cyc exceeds Delay_Cyc argument range.

If requested baud rate is too high then rounding error of Delay_Cyc argument corrupts Software UART timings.

Parameters
  • baud_rate: requested baudrate. Maximum baud rate depends on the MCU’s clock and working conditions
  • inverted: if set to non-zero value, indicates inverted logic on output
Returns
  • 2 - error, requested baud rate is too low
  • 1 - error, requested baud rate is too high
  • 0 - successful initialization
Requires

Nothing.

Example
// Software UART module connections
var Soft_Uart_RX_Pin : sbit at GPIO_PIN26_Bit;
var Soft_Uart_TX_Pin : sbit at GPIO_PIN27_Bit;
// End Software UART module connections
...
error := Soft_UART_Init(4800, 0);        // Initialize Soft UART at 4800 bps
Notes

The Software UART library implements time-based activities, so interrupts need to be disabled when using it.

Soft_UART_Read

Prototype

function Soft_UART_Read(var error : byte) : byte;

Description

The function receives a byte via software UART.

This is a blocking function call (waits for start bit). Programmer can unblock it by calling Soft_UART_Break routine.

Parameters
  • error: Error flag. Error code is returned through this variable. Values :
  • 0 - no error
  • 1 - stop bit error
  • 255 - user abort, Soft_UART_Break called
Returns

Byte received via UART.

Requires

Software UART must be initialized before using this function. See the Soft_UART_Init routine.

Example
var data_ : byte;
    error : word;
...
// wait until data is received
repeat
  data_ := Soft_UART_Read(error);
until (error = 0);

// Now we can work with data:
if (data_) then begin  ...  end
Notes

The Software UART library implements time-based activities, so interrupts need to be disabled when using it.

Soft_UART_Write

Prototype

procedure Soft_UART_Write(udata : byte);

Description

This routine sends one byte via the Software UART bus.

Parameters
  • udata: data to be sent.
Returns

Nothing.

Requires

Software UART must be initialized before using this function. See the Soft_UART_Init routine.

Be aware that during transmission, software UART is incapable of receiving data – data transfer protocol must be set in such a way to prevent loss of information.

Example
var some_byte : byte;
...
some_byte := $0A;
// Write a byte via Soft UART
Soft_UART_Write(some_byte);
Notes

The Software UART library implements time-based activities, so interrupts need to be disabled when using it.

Soft_UART_Break

Prototype

procedure Soft_UART_Break();

Description

Soft_UART_Read is blocking routine and it can block the program flow. Calling Soft_UART_Break routine from the interrupt will unblock the program execution. This mechanism is similar to WDT.

Parameters

None.

Returns

Nothing.

Requires Nothing.
Example


          
Notes

The Software UART library implements time-based activities, so interrupts need to be disabled when using it.

Copyright (c) 2002-2015 mikroElektronika. All rights reserved.
What do you think about this topic ? Send us feedback!
Want more examples and libraries? 
Find them on LibStock - A place for the code