Proton Basic Serial Interrupt

Posted on by

Access Serial Ports with PICBASIC The developers resource for computer interfacing, especially USB, serial COM ports, mass storage, and embedded networking. Formerly Lvr. comHome Articles. Access Serial Ports with PICBASICThis article originally appeared in the May 2. Nuts Volts. Also see Access Serial Ports with Visual Basic. NET. Last time I showed how to use Visual Basic. Also see Access Serial Ports with Visual Basic. Why use a serial port and not USB Serial ports are a good choice. PIC BASIC GCBASIC. Read more. In this tutorial you will learn all about the 2 wire I2C serial protocol. Proton Basic Serial Interrupts' title='Proton Basic Serial Interrupts' />NET to transfer data via a PCs serial ports, including USB virtual COM ports. I described a Visual Basic application that sends commands and receives responses from a device connected via a serial port. This month Ill show a companion PICBASIC PRO program for a PIC microcontroller. The program detects received commands, takes requested actions, and sends responses. Ill also show how to use an RS 4. Serial Port Hardware. I wrote the code in this article for a PIC1. Proton manual ver 3 1 1. PROTON BASIC. 279 ONINTERRUPT. Comandos do Proton IDE PIC Basic. Por Wander. Transmitir dados para a porta serial nos PIC que. Mostrar caracteres em um Display LCD. ONLOWINTERRUPT. Proton PICBASIC vs MeLabs PICBASIC whats the. Proton Basic. need to write an interrupt routine otherwise the serial receive is a. F4. 52. 0 microcontroller. Like many PICs, the PIC1. Sql Server 2005 Download For Windows 8.1 64 Bit. F4. 52. 0 has a built in serial port. The chips EUSART manages serial communications and supports an asynchronous mode that is compatible with serial ports on PCs. PORTC. 6 TX is the serial output, and PORTC. RX is the serial input. I ran the code on Microchips PICDEM 2 Plus development board. On the board, the PICs serial port interfaces to a MAX3. PICs 5. V signals and RS 2. The board has a 9 pin female D sub connector for the RS 2. FMRapMEMvc/hqdefault.jpg' alt='Proton Basic Serial Interrupt' title='Proton Basic Serial Interrupt' />Most RS 2. PCs have male 9 pin D subs. USBRS 2. 32 adapters are also available with these connectors. To connect a PICDEM 2 Plus board to a serial port on a PC, use a straight across cable, not a null modem cable or adapter, which swaps the lines in the cable. If in doubt, use an ohmmeter. With a probe on pin 2 of each connector on the cable, the resistance should measure close to zero. Why use a serial port and not USB Serial ports are a good choice when you want to keep things simple and inexpensive. The program code to access a serial port is less complex than whats required to communicate via USB. Plus, the number of microcontrollers with embedded serial ports is much greater than those with embedded USB controllers. Partner Links. Accessing the Port. Listing 1 is PICBASIC code that configures the PICs serial port and runs the main program loop. The complete code plus a Visual Basic. NET project to use with it are available from www. In the PIC, several registers enable the port, set the bit rate, and store received data and data to transmit. The chips data sheet details the functions of the register bits. The example program contains an endless do nothing loop. A real world application can perform any needed actions in the loop. For example, a monitoring device can read sensor data, or a motor control device can send control signals to the motors. Listing 2 is an interrupt service routine ISR for the serial ports receive interrupt. The ISR runs when a new byte has arrived at the serial port. On a framing error, the routine reads the data to clear the error but otherwise ignores the data. Causes for framing errors include bit rates that dont match and a noisy line. On receiving data without an error, an hserin statement stores incoming data until receiving a line feed LF code of 0. Ah, receiving 5 bytes, or waiting 1 second, whichever occurs first. On a timeout, the ISR exits with no further action. On receiving a LF or five bytes, the ISR calls the routine in Listing 3. The routine checks to see if the serial port received a valid command. The routine understands two commands, L1. L1. 0. On receiving L1. PORTB. 0 1 to turn on LED RB1 on the PICDEM 2 Plus board. The device then sends an acknowledgment consisting of the character 1 followed by a LF. On receiving L1. PORTB. LED RB1 and sends the character 0 followed by a LF. A remote computer that sends a command and receives either 0 or 1 followed by a LF can assume the command was received and carried out. You can test this code with the Visual Basic. NET example presented last time, or you can type commands and view responses in a terminal emulator utility such as Hyperterminal. Some terminal emulators send a carriage return CR code 0. Dh preceding the LF at the end of each line. The PICBASIC code ignores a received CR before the LF. Preventing Overflows. On the PIC1. 8F4. If the buffer is full and a third byte arrives before program code has retrieved at least one of the bytes from the buffer, the new byte has nowhere to go and is dropped. Using an ISR helps the program respond quickly to received data. When a byte arrives at the serial port, the code in the ISR runs as soon as the currently executing PICBASIC statement completes. In the ISR, the hserin statement waits to receive all of the bytes in a command, storing the bytes as they arrive. Waiting for the entire command prevents buffer overflows. The penalty is that the code cant do anything else while waiting for the rest of the command to arrive. Because the currently executing statement must finish before the ISR runs, avoid  statements that take a long time to execute, such as pauses with long delays. If you need faster response, PICBASIC supports using ISRs written in assembly code. Another way to allow more time to retrieve received data is to use a slower bit rate, which results in more time between received bytes. Some systems use hardware flow control, also called handshaking, to prevent missed data. RS 2. 32 has defined hardware flow control signals. On a PCs port, Request to Send RTS is an output, and Clear to Send CTS is an input. On a PIC, hardware flow control requires two otherwise unused port bits and an additional RS 2. The MAX3. 23. 2 on the PICDEM2 Plus board has a spare driver and receiver. Figure 1. A MAX3. V logic and RS 2. You can solder jumper wire connections to these Figure 1, but the chip is surface mount, so soldering can be tricky. Another option is to solder another MAX3. In Figure 1, note that the RS 2. PC. The PICs TX output controls RS 2. RX signal, which is an input on the PC, and RS 2. TX signal, which is an output on the PC, controls the PICs RX input. Some development boards wire CTS and RTS together at the RS 2. If you need to use hardware flow control, check your boards schematic and cut any unwanted connections. In a PIC using hardware flow control, program code must bring the CTS port bit high when the port isnt ready to receive data. The RS 2. 32 driver inverts the signal, so on the cable, CTS is a negative voltage. At a PC that wants to send data to the PIC, an RS 2. CTS, resulting in a logic high output. The PC must detect the state of CTS and stop sending data when the output is logic high. When sending data using hardware flow control, program code must detect the state of RTS and send data only when RTS is logic low at the PIC and thus a positive voltage on the RS 2. PC software uses large buffers, so when communicating with a PC, the PIC isnt likely to need to monitor RTS. PICBASIC PRO and other PIC compilers can also create software serial ports using any spare port pins. Instead of using the chips hardware EUSART, the compiler controls communications with the help of an on chip timer. For software ports, PICBASICs serin. Software ports cant use the serial ports hardware interrupt, however. Two other RS 2. 32 signals are DTR and DSR. Some PC software requires DSR to be asserted positive RS 2. The PICDEM 2 Plus board connects DTR to DSR on the RS 2. DSR input always follows the DTR output.