USART на PIC18

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

USART на PIC18

Сообщение viktor64 »

Необходимо организовать приём -передачу по USART на PIC18 с изменяющимся
количеством байтов в посылке.Подскажите пожалуйста ,как это можно реализовать
и где можно посмотреть на примеры подобных программ на Ассемблере ,т.к. в даташите
на этот контроллер подобного ненашёл.
Так же прошу помоши у знающих людей,подскакжите пожалуйста ,когда устанавливается
Флаг нахождения приемника в режиме ожидания RCIDL,если формат передачи данных:
1старт_ 8бит данных_ 1 стоп ->по нарастающему фронту стопового бита ,по его спадающему
фронту или как-то иначе?Интересуюсь т.к. ничего подобного в даташитах ненашёл.
Так же может кто подскажет где можно было бы более подробно почитать про USART на этот
контроллер?Всем откликнувшимся ,заранее благодарен!
Реклама
Аватара пользователя
школьник
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт сен 20, 2011 08:29:03

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".
Реклама
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Думаю применить PIC18F248,рекомендации выложенные Вами я читал в даташите,но это для приёма передачи одного байта,а мене меобходимо сделать приём-передачу пакетов с изменяняющимся
числом байтов в них.Также интересует ,как писал выше,условия при которых устанавливается флаг RCIDL.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: USART на PIC18

Сообщение Аlex »

а мене меобходимо сделать приём-передачу пакетов с изменяняющимся числом байтов в них
И чем передача пакета отличается от передачи одного байта ?
Один байт можете передать ? - да. Ну и передавайте их по-очереди, хоть 100 штук... В чем проблема ?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: USART на PIC18

Сообщение dosikus »

Аlex писал(а):
Ну и передавайте их по-очереди, хоть 100 штук.
Маркеры начала и конца пакета юзать.
Реклама
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

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

Re: USART на PIC18

Сообщение dosikus »

viktor64 писал(а): Подскажите ,а какие маркеры использовать,если там только старт-0 и стоп -1 после каждого байта
или необходимо задействовать какие-то
Абздец, ну почитайте хотя бы реализацию протокола Owen http://www.owen.ru/uploads/type_prot_owen.zip
если уж совсем так плохо все.
И для начала перестаньте мешать в кучу протокол и интерфейс .
Хотя вас все равно лучше ткнуть носом, иначе возникнет куча вопросов.

Изображение


Маркеры нужны для четкого определения начала и конца пакета , и обычно выбираются те что не могут встретится в теле пакета.
Причем хорошая практика - не одиночный байт а секвенция (последовательность символов)
Аватара пользователя
школьник
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт сен 20, 2011 08:29:03

Re: USART на PIC18

Сообщение школьник »

viktor64 - чтобы Вам не очень грустно было от сказанного dosikus'ом, Вы опишите какие байты/символы будут использоваться при передаче. Возможно будут такие, которые не используются - их можно использовать для обозначения начала и конца посылки. Если используются все символы, в начало пакета добавьте байт или байты, указывающие размерность пакета, а в конце пакета будет контрольная сумма (какой-нибудь примитивный алгоритм или вовсе для начала без контрольной суммы). Для синхронизации приема-отправки очередного пакета используйте паузу (интервал времени) больший, чем время на передачу двух и более символов - это будет таймаутом, после которого вновь принятый символ будет началом очередного пакета.

Хотя, возможно, мы слишком глубоко Вас погружаем. Одиночные символы принимаете/отправляете?
И забудьте про старт и стоп - на аппаратном уровне это всё за вас будет сделано.
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Большое спасибо всем откликнувшимся за пинок в нужном направлении :) Пошёл изучать доку
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Подскажите какую терминалку лучше использовать в моём случае для отдадки программы,
чтобы я мог слать с неё сразу весь пакет без таймингов в средине пакета?Пробовал использовать
Terminal v1.9 ,так в ней при отсылании пакета,например АВСD-шлётся А затем тайминг около 1мс,
потом В и снова тайминг ,С тайминг ,D и только тогда завершение передачи.
Аватара пользователя
школьник
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт сен 20, 2011 08:29:03

Re: USART на PIC18

Сообщение школьник »

Терминал выбран правильный. Вероятно, на стороне ПК на аппаратном уровне задержки.
Скорость обмена какая? Например, при скорости 9600 бод будет передано 960 символов в секунду.
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Скорость обмена у меня 19200,пробовал слать с Терминала на 9600,действительно задержек нет,а на 19200 уже есть ,как на скрине что прикрепил.Скажите ,можно ли что настроить в Терминалке чтобы и на 19200 посылки в пакете были без таймингов?
Вложения
abcd Usart 19200.png
(77.66 КБ) 799 скачиваний
Аватара пользователя
школьник
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт сен 20, 2011 08:29:03

Re: USART на PIC18

Сообщение школьник »

Сколько символов у Вас в пакете (в строке)?
Будем считать что у Вас типовые настройки 8-N-1 т.е. 8 байт, без бита проверки, 1 стоп бит
http://ru.wikipedia.org/wiki/8-N-1
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Да настройки в терминале такие как Вы сказали
[img]http://img.radiokot.ru/files/58618/thumbnail/5jplcytc1.png[/
img]
Аватара пользователя
школьник
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт сен 20, 2011 08:29:03

Re: USART на PIC18

Сообщение школьник »

viktor64 - Вы показали две картинки. На первой график, на второй настройки и четыре символа в строке отправки. Как Вы оцениваете свои тайминги, точнее говоря, как Вы оцениваете интервалы времени между каждым символом в отправляемой строке?
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Я шлю с терминала посылку в 4 байта ,выход с порта контролирую осциллографом ,а по нему видно ,что на выходе
с терминала на скорости 19200 наблюдаются тоже эти 4 байта но с таймингами между ними ,а неподряд???Пробовал
слать на скорости 9600 ,тогда всё нормально,вот и думаю что это проблема с терминалкой или компом?
Аватара пользователя
школьник
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт сен 20, 2011 08:29:03

Re: USART на PIC18

Сообщение школьник »

Сейчас внимательно посмотрел осциллограмму. Увидел межсимвольные паузы. Определенно прокомментировать не могу, измерениями длительностей не занимался. Попробуйте терминал во вложении.
Вложения
Terminal.rar
(176.68 КБ) 268 скачиваний
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Спасибо ,попробую с Вашей терминалкой,потом отпишу
Аватара пользователя
viktor64
Родился
Сообщения: 15
Зарегистрирован: Чт фев 23, 2012 00:29:59
Откуда: Украина

Re: USART на PIC18

Сообщение viktor64 »

Решил вопрос с таймингами,проблема была в том что я в коде неправильно включал \выключал приём в RCSTA,CREN
Сейчас интересует как правильно согласовывать линию термисторами и почему когда я ставлю его на Приёмопередатчик
ST485 сигнал на линиях А и В падает с 4.5вольт до 0.5в?Получается ,что применяя термисторы "садится" сигнал на линии
и помехозащищённость падает или я ошибаюсь?Ниже выложил осцилограмму на линии с термистором и без него,подскажиье пожалуйста как сделать правильно.
Вложения
термистор.png
(17.9 КБ) 445 скачиваний
Smen
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Re: USART на PIC18

Сообщение Smen »

viktor64 писал(а):как правильно согласовывать линию термисторами
Может всё-таки "терминаторами"? :wink:
А согласовывается очень просто: на каждом конце линии 485 по одному резистору.
Ответить

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