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.
Smen, скорей всего это писано что бы однообразить конфигурацию периферии .
Если в данном случае пины имеют фиксированный вход или выход , то в I2C динамический.
И не забываем о ЧМЗ .
Надеюсь почему именно на вход понятно?
dosikus писал(а):в данном случае пины имеют фиксированный вход или выход , то в I2C динамический
Кстати, насколько помню, все они должны иметь ОС, но по схеме этого опять-таки не получается.
P.S.: I2C вообще-то на другом выводе, но, в рассматриваемой части они идентичны.
Про ЧМЗ мысль поясни?
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.
Для начала, так делать нельзя.
Между байтами (или пакетами байт) необходимо вставлять защитный интервал длительностью не менее периода передачи одного байта, включая стартовый и стоповый биты.
защитный интервал не нужен. Байты могут идти один за другим без разрывов.
При скорости 1200 и тактовой частоте 4МГц все будет корректно передаваться и приниматься .
Главное правильно сделать обработку прерываний. да и на другие частоты в этом плане нет ограничений.
настраивать нужно пин приемника на ВВОД , т.е в TRIS записать 1. А пин передатчика настроить на вывод , т.е в TRIS записать 0.
Некоторые PICи при инициализации USAR , происходит автоматическая настройка пинов на ввод и вывод. Но делать это считается правилом хорошего тона на С, чтоб сохранить переносимость программ при переходе на другой чип.
Не нужно писАть всякую хрень, когда не понимаешь о чём речь.
Причём тут скорость?
Автор - тролль.
-=Vovka=- писал(а):может кому сгодиться
Похоже, что те, кому бы и пригодилось, больше тут не появятся.
"Заработала", и выяснять причины, почему до того не работало, ни к чему.
Так что ждём очередных тем "Памагите!".
Smen писал(а):
Между байтами (или пакетами байт) необходимо вставлять защитный интервал длительностью не менее периода передачи одного байта, включая стартовый и стоповый биты.
Вкратце.
Потому, что генераторы приёмника и передатчика UART практически никогда не бывают когерентны.
В результате, если гнать данные сплошным потоком ошибка будет накапливаться, и когда-нибудь "выстрелит" (т.е. произойдёт сдвиг считываемых данных). Выйти из этой ошибки будет проблематично.
Особенно велика вероятность её возникновения, когда приёмник подсоединяют к уже работающему передатчику (или передатчик начинает работать сразу после включения питания, когда приёмник ещё не стартанул).
Используя же небольшие пакеты с защитным интервалом, можно применять даже МК с внутренним генератором.
Вкратце.
Потому, что генераторы приёмника и передатчика UART практически никогда не бывают когерентны.
В результате, если гнать данные сплошным потоком ошибка будет накапливаться, и когда-нибудь "выстрелит" (т.е. произойдёт сдвиг считываемых данных). Выйти из этой ошибки будет проблематично.
Особенно велика вероятность её возникновения, когда приёмник подсоединяют к уже работающему передатчику (или передатчик начинает работать сразу после включения питания, когда приёмник ещё не стартанул).
Используя же небольшие пакеты с защитным интервалом, можно применять даже МК с внутренним генератором.
Давайте по порядку, если вы не возражаете.
О какой ошибке идет речь? Аппаратной (приемный буфер пика), программной?
Что есть "сдвиг считываемых данных"? Для обработки данных в сплошном потоке существуют протоколы, методы и т.п., и т.д. позволяющие минимизировать или исключить вовсе ошибки обмена. когда приёмник подсоединяют к уже работающему передатчику (или передатчик начинает работать сразу после включения питания, когда приёмник ещё не стартанул См. выше. Используя же небольшие пакеты с защитным интервалом, можно применять даже МК с внутренним генератором. Вы обмолвились об интервалах между байтами, меня это прежде всего заинтересовало, но и защитный интервал между пакетами вещь весьма спорная. И уж каким боком тут МК с внутренним генератором?
агитаторам за защитные интервалы напомню, что в аппаратном протоколе обмена заложен стартовый бит, по которому синхронизируется приемник. это как раз позволит избежать накопления ошибки приема с течением времени, ибо приемник для каждого байта синхронизируется заново (приемник обычно делает не 1 опрос на бит, а несколько, и вычисляет состояние принятого бита по мажоритарному принципу).
кроме того, в аппаратном протоколе УЖЕ заложен "защитный интервал" - так называемые стоп-биты, которых может быть более одного - они и выполняют функцию формирования некоторой задержки для того, чтобы приемник успевал обработать только что пришедший байт.
не фантазируйте понапрасну.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...