PCL FCR . Я просто не вижу где его тут привязать. Предлагаю так, Вы меня носом ткните, а я буду писать.
Вы только корректировать. А так получается что Вы за меня пишите.
Программный UART -= H E L P =-
Re: Программный UART -= H E L P =-
Чутка подправил код. Вы писали про эти изменения..?...
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Программный UART -= H E L P =-
1. А почему в коде нет калибровки генератора? Или это я не нашёл? По идее это первое, что нужно сделать:
Возможно в этом и причина того, что в протеусе работает, а на макетке - нет. Протеус - это же сферический конь в вакууме.
2. В целом, по теме, IMHO, лучше не делать никаких контрольных стартовых байтов для проверки на помеху, чтоб лишний трафик не плодить. Можно сделать сэмплирование, как в оригинальном аппаратном UART. Берём три сэмпла внутри бита, с небольшими задержками. Если все три совпадают - значит не помеха.
Конечно если скорость большая, то можно так и не успеть, но если маленькая, мне кажется лучше так.
Код: Выделить всё
bsf Status,5
Call 3FFh
movwf OSCCAL
2. В целом, по теме, IMHO, лучше не делать никаких контрольных стартовых байтов для проверки на помеху, чтоб лишний трафик не плодить. Можно сделать сэмплирование, как в оригинальном аппаратном UART. Берём три сэмпла внутри бита, с небольшими задержками. Если все три совпадают - значит не помеха.
Конечно если скорость большая, то можно так и не успеть, но если маленькая, мне кажется лучше так.
С уважением, администрация сайта.
Re: Программный UART -= H E L P =-
1. А почему в коде нет калибровки генератора? Или это я не нашёл? По идее это первое, что нужно сделать:
Приступил к работе в этом направлении.
2. В целом, по теме, IMHO, лучше не делать никаких контрольных стартовых байтов для проверки на помеху, чтоб лишний трафик не плодить. Можно сделать сэмплирование, как в оригинальном аппаратном UART. Берём три сэмпла внутри бита, с небольшими задержками. Если все три совпадают - значит не помеха.
Конечно если скорость большая, то можно так и не успеть, но если маленькая, мне кажется лучше так.
Прошу прощения за свое невежество. Можно здесь более доступней.
Приступил к работе в этом направлении.
2. В целом, по теме, IMHO, лучше не делать никаких контрольных стартовых байтов для проверки на помеху, чтоб лишний трафик не плодить. Можно сделать сэмплирование, как в оригинальном аппаратном UART. Берём три сэмпла внутри бита, с небольшими задержками. Если все три совпадают - значит не помеха.
Конечно если скорость большая, то можно так и не успеть, но если маленькая, мне кажется лучше так.
Прошу прощения за свое невежество. Можно здесь более доступней.
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Программный UART -= H E L P =-
Сейчас: происходит прерывание - отсчитываем полбита - читаем значение бита.
Надо: происходит прерывание - отсчитываем, скажем, 3/8 бита - читаем первое значение - отсчитываем ещё 1/8 - читаем второе значение - ещё 1/8 - читаем третье значение и сравниваем все три значения. Если они одинаковые - бит считан правильно.
Оригинальный аппаратный uart примерно так и делает.
P.S. Но начни с генератора.
Надо: происходит прерывание - отсчитываем, скажем, 3/8 бита - читаем первое значение - отсчитываем ещё 1/8 - читаем второе значение - ещё 1/8 - читаем третье значение и сравниваем все три значения. Если они одинаковые - бит считан правильно.
Оригинальный аппаратный uart примерно так и делает.
P.S. Но начни с генератора.
С уважением, администрация сайта.
Re: Программный UART -= H E L P =-
Да . Все заработало отлично.
Но. Вот с этим куском кода. Без него ни как.
;--- Квитируем МК на прием n+1 байт в пакете. В данном проекте в пакете 11 байт.
movlw .12
movwf countX
call Recieve
decfsz countX,F
b $-2
;===============================================================================================
;--------- О С Н О В Н А Я П Р О Г Р А М М А -------------------------------------------------
;===============================================================================================
Но. Вот с этим куском кода. Без него ни как.
;--- Квитируем МК на прием n+1 байт в пакете. В данном проекте в пакете 11 байт.
movlw .12
movwf countX
call Recieve
decfsz countX,F
b $-2
;===============================================================================================
;--------- О С Н О В Н А Я П Р О Г Р А М М А -------------------------------------------------
;===============================================================================================
Re: Программный UART -= H E L P =-
По крайнему вашему изложению. Можете куском кода выразить если не затруднит.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Т.е. данный код будет проверять каждый принятый байт пакета или только первый.?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Т.е. данный код будет проверять каждый принятый байт пакета или только первый.?
Re: Программный UART -= H E L P =-
На вопрос открытый мной в этой ветке я получил ответы. То что не получалось - получилось..
Я очень рад.. Спасибо rhf-admin за лаконичные ответы.
Я очень рад.. Спасибо rhf-admin за лаконичные ответы.