Uart Data Ready Mikroc

28.08.2019

“Ready for PIC“ is one of MikroElektronika‘s compact prototyping boards for 28 and 40 pin PIC microcontrollers. The board comes with PIC16F887 microcontroller which is preprogrammed with an UART bootloader firmware and thus eliminates the need of an external programmer. The on-board USB-UART module allows the serial data transfer between the PIC and a PC using an USB cable. It has also got a reasonable size prototyping area to add more functionalities to the board as required. These features make this board an ideal candidate for doing embedded projects that require PC interfacing. This article first reviews the basic features of the Ready for PIC board and then demonstrates how to write a PC application in Processing (an open source programming language) to communicate with the board through the on-board USB-UART module.

UART Library. The UART hardware module is available with a number of PIC32 MCUs. The mikroC PRO for PIC32 UART Library provides comfortable work with the Asynchronous (full duplex). The function receives a byte via UART. Use the UARTDataReady function to test if data is ready first.

Ready for PIC board and PC interfacing using Processing

A brief review of Ready for PIC board

Ready for PIC is a compact development tool for 28/40 pin PIC microcontrollers. The board by default is equipped with PIC16F887 MCU placed in a DIP40 socket but it does provide connection holes to accommodate a 28-pin device. To program the MCU you can either use the pre-installed bootloader or an external programmer. For using an external programmer, you need to make a few adjustments on the board. Please read the User’s Manual for further instructions on this. Four 2×5 male header pins are available on the board for easy access to the MCU I/O pins. The on-board FT232RL chip provides a USB to asynchronous serial data transfer interface so that the MCU can communicate with a PC through a virtual COM port using a USB cable. The board has two LEDs marked with Rx and Tx which blink when data transfer via USB UART module is active. The board can also be used with a 3.3 V type PIC microcontroller. There is an on-board jumper for selecting between 5 V and 3.3 V supply voltage for the MCU.

On-board features and specifications

Little about Processing

Processing is an open-source software development environment designed for simplifying the process of creating digital images, animations and interactive graphical applications. Team rept redgate keygen maker download. It is free to download and operates on Mac, Windows, and Linux platforms. The Processing Interactive Development Environment (IDE) has the same basic structure as that of the Arduino IDE and is very easy to use. The programming language is so simple that you can create an interactive graphics with just a few lines of code. Here we will not discuss much of the graphics capability of Processing. We will rather focus on the Processing Serial library that will allow to transfer data between the PC and the Ready for PIC board.


First, a quick history of RS232. What is RS232? It's just a name for a standard that has propagated from generation to generation of computers. The first computers had serial ports that used RS232, and even current computers have serial ports (or at least USB ports that act like RS232 ports). Back in the day, serial information needed to be passed from devices like printers, joysticks, scanners, etc to the computer. The simplest way to do this was to pass a series of 1s and 0s to the computer. Both the computer and the device agreed on a speed of information - 'bits per second'. A computer would pass image data to a printer at 9600 bits per second and the printer would listen for this stream of 1s and 0s expecting a new bit every 1/9600 = 104us (104 micro-seconds, 0.000104 seconds). As long as the computer output bits at the pre-determined speed, the printer could listen.
Zoom forward to today. Electronics have changed a bit. Before they were relatively high power, high voltage devices. The standard that is 'RS232' dictates that a bit ranges from -12V to +12V. Modern electronics do not operate at such high positive and negative voltages. In fact, our 8051 runs 0V to 5V. So how do we get our 5V micro to talk the RS232 +/-12V voltages? This problem has been solved by the IC manufacturers of the world. They have made an IC that is generically known as the MAX232 (very close to RS232, no?).
The MAX232 is an IC originally designed by a company called Maxim IC that converts the +/-12V signals of RS232 down to the 0/5V signals that our 8051 can understand. It also boosts the voltage of our 8051 to the needed +/-12V of the RS232 protocol so that a computer can understand our 8051 and vice versa. To get our 8051 IC sending serial characters to a computer, we have to send these serial signals through a MAX232 circuit so that the computer receives +/-12V RS232 signals. Don't worry if you're working with a chip labeled 'ICL232' or 'ST232' - these are just generics of the MAX232. Everyone says 'MAX232'. The ICs all function the same and nearly all have the same pinout.


Uart data ready mikroc tutorial

Uart Settings

The UART hardware module is available with a number of 8051 compliant MCUs. The mikroC PRO for 8051 UART Library provides comfortable work with the Asynchronous (full duplex) mode.
Notes:
  • UART routines require you to specify the module you want to use. To select the desired UART, simply change the letter x in the prototype for a number from 1 to 2.
    Number of UART modules per MCU differs from chip to chip. Please, read the appropriate datasheet before utilizing this library.
Example: UART2_Init(9600); initializes UART 2 module at 9600 bps.
  • Some MCUs have multiple UART modules. Switching between the UART modules in the UART library is done by the UART_Set_Active function (UART module has to be previously initialized).
  • Some of the MCUs do not support UARTx_Init_Advanced routine. Please, refer to the appropriate datasheet.
Prototype
Returns
Description
The internal UART module module is set to:
  • receiver enabled
  • frame size 8 bits
  • 1 STOP bit
  • parity mode disabled
  • disabled automatic address recognition
  • baud_rate: requested baud rate
Refer to the device datasheet for baud rates allowed for specific Fosc.
MCU with the UART module.
// Initialize hardware UART1 and establish communication at 9600 bps
UARTx_Init_Advanced
void UARTx_Init_Advanced(unsigned long baud_rate, char adv_setting);
Nothing.
Configures and initializes UART module.
  • baud_rate sets the desired UART baud rate
  • adv_setting: UART module configuration flags. Predefined library constants (see the table below) can be ORed to form appropriate configuration value.
Description
Parity constants:
_UART_NOPARITY
_UART_EVENPARITY
_UART_ODDPARITY
_UART_MARKPARITY
_UART_SPACEPARITY
1 stop bit
2 stop bits
Output mode constants:
_UART_OUTPUT_8051
_UART_OUTPUT_PUSH_PULL
_UART_OUTPUT_OPEN_DRAIN
  • Some MCUs do not support advanced configuration of the UART module. Please consult appropriate datasheet.
  • Advanced parity and stop bit settings are supported by some Silicon Laboratories MCU's, while output settings by some ATMEL MCU's. Please, consult appropriate datasheet before using UARTx_Init_Advanced routine.
Requires
Example
// Initialize hardware UART1 module and establish communication at 9600 bps, 8-bit data, even parity and 2 STOP bits
UART1_Init_Advanced(9600, _UART_EVENPARITY, _UART_TWO_STOPBITS);
Prototype
Returns
  • 1 if data is ready for reading
  • 0 if there is no data in the receive register
Use the function to test if data in receive buffer is ready for reading.
MCU with the UART module.
The UART module must be initialized before using this routine. See UARTx_Init and UARTx_Init_Advanced routines.
char receive;
// read data if ready
receive = UART1_Read();
Prototype
Returns
Description
The function receives a byte via UART. Use the UARTx_Data_Ready function to test if data is ready first.
MCU with the UART module.
The UART module must be initialized before using this routine. See UARTx_Init and UARTx_Init_Advanced routines.
char receive;
// read data if ready
receive = UART1_Read();
Prototype
void UARTx_Read_Text(char *Output, char *Delimiter, char Attempts);
Nothing.
Reads characters received via UART until the delimiter sequence is detected. The read sequence is stored in the parameter output; delimiter sequence is stored in the parameter delimiter.
This is a blocking call: the delimiter sequence is expected, otherwise the procedure exits (if the delimiter is not found).
  • Output: received text
  • Delimiter: sequence of characters that identifies the end of a received string
  • Attempts: defines number of received characters in which Delimiter sequence is expected. If Attempts is set to 255, this routine will continuously try to detect the Delimiter sequence.
Requires
UART HW module must be initialized and communication established before using this function. See UARTx_Init and UARTx_Init_Advanced routines.
Read text until the sequence “OK” is received, and send back what’s been received:
Delay_ms(100);
while (1) {
if (UART1_Data_Ready() 1) { // if data is received
UART1_Read_Text(output, 'OK', 10); // reads text until 'OK' is found
}
UARTx_Write
void UARTx_Write(char _data);
Nothing.
The function transmits a byte via the UART module.
  • _data: data to be sent
Requires
The UART module must be initialized before using this routine. See UARTx_Init and UARTx_Init_Advanced routines.
unsigned char _data = 0x1E;
UART1_Write(_data);
Prototype
Returns
Description
Sends text via UART. Text should be zero terminated.
  • UART_text: text to be sent
Requires
UART HW module must be initialized and communication established before using this function. See UARTx_Init and UARTx_Init_Advanced routines.
Read text until the sequence “OK” is received, and send back what’s been received:
Delay_ms(100);
while (1) {
if (UART1_Data_Ready() 1) { // if data is received
UART1_Read_Text(output, 'OK', 10); // reads text until 'OK' is found
}
UART_Set_Active
void UART_Set_Active(char (*read_ptr)(), void (*write_ptr)(unsigned char data_), char (*ready_ptr)())
Nothing.
Sets active UART module which will be used by the UART library routines.
  • read_ptr:UARTx_Read handler
  • write_ptr:UARTx_Write handler
  • ready_ptr:UARTx_Data_Ready handler
Requires
Routine is available only for MCUs with two UART modules.
Used UART module must be initialized before using this routine. See UARTx_Init and UARTx_Init_Advanced routines.
// Activate UART2 module
UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready);
This example demonstrates simple data exchange via UART. If MCU is connected to the PC, you can test the example from the mikroC PRO for 8051 USART Terminal.

Uart data ready mikroc pdf
UART1_Init(4800); // Initialize UART module at 4800 bps
Delay_ms(100); // Wait for UART module to stabilize
UART1_Write_Text('Start');
if (UART1_Data_Ready()) { // If data is received,
uart_rd = UART1_Read(); // read the received data,
}
}

HW Connection
Comments are closed.