Страница 2 из 2

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 03:40
lavrentyi
PCL FCR . Я просто не вижу где его тут привязать. Предлагаю так, Вы меня носом ткните, а я буду писать.
Вы только корректировать. А так получается что Вы за меня пишите. :? :? :? :? :? :?

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 08:46
lavrentyi
Чутка подправил код. Вы писали про эти изменения..?... :-?

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 09:05
rhf-admin
1. А почему в коде нет калибровки генератора? Или это я не нашёл? По идее это первое, что нужно сделать:

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

bsf Status,5
Call 3FFh
movwf OSCCAL
Возможно в этом и причина того, что в протеусе работает, а на макетке - нет. Протеус - это же сферический конь в вакууме.

2. В целом, по теме, IMHO, лучше не делать никаких контрольных стартовых байтов для проверки на помеху, чтоб лишний трафик не плодить. Можно сделать сэмплирование, как в оригинальном аппаратном UART. Берём три сэмпла внутри бита, с небольшими задержками. Если все три совпадают - значит не помеха.
Конечно если скорость большая, то можно так и не успеть, но если маленькая, мне кажется лучше так.

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 09:25
lavrentyi
1. А почему в коде нет калибровки генератора? Или это я не нашёл? По идее это первое, что нужно сделать:

Приступил к работе в этом направлении. :o

2. В целом, по теме, IMHO, лучше не делать никаких контрольных стартовых байтов для проверки на помеху, чтоб лишний трафик не плодить. Можно сделать сэмплирование, как в оригинальном аппаратном UART. Берём три сэмпла внутри бита, с небольшими задержками. Если все три совпадают - значит не помеха.
Конечно если скорость большая, то можно так и не успеть, но если маленькая, мне кажется лучше так.

Прошу прощения за свое невежество. Можно здесь более доступней. :oops:

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 09:42
rhf-admin
Сейчас: происходит прерывание - отсчитываем полбита - читаем значение бита.
Надо: происходит прерывание - отсчитываем, скажем, 3/8 бита - читаем первое значение - отсчитываем ещё 1/8 - читаем второе значение - ещё 1/8 - читаем третье значение и сравниваем все три значения. Если они одинаковые - бит считан правильно.
Оригинальный аппаратный uart примерно так и делает.

P.S. Но начни с генератора.

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 09:56
lavrentyi
Да . Все заработало отлично.
:clapping: :clapping: :clapping: :D :D :D :clapping: :clapping: :clapping2: :clapping2: :clapping2: ;)

Но. Вот с этим куском кода. Без него ни как.
;--- Квитируем МК на прием n+1 байт в пакете. В данном проекте в пакете 11 байт.

movlw .12
movwf countX
call Recieve
decfsz countX,F
b $-2

;===============================================================================================
;--------- О С Н О В Н А Я П Р О Г Р А М М А -------------------------------------------------
;===============================================================================================

:-? :-? :-? :-? :-? :-? :-?

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 10:01
lavrentyi
По крайнему вашему изложению. Можете куском кода выразить если не затруднит.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Т.е. данный код будет проверять каждый принятый байт пакета или только первый.?

Re: Программный UART -= H E L P =-

Добавлено: 26 май 2016, 13:34
lavrentyi
На вопрос открытый мной в этой ветке я получил ответы. То что не получалось - получилось..
Я очень рад.. Спасибо rhf-admin за лаконичные ответы.
:D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D