Category Archives: pyCPU uart access
Using the UART unit of the pyCPU
The pyCPU has a UART unit now.
The Baudrate of the UART unit is set in the Myhdl code. The unit does a 8 bit transmission with no parity and one Stopbit. The usage of the now tightly integrated UART unit is demonstrated in the code below:
PREDEFINED_IO_ADDRESSES={'PORTA_IN':0,'PORTB_IN':1,'PORTC_OUT':2,'PORTD_OUT':3, \ 'RS232Data':4,'RS232_READ_ADDRESS':5,'RS232_RECEIVE_ADDRESS':6,'RS232_WRITEBUFFER_FULL':7 } def CPU_main(): global PORTA_IN,PORTB_IN,PORTC_OUT,PORTD_OUT,RS232Data,RS232_READ_ADDRESS,RS232_RECEIVE_ADDRESS,RS232_WRITEBUFFER_FULL x=0 RS232_READ_ADDRESS=0 while 1: ##### RS232 Transmitting ###### # Only write something to the Transmit buffer if not full if not RS232_WRITEBUFFER_FULL: # Write the value of x to the RS232 Transmit # buffer if something is in the Transmit-Buffer, sending # is started automatically RS232Data=x x=x+1 ##### RS232 Receiving ###### # Wait until a byte is received in the Receive-Buffer if RS232_READ_ADDRESS!=RS232_RECEIVE_ADDRESS: # Read data from RS232 receive buffer at the RS232_READ_ADDRESS PORTD_OUT=RS232Data # Set the Read address the the current received RS232_READ_ADDRESS=RS232_RECEIVE_ADDRESS
Advantages:
- Easier access to RS232 than in most Microcontrollers today
- Receive-/ and Transmit-Buffer (Buffersize is set in the hardware description)
Disadvantages:
- No interrupt
- No dynamic baudrate configuration
- Only 8 Bit Mode, no parity bit and 1 Stopbit
- If you want more options you have to upgrade the hardware description