Подскажите, плз, как приспособить PIC16F876 под прием этого долбанного DMX512... Не удается никак принять второй байт в пачке. Использую встроенный USART, но у меня постоянно устанавливается ошибка приема FERR. Может что-то натупил с алгоритмом: 0. сбрасываю CREN и SPEN в RCSTA 1. жду "0" 2. если длина этого "0" меньше ~88us, перехожу к 1. 3. жду "1" 4. устанавливаю SPEN и CREN в RCSTA 5. жду прихода байта по флагу RCIF в PIR1 6. если была ошибка при приеме (установлены: бит FERR или OERR в RCSTA), то вызываю RX_ERR и иду к 0. 7. если байт в RCREG != 0, иду к 5. 8. жду прихода второго байта по флагу RCIF в PIR1 9. если была ошибка при приеме (установлены: бит FERR или OERR в RCSTA), то вызываю RX_ERR и иду к 0. 10. посылаю байт из RCREG в PORTB на ЦАП 11. иду к 0.
Функция RX_ERR стирает RCSTA и мигает диодом на плате...
После запуска диод постоянно мигает а на входах ЦАПа нули...
Короче, если кто-нибудь знает нормально-работающий код для приема DMX512 -- напишите!!!
|