Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Компилятор CCS C V4
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
automation_man
Если кто нибудь пользовался не могли бы подсказать как можно в ходе выполнения программы менять такие параметры UART как инверсию?
upc2
Аппаратная реализация USART не позволяет использовать произвольную полярность сигналов.
Директива #USE RS232 препроцессора предполагает инверсию при программной реализации
протокола.
Директивы препроцессора используются только при компиляции.
automation_man
Софтварный или хардварный порт это значение не имеет. Вопрос если точнее сказать в следующем:
Есть микруха модема. 2 управляющих сигнала на прием или передачу выполненно с одной ножки пика через транзисторный ключ. Девайс все врема сидит в ожидании приема после приема отвечает. Но если он сконфигурирован как приемник и на TX висит высокий уровень(а именно так оно и есть) то микруха модема генерирует частоту которая мне не нужна. Вопрос в том как можно ТХ положить в низкий уровень при этом не знаю даже подойдет ли инверсия. При инверсии скорее всего старт бит и стоп бит проинвертируются тоже. Как быть не знаю...
upc2
Плохо представляю.Почему микросхема модема не имеет раздельных Rx и Tx?
Если бы вы черканули простенькую схему ,было бы понятней

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


Сделал проще. Просто постоянно передаю 0. smile.gif Ширины стоп битов не хватает что бы начать генерацию колебаний.
upc2
Можно подтянуть к 0. Передавать все время 0 думаю нецелесобразно.
Вам вероятно виднее. Успехов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.