automation_man 0 17 сентября, 2007 Опубликовано 17 сентября, 2007 · Жалоба Если кто нибудь пользовался не могли бы подсказать как можно в ходе выполнения программы менять такие параметры UART как инверсию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
upc2 0 18 сентября, 2007 Опубликовано 18 сентября, 2007 · Жалоба Аппаратная реализация USART не позволяет использовать произвольную полярность сигналов. Директива #USE RS232 препроцессора предполагает инверсию при программной реализации протокола. Директивы препроцессора используются только при компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
automation_man 0 18 сентября, 2007 Опубликовано 18 сентября, 2007 · Жалоба Софтварный или хардварный порт это значение не имеет. Вопрос если точнее сказать в следующем: Есть микруха модема. 2 управляющих сигнала на прием или передачу выполненно с одной ножки пика через транзисторный ключ. Девайс все врема сидит в ожидании приема после приема отвечает. Но если он сконфигурирован как приемник и на TX висит высокий уровень(а именно так оно и есть) то микруха модема генерирует частоту которая мне не нужна. Вопрос в том как можно ТХ положить в низкий уровень при этом не знаю даже подойдет ли инверсия. При инверсии скорее всего старт бит и стоп бит проинвертируются тоже. Как быть не знаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
upc2 0 18 сентября, 2007 Опубликовано 18 сентября, 2007 · Жалоба Плохо представляю.Почему микросхема модема не имеет раздельных Rx и Tx? Если бы вы черканули простенькую схему ,было бы понятней Если предположить, что вы другим выводом пика управляеете приемом и передачей, то вероятно надо программно реализовать протокол. Лучше всего использовать RB0- внешнее прерывание.Этот вывод можно настроить как на прием положительных, так а и отрицательных импульсов.А после приема с этой ножки можно отправить и посылку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
automation_man 0 18 сентября, 2007 Опубликовано 18 сентября, 2007 · Жалоба Я наверное неправильно объясняю. RX и TX раздельные. Обычный UART. А вот сигналы включения приемника или включения передатчика отдельно. Сигналы М0 и М1. Если М0=0 аМ1=1 то микруха работает на прием, если М0=1, а М1=0 то на передачу. А если модем ожидает приема данных и ТХ=1 то на ТХ генерируется частота 375 Гц которая не нужна. Если же модем на прием а ТХ=0 то все ок. Понятно что между сигналом управления и ТХ можно поставить диод Шоттки и проблема будет решена. Но так как работаю с готовой печатной платой хотелось бы разрулить это программно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
upc2 0 19 сентября, 2007 Опубликовано 19 сентября, 2007 · Жалоба При использовании стандартного USART есть только возможность перевести вывод TX в третье состояние. Для этого надо бит TXEN регистра TXSTA установить в 0. Опции в препроцессоре #UseRs232 для этого нет.Как устроены функции putc(),getc(0) тоже непонятно. Можно написать свою функцию передачи с управлением и этим битом. например для CCS: Bit_SEt(TXSTA,TXEN); TXREG = c; while ( ! TXSTA ); Bit_Clear(TXSTA,TXEN); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
automation_man 0 19 сентября, 2007 Опубликовано 19 сентября, 2007 · Жалоба Полегчало схеме. :) Спасиб большое! До этого делал просто выключение передатчика не помогло. Теперь понял суть. Только наверное подтяжка вниз нужна по ТХ. Сделал проще. Просто постоянно передаю 0. :) Ширины стоп битов не хватает что бы начать генерацию колебаний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
upc2 0 19 сентября, 2007 Опубликовано 19 сентября, 2007 · Жалоба Можно подтянуть к 0. Передавать все время 0 думаю нецелесобразно. Вам вероятно виднее. Успехов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться