ola icon indicating copy to clipboard operation
ola copied to clipboard

UART native Input

Open ryanriccio1 opened this issue 4 years ago • 6 comments

I was wondering if there was a way to configure OLA to use the uART rx pin as an input.

Running on RPi 4

ryanriccio1 avatar Aug 26 '20 00:08 ryanriccio1

See #1183.

FloEdelmann avatar Aug 26 '20 06:08 FloEdelmann

The BCM2711 on the Pi4 has 5 PL011 interfaces, as well as 1 mini UART. From what I saw, the PL011 supports break detection while the mini UART does not. I am currently running 5 UART output universes on an overclocked Pi4 just fine because I have the extra UART ports. If break detection is still an issue is there a way to detect it with some sort of bit banging? From the looks of it (and I may be very wrong) the PL011 can generate an IRQ when it detects break. As long as the clock is independently set to the correct value, it seems as if it is possible.

ryanriccio1 avatar Aug 26 '20 13:08 ryanriccio1

I don't know if it's worth moving all this discussion to the original issue?

I am currently running 5 UART output universes on an overclocked Pi4 just fine because I have the extra UART ports.

That's interesting to hear @ryanriccio1, is that anything clever or just running multiple ports of our existing plugin? Does it just work out of the box or does it need any special config?

If break detection is still an issue is there a way to detect it with some sort of bit banging? From the looks of it (and I may be very wrong) the PL011 can generate an IRQ when it detects break. As long as the clock is independently set to the correct value, it seems as if it is possible.

That would be neat, and sounds potentially promising.

peternewman avatar Aug 27 '20 01:08 peternewman

Is that anything clever or just running multiple ports of our existing plugin? Does it just work out of the box or does it need any special config?

I did have to overclock it a bit to make it more stable (seems like an oxymoron) but once I enabled the other UART pins in the /boot/config.txt, and disabled the mini UART and BT, they just showed up as being mounted at /dev/ttyAMA0-4. My ola-uartdmx.conf looks like this:

/dev/ttyAMA0-break = 100
/dev/ttyAMA0-malf = 24000
device = /dev/ttyAMA0
/dev/ttyAMA1-break = 100
/dev/ttyAMA1-malf = 24000
device = /dev/ttyAMA1
/dev/ttyAMA2-break = 100
/dev/ttyAMA2-malf = 24000
device = /dev/ttyAMA2
/dev/ttyAMA3-break = 100
/dev/ttyAMA3-malf = 24000
device = /dev/ttyAMA3
/dev/ttyAMA4-break = 100
/dev/ttyAMA4-malf = 24000
device = /dev/ttyAMA4
enabled = true

Everything so far seems to work fine with no special config. This gives me UART TX out of GPIO 0, 4, 8, 12, and 14. I was hoping somehow I could receive on the corresponding RX pins.

I'm attaching a link that may be helpful in figuring some of this out. Chapter 11 is the UART section and it has a list of the registers, flags, and some base address things. Chapter 6 (specifically 6.2) has a lot more details on how interrupts are handled and what the interrupt sources are and stuff like that. https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711/rpi_DATA_2711_1p0.pdf

ryanriccio1 avatar Aug 27 '20 14:08 ryanriccio1

Started same task as TTY Line discipline. Se issue #1743

rbalykov avatar Aug 31 '21 09:08 rbalykov

Started same task as TTY Line discipline. Se issue #1743

Hello everybody. Check out beta version of the module. https://github.com/rbalykov/cdmx/

rbalykov avatar Oct 13 '21 12:10 rbalykov