Связь МК с PC по RS232

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Smen писал(а): Лучше вот объясни, зачем действительно порты надо на вход настраивать, если из схемы в ДШ получается, что их вообще настраивать необязательно?
Это как это.? :)))
Во всех версиях даташита на 877 и 2001 и 2003 и 2013 писано :
Bit SPEN (RCSTA<7>) and bits TRISC<7:6> have to
be set
in order to configure pins RC6/TX/CK and
RC7/RX/DT as the Universal Synchronous Asynchronous Receiver Transmitter.
Переведу -БитSPEN (RCSTA<7>) и биты TRISC<7:6> должны быть установлены ...


а нужно для исключения влияния обвязки пинов на USART.
Реклама
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

dosikus писал(а):писано
Ты невнимательно тему читал?
Повторяю ещё раз: ... из схемы в ДШ ...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Smen, скорей всего это писано что бы однообразить конфигурацию периферии .
Если в данном случае пины имеют фиксированный вход или выход , то в I2C динамический.
И не забываем о ЧМЗ .
Надеюсь почему именно на вход понятно? :)))
Грызет канифоль
Аватара пользователя
Сообщения: 262
Зарегистрирован: Сб мар 26, 2011 14:17:14
Откуда: Оренбург

Сообщение Hispanus »

Smen, вот это и есть инициализация :)) :

Код: Выделить всё

PORTD=0b00000000;
Когда я любое действие с портом D выполняю, программа зависает и перестает выполняться. Как Вы думаете, что это может быть?

P.S. МК 16f877
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

[i]Лорд Кельвин, физик, 1899 г.[/i]
Реклама
Эиком - электронные компоненты и радиодетали
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

Hispanus писал(а):любое действие
Так уж и любое?
На вход пробовали настраивать?
Hispanus писал(а):что это может быть?
Например "сопля" на соседний порт.


dosikus писал(а):в данном случае пины имеют фиксированный вход или выход , то в I2C динамический
Кстати, насколько помню, все они должны иметь ОС, но по схеме этого опять-таки не получается.
P.S.: I2C вообще-то на другом выводе, но, в рассматриваемой части они идентичны.
Про ЧМЗ мысль поясни?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Smen писал(а): P.S.: I2C вообще-то на другом выводе, но, в рассматриваемой части они идентичны.
Я выше же писал - чтобы однообразить. Другого объяснения пока не вижу.
Smen писал(а): Про ЧМЗ мысль поясни?
When enabling peripheral functions, care should be
taken in defining TRIS bits for each PORTC pin. Some
peripherals override the TRIS bit to make a pin an
output, while other peripherals override the TRIS bit to
make a pin an input. Since the TRIS bit override is in
effect while the peripheral is enabled, read-modifywrite instructions (BSF, BCF, XORWF) with TRISC as the
destination, should be avoided. The user should refer
to the corresponding peripheral section for the correct
TRIS bit settings
При разрешенной периферии необходимо определять TRIS биты для каждого пина PORTC .
Некоторая периферия перезаписывает бит TRIS делая пин выходом , другая делает входом.
Во избежания перезаписи бит TRIS при включенной периферии, нужно избегать применнения Read-Modify-Write (ЧМЗ) инструкций (BSF, BCF, XORWF) для TRIS .
Пользователь должен руководствоваться соответствующей секцией описания периферии для корректной установки бит TRIS.

Не вижу никаких причин не верить .
Реклама
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

dosikus писал(а):чтобы однообразить
Т.е. получается, что они ни фига не ОС.
dosikus писал(а):Не вижу никаких причин не верить
Я тоже.
А если кто не верит, достаточно посмотреть, на схеме, откуда считываются значения TRIS.
Это всё читали. Я думал, ты о чём-то ещё.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Smen писал(а): Это всё читали. Я думал, ты о чём-то ещё.
Да я собственно до сих пор на твой же вопрос отвечаю:
Лучше вот объясни, зачем действительно порты надо на вход настраивать, если из схемы в ДШ получается, что их вообще настраивать необязательно?
:)))
Встал на лапы
Сообщения: 132
Зарегистрирован: Ср фев 11, 2015 19:16:32

Сообщение smart_pic »

Smen писал(а):
Hispanus писал(а):непрерывная передача символа
Для начала, так делать нельзя.
Между байтами (или пакетами байт) необходимо вставлять защитный интервал длительностью не менее периода передачи одного байта, включая стартовый и стоповый биты.
защитный интервал не нужен. Байты могут идти один за другим без разрывов.
При скорости 1200 и тактовой частоте 4МГц все будет корректно передаваться и приниматься .
Главное правильно сделать обработку прерываний. да и на другие частоты в этом плане нет ограничений.

настраивать нужно пин приемника на ВВОД , т.е в TRIS записать 1. А пин передатчика настроить на вывод , т.е в TRIS записать 0.
Некоторые PICи при инициализации USAR , происходит автоматическая настройка пинов на ввод и вывод. Но делать это считается правилом хорошего тона на С, чтоб сохранить переносимость программ при переходе на другой чип.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

smart_pic, а может прочитаем для начала ветку -какой чип обсуждается , даташит на него .
И только потом со своими советами о TRIS встрянем?
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Сообщение -=Vovka=- »

Искал эррату, а попалась статья на русском, может кому сгодиться:
Модуль USART микроконтроллера PIC18F458 - регистры и принципы работы
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

smart_pic писал(а):защитный интервал не нужен
Не нужно писАть всякую хрень, когда не понимаешь о чём речь.
Причём тут скорость?
Автор - тролль.

-=Vovka=- писал(а):может кому сгодиться
Похоже, что те, кому бы и пригодилось, больше тут не появятся.
"Заработала", и выяснять причины, почему до того не работало, ни к чему.
Так что ждём очередных тем "Памагите!". :)
Открыл глаза
Сообщения: 60
Зарегистрирован: Пт янв 11, 2013 10:54:43

Сообщение Vano79 »

Smen писал(а):Не нужно писАть всякую хрен
Ну так объясните нам почему
Smen писал(а):Между байтами необходимо вставлять защитный интервал длительностью не менее периода передачи одного байта
??
OKF
Это не хвост, это антенна
Сообщения: 1421
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Smen писал(а): Только ламеры и чайники пишут для 877-го на Сях. :)
Да что там для 877. Тут встретил, для PIC12-го.
Прочёл с начала. Торкнуло. А кто ж я тогда, коль для PIC10F200 писал на Си, и ни чё. Должно быть полный ламер?))
OKF
Это не хвост, это антенна
Сообщения: 1421
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Smen писал(а): Между байтами (или пакетами байт) необходимо вставлять защитный интервал длительностью не менее периода передачи одного байта, включая стартовый и стоповый биты.
Вот где специалист то виден! Не то мы, лохи!
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

Vano79 писал(а):объясните нам почему
Вкратце.
Потому, что генераторы приёмника и передатчика UART практически никогда не бывают когерентны.
В результате, если гнать данные сплошным потоком ошибка будет накапливаться, и когда-нибудь "выстрелит" (т.е. произойдёт сдвиг считываемых данных). Выйти из этой ошибки будет проблематично.
Особенно велика вероятность её возникновения, когда приёмник подсоединяют к уже работающему передатчику (или передатчик начинает работать сразу после включения питания, когда приёмник ещё не стартанул).
Используя же небольшие пакеты с защитным интервалом, можно применять даже МК с внутренним генератором.

OKF писал(а):Прочёл с начала
Но по диагонали, потому что
OKF писал(а):Торкнуло
Причём здорово. :)))
Открыл глаза
Сообщения: 60
Зарегистрирован: Пт янв 11, 2013 10:54:43

Сообщение Vano79 »

Smen писал(а):
Vano79 писал(а):объясните нам почему
Вкратце.
Потому, что генераторы приёмника и передатчика UART практически никогда не бывают когерентны.
В результате, если гнать данные сплошным потоком ошибка будет накапливаться, и когда-нибудь "выстрелит" (т.е. произойдёт сдвиг считываемых данных). Выйти из этой ошибки будет проблематично.
Особенно велика вероятность её возникновения, когда приёмник подсоединяют к уже работающему передатчику (или передатчик начинает работать сразу после включения питания, когда приёмник ещё не стартанул).
Используя же небольшие пакеты с защитным интервалом, можно применять даже МК с внутренним генератором.
:o
Давайте по порядку, если вы не возражаете.
О какой ошибке идет речь? Аппаратной (приемный буфер пика), программной?
Что есть "сдвиг считываемых данных"? Для обработки данных в сплошном потоке существуют протоколы, методы и т.п., и т.д. позволяющие минимизировать или исключить вовсе ошибки обмена.
когда приёмник подсоединяют к уже работающему передатчику (или передатчик начинает работать сразу после включения питания, когда приёмник ещё не стартанул См. выше.
Используя же небольшие пакеты с защитным интервалом, можно применять даже МК с внутренним генератором. Вы обмолвились об интервалах между байтами, меня это прежде всего заинтересовало, но и защитный интервал между пакетами вещь весьма спорная. И уж каким боком тут МК с внутренним генератором?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

мда...

агитаторам за защитные интервалы напомню, что в аппаратном протоколе обмена заложен стартовый бит, по которому синхронизируется приемник. это как раз позволит избежать накопления ошибки приема с течением времени, ибо приемник для каждого байта синхронизируется заново (приемник обычно делает не 1 опрос на бит, а несколько, и вычисляет состояние принятого бита по мажоритарному принципу).

кроме того, в аппаратном протоколе УЖЕ заложен "защитный интервал" - так называемые стоп-биты, которых может быть более одного - они и выполняют функцию формирования некоторой задержки для того, чтобы приемник успевал обработать только что пришедший байт.

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

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Приятно созерцать конкурс "Тупой и ещё тупее!"(С)... в попытках воскреить своё эго... :music:
"Я не даю готовых решений, я заставляю думать!"(С)
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

Vano79 писал(а):об интервалах между байтами
Это идеальный вариант, с точки зрения выявления ошибочного приёма, но самый плохой, с точки зрения интерфейса.
Как обычно, выбираем среднее: пакеты.
Vano79 писал(а):каким боком тут МК с внутренним генератором?
Стабильность у встроеннго RC-генератора на порядок меньше.

ARV писал(а):приемник обычно делает не 1 опрос на бит, а несколько, и вычисляет состояние принятого бита по мажоритарному принципу
"Капитан Открытие" :)
И как Вы этой самой мажоритарностью разрулите такую ситуацию? :wink:

Изображение
Ответить

Вернуться в «PIC»