Перейти к содержанию
    

Компилятор CCS C V4

Если кто нибудь пользовался не могли бы подсказать как можно в ходе выполнения программы менять такие параметры UART как инверсию?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Аппаратная реализация USART не позволяет использовать произвольную полярность сигналов.

Директива #USE RS232 препроцессора предполагает инверсию при программной реализации

протокола.

Директивы препроцессора используются только при компиляции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Софтварный или хардварный порт это значение не имеет. Вопрос если точнее сказать в следующем:

Есть микруха модема. 2 управляющих сигнала на прием или передачу выполненно с одной ножки пика через транзисторный ключ. Девайс все врема сидит в ожидании приема после приема отвечает. Но если он сконфигурирован как приемник и на TX висит высокий уровень(а именно так оно и есть) то микруха модема генерирует частоту которая мне не нужна. Вопрос в том как можно ТХ положить в низкий уровень при этом не знаю даже подойдет ли инверсия. При инверсии скорее всего старт бит и стоп бит проинвертируются тоже. Как быть не знаю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плохо представляю.Почему микросхема модема не имеет раздельных Rx и Tx?

Если бы вы черканули простенькую схему ,было бы понятней

 

Если предположить, что вы другим выводом пика управляеете приемом и передачей,

то вероятно надо программно реализовать протокол.

Лучше всего использовать RB0- внешнее прерывание.Этот вывод можно настроить как на прием

положительных, так а и отрицательных импульсов.А после приема с этой ножки можно

отправить и посылку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я наверное неправильно объясняю. 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);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

Сделал проще. Просто постоянно передаю 0. :) Ширины стоп битов не хватает что бы начать генерацию колебаний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно подтянуть к 0. Передавать все время 0 думаю нецелесобразно.

Вам вероятно виднее. Успехов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...