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

Спасиб большое! До этого делал просто выключение передатчика не помогло. Теперь понял суть. Только наверное подтяжка вниз нужна по ТХ.
Сделал проще. Просто постоянно передаю 0.

Ширины стоп битов не хватает что бы начать генерацию колебаний.
Можно подтянуть к 0. Передавать все время 0 думаю нецелесобразно.
Вам вероятно виднее. Успехов.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.