USART на PIC18
USART на PIC18
Необходимо организовать приём -передачу по USART на PIC18 с изменяющимся
количеством байтов в посылке.Подскажите пожалуйста ,как это можно реализовать
и где можно посмотреть на примеры подобных программ на Ассемблере ,т.к. в даташите
на этот контроллер подобного ненашёл.
Так же прошу помоши у знающих людей,подскакжите пожалуйста ,когда устанавливается
Флаг нахождения приемника в режиме ожидания RCIDL,если формат передачи данных:
1старт_ 8бит данных_ 1 стоп ->по нарастающему фронту стопового бита ,по его спадающему
фронту или как-то иначе?Интересуюсь т.к. ничего подобного в даташитах ненашёл.
Так же может кто подскажет где можно было бы более подробно почитать про USART на этот
контроллер?Всем откликнувшимся ,заранее благодарен!
количеством байтов в посылке.Подскажите пожалуйста ,как это можно реализовать
и где можно посмотреть на примеры подобных программ на Ассемблере ,т.к. в даташите
на этот контроллер подобного ненашёл.
Так же прошу помоши у знающих людей,подскакжите пожалуйста ,когда устанавливается
Флаг нахождения приемника в режиме ожидания RCIDL,если формат передачи данных:
1старт_ 8бит данных_ 1 стоп ->по нарастающему фронту стопового бита ,по его спадающему
фронту или как-то иначе?Интересуюсь т.к. ничего подобного в даташитах ненашёл.
Так же может кто подскажет где можно было бы более подробно почитать про USART на этот
контроллер?Всем откликнувшимся ,заранее благодарен!
- Реклама
Re: USART на PIC18
> PIC18
это семейство, какое полное название контроллера?
Передача данных:
1. Установить требуемую скорость передачи с помощью регистра SPBRG и бита BRGH
2. Выбрать асинхронный режим сбросом бита SYNC в ‘0’ и установкой бита SPEN в "1".
3. Разрешить передачу установкой бита TXEN в "1", автоматически устанавливается флаг TXIF.
4. Записать данные в регистр TXREG (начало передачи данных).
Прием данных:
1. Установить требуемую скорость передачи с помощью регистра SPBRG и бита BRGH
2. Выбрать асинхронный режим сбросом бита SYNC в ‘0’ и установкой бита SPEN в "1".
3. Разрешить прием установкой бита CREN в "1".
4. Ожидать установку бита RCIF.
5. Считать 8 бит данных из регистра RCREG.
6. При возникновении ошибки переполнения сбросить бит CREN в "0".
это семейство, какое полное название контроллера?
Передача данных:
1. Установить требуемую скорость передачи с помощью регистра SPBRG и бита BRGH
2. Выбрать асинхронный режим сбросом бита SYNC в ‘0’ и установкой бита SPEN в "1".
3. Разрешить передачу установкой бита TXEN в "1", автоматически устанавливается флаг TXIF.
4. Записать данные в регистр TXREG (начало передачи данных).
Прием данных:
1. Установить требуемую скорость передачи с помощью регистра SPBRG и бита BRGH
2. Выбрать асинхронный режим сбросом бита SYNC в ‘0’ и установкой бита SPEN в "1".
3. Разрешить прием установкой бита CREN в "1".
4. Ожидать установку бита RCIF.
5. Считать 8 бит данных из регистра RCREG.
6. При возникновении ошибки переполнения сбросить бит CREN в "0".
Re: USART на PIC18
Думаю применить PIC18F248,рекомендации выложенные Вами я читал в даташите,но это для приёма передачи одного байта,а мене меобходимо сделать приём-передачу пакетов с изменяняющимся
числом байтов в них.Также интересует ,как писал выше,условия при которых устанавливается флаг RCIDL.
числом байтов в них.Также интересует ,как писал выше,условия при которых устанавливается флаг RCIDL.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: USART на PIC18
И чем передача пакета отличается от передачи одного байта ?а мене меобходимо сделать приём-передачу пакетов с изменяняющимся числом байтов в них
Один байт можете передать ? - да. Ну и передавайте их по-очереди, хоть 100 штук... В чем проблема ?
Re: USART на PIC18
Маркеры начала и конца пакета юзать.Аlex писал(а):Ну и передавайте их по-очереди, хоть 100 штук.
- Реклама
Re: USART на PIC18
Подскажите ,а какие маркеры использовать,если там только старт-0 и стоп -1 после каждого байтаdosikus писал(а):
Маркеры начала и конца пакета юзать.
или необходимо задействовать какие-то флаги?
Re: USART на PIC18
Абздец, ну почитайте хотя бы реализацию протокола Owen http://www.owen.ru/uploads/type_prot_owen.zipviktor64 писал(а): Подскажите ,а какие маркеры использовать,если там только старт-0 и стоп -1 после каждого байта
или необходимо задействовать какие-то
если уж совсем так плохо все.
И для начала перестаньте мешать в кучу протокол и интерфейс .
Хотя вас все равно лучше ткнуть носом, иначе возникнет куча вопросов.

Маркеры нужны для четкого определения начала и конца пакета , и обычно выбираются те что не могут встретится в теле пакета.
Причем хорошая практика - не одиночный байт а секвенция (последовательность символов)
Re: USART на PIC18
viktor64 - чтобы Вам не очень грустно было от сказанного dosikus'ом, Вы опишите какие байты/символы будут использоваться при передаче. Возможно будут такие, которые не используются - их можно использовать для обозначения начала и конца посылки. Если используются все символы, в начало пакета добавьте байт или байты, указывающие размерность пакета, а в конце пакета будет контрольная сумма (какой-нибудь примитивный алгоритм или вовсе для начала без контрольной суммы). Для синхронизации приема-отправки очередного пакета используйте паузу (интервал времени) больший, чем время на передачу двух и более символов - это будет таймаутом, после которого вновь принятый символ будет началом очередного пакета.
Хотя, возможно, мы слишком глубоко Вас погружаем. Одиночные символы принимаете/отправляете?
И забудьте про старт и стоп - на аппаратном уровне это всё за вас будет сделано.
Хотя, возможно, мы слишком глубоко Вас погружаем. Одиночные символы принимаете/отправляете?
И забудьте про старт и стоп - на аппаратном уровне это всё за вас будет сделано.
Re: USART на PIC18
Большое спасибо всем откликнувшимся за пинок в нужном направлении
Пошёл изучать доку
Re: USART на PIC18
Подскажите какую терминалку лучше использовать в моём случае для отдадки программы,
чтобы я мог слать с неё сразу весь пакет без таймингов в средине пакета?Пробовал использовать
Terminal v1.9 ,так в ней при отсылании пакета,например АВСD-шлётся А затем тайминг около 1мс,
потом В и снова тайминг ,С тайминг ,D и только тогда завершение передачи.
чтобы я мог слать с неё сразу весь пакет без таймингов в средине пакета?Пробовал использовать
Terminal v1.9 ,так в ней при отсылании пакета,например АВСD-шлётся А затем тайминг около 1мс,
потом В и снова тайминг ,С тайминг ,D и только тогда завершение передачи.
Re: USART на PIC18
Терминал выбран правильный. Вероятно, на стороне ПК на аппаратном уровне задержки.
Скорость обмена какая? Например, при скорости 9600 бод будет передано 960 символов в секунду.
Скорость обмена какая? Например, при скорости 9600 бод будет передано 960 символов в секунду.
Re: USART на PIC18
Скорость обмена у меня 19200,пробовал слать с Терминала на 9600,действительно задержек нет,а на 19200 уже есть ,как на скрине что прикрепил.Скажите ,можно ли что настроить в Терминалке чтобы и на 19200 посылки в пакете были без таймингов?
- Вложения
-
- abcd Usart 19200.png
- (77.66 КБ) 799 скачиваний
Re: USART на PIC18
Сколько символов у Вас в пакете (в строке)?
Будем считать что у Вас типовые настройки 8-N-1 т.е. 8 байт, без бита проверки, 1 стоп бит
http://ru.wikipedia.org/wiki/8-N-1
Будем считать что у Вас типовые настройки 8-N-1 т.е. 8 байт, без бита проверки, 1 стоп бит
http://ru.wikipedia.org/wiki/8-N-1
Re: USART на PIC18
Да настройки в терминале такие как Вы сказали
[img]http://img.radiokot.ru/files/58618/thumbnail/5jplcytc1.png[/
img]
[img]http://img.radiokot.ru/files/58618/thumbnail/5jplcytc1.png[/
img]
Re: USART на PIC18
viktor64 - Вы показали две картинки. На первой график, на второй настройки и четыре символа в строке отправки. Как Вы оцениваете свои тайминги, точнее говоря, как Вы оцениваете интервалы времени между каждым символом в отправляемой строке?
Re: USART на PIC18
Я шлю с терминала посылку в 4 байта ,выход с порта контролирую осциллографом ,а по нему видно ,что на выходе
с терминала на скорости 19200 наблюдаются тоже эти 4 байта но с таймингами между ними ,а неподряд???Пробовал
слать на скорости 9600 ,тогда всё нормально,вот и думаю что это проблема с терминалкой или компом?
с терминала на скорости 19200 наблюдаются тоже эти 4 байта но с таймингами между ними ,а неподряд???Пробовал
слать на скорости 9600 ,тогда всё нормально,вот и думаю что это проблема с терминалкой или компом?
Re: USART на PIC18
Сейчас внимательно посмотрел осциллограмму. Увидел межсимвольные паузы. Определенно прокомментировать не могу, измерениями длительностей не занимался. Попробуйте терминал во вложении.
- Вложения
-
- Terminal.rar
- (176.68 КБ) 268 скачиваний
Re: USART на PIC18
Спасибо ,попробую с Вашей терминалкой,потом отпишу
Re: USART на PIC18
Решил вопрос с таймингами,проблема была в том что я в коде неправильно включал \выключал приём в RCSTA,CREN
Сейчас интересует как правильно согласовывать линию термисторами и почему когда я ставлю его на Приёмопередатчик
ST485 сигнал на линиях А и В падает с 4.5вольт до 0.5в?Получается ,что применяя термисторы "садится" сигнал на линии
и помехозащищённость падает или я ошибаюсь?Ниже выложил осцилограмму на линии с термистором и без него,подскажиье пожалуйста как сделать правильно.
Сейчас интересует как правильно согласовывать линию термисторами и почему когда я ставлю его на Приёмопередатчик
ST485 сигнал на линиях А и В падает с 4.5вольт до 0.5в?Получается ,что применяя термисторы "садится" сигнал на линии
и помехозащищённость падает или я ошибаюсь?Ниже выложил осцилограмму на линии с термистором и без него,подскажиье пожалуйста как сделать правильно.
- Вложения
-
- термистор.png
- (17.9 КБ) 445 скачиваний
Re: USART на PIC18
Может всё-таки "терминаторами"?viktor64 писал(а):как правильно согласовывать линию термисторами
А согласовывается очень просто: на каждом конце линии 485 по одному резистору.


