Можно выбрать контроллер за $4, а не за $2, и у него будет 2 или больше UART-ов.
А можно действительно сделать программную передачу. В этом совершенно нет ничего сложного. Почитать спецификацию DMX-512, и тупо дрыгая ногой выдавать все нужные последовательности нужной длины, а также отбарабанивать побитно старт-биты, биты данных и стоп-биты. 4 мкс на бит - это не так уж быстро, на частоте 8 МГц это 32 такта на бит.
Разумеется, придется на время передачи байта запрещать прерывания. Это может влиять на работу связи с хостом по аппаратному USART-у, поэтому нужно, чтобы длительность запрещения прерываний была гарантированно меньше, чем длительность передачи байта по аппаратному USART-у. Проще всего этого добиться, запрещая прерывания для передачи только одного байта по DMX-выходу, и разрешая прерывания на пару тактов между передаваемыми по DMX байтами.
|