Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Управление приемом-передачей RS485 (полудуплекс) на NXP LPC2366
Отправлено
Yaumen 02 декабря 2009, г. 10:34
Хотелось бы научить программу управлять портом, отвечающим за приемом-передачей полудуплесного RS485. Сложность в том, что прерывание генерируется когда буфер передатчика пуст, но при этом в это время все еще передается последний байт и естественно передатчик RS485 отключать нельзя.
Прерывания по окончанию передачи вроде как не существует, поэтому стоит вопрос: как отловить момент, когда можно RS485 переключать на прием?
У меня есть два варианта решения этой задачи (мне больше из них нравится №1), но может есть еще вариант более корректный?
1. Отсылать на 1 байт больше и когда буфер передатчика опустеет, означает, что весь пакет отправлен и можно переключаться на прием. А лишний байт просто передастся в пустоту.
2. По окончанию передачи запускать таймер, отслеживающий время передачи 1-го байта по UARTу, после чего переключать передатчик на прием
Составить ответ | Вернуться на конференцию.
Ответы
- Как вариант прямо в прерывании по THRE подождать пока установится TEMT. Если у вас 1Мбит долго ждать не прийдется. - F8 (02.12.2009, 12:41:36 193.254.233.230, пустое)
- Не знаю отличается ли уарт сабжа, от пользуемого мною 2214. Я полю в фоне бит, который указывает на опустошение сдвигового регистра. - 1111 (02.12.2009, 11:34:25 93.84.239.222, 975 байт)
- сделать пульт с тумблерами и со словами "Судьба Вселенной зависист от тебя" посадить специально обученного гастрабайтера - RED_DRAGON (02.12.2009, 11:14:47 213.242.214.185, пустое)
- всегда держать приёмник включенным и ждать прерывание от заполнения регистра приемника (эхо ждать), по которому выключать передатчик. - Serge57 (02.12.2009, 11:07:17 217.197.6.32, пустое)
- таймер - koyodza (02.12.2009, 10:59:23 93.73.217.94, 224 байт)
- вариант 4. MAX13487 в качестве драйвера и забыть о переключении. - PKM (02.12.2009, 10:55:25 192.168.10.12,81.89.91.33, пустое)
- вариант 3. применить другой мк :) - AF (02.12.2009, 10:42:58 213.211.125.226, пустое)