АвторСообщение



Пост N: 36
Зарегистрирован: 22.12.06
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 28.12.06 12:46. Заголовок: Модуль USART


Какой алгоритм работы с данным модулем?

Roslik Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 100 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 36
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.12.06 21:39. Заголовок: Re:


В двух словах, задаётся скорость работы (при чём она одинакова для приёмника и передатчика), включаются "биты работы", задаётся режим работы(там их штук пять), ну и собственно сама работа - чтение флагов (или прерывания по этим флагам), считывание принятого, и запись отправляемого. В даташите подробно расписано.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 8
Зарегистрирован: 26.12.06
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.02.07 13:12. Заголовок: Re:


Че то не пойму, USART и RS232 это одно и тоже или разные вещи.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 127
Зарегистрирован: 22.12.06
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 20.02.07 13:28. Заголовок: Re:


В принципе я думаю, что да!
RS-рекомендуемый стандарт.


Roslik Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 218
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.02.07 17:00. Заголовок: Re:


Я думаю, что только в принципе.
Ибо, RS232 - это конкретный интерфейс с электрическими характеристиками, а
USART - это больше просто способ передачи данных.
Короче говоря, всякий RS232 - USART, но не каждый USART - RS232.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 9
Зарегистрирован: 26.12.06
Откуда: Россия, Саранск
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.02.07 17:09. Заголовок: Re:


Короче RS232 железка, USART протокол. Спасибо.

Астролябия - сама меряет, было бы чего мерить. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 3
Зарегистрирован: 31.03.07
Откуда: Россия, Самара
Рейтинг: 0
ссылка на сообщение  Отправлено: 13.04.07 17:53. Заголовок: Re:


Т.Е. если к USART подключить драйвер MAX232, то получится интерфейс RS-232, а если драйвер RS-485 то получится интерфейс RS-485 и т.д.
Правильно я понимаю?

Не крути две ручки сразу! (первая заповедь радиотехника) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 187
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 1
ссылка на сообщение  Отправлено: 13.04.07 18:34. Заголовок: Re:


cerega пишет:

 цитата:
если к USART подключить драйвер MAX232, то получится интерфейс RS-232,

Не совсем. Дело в том что интерфейс RS-232 содержит ещё и линии DTR, DSR и т.д. по которым идут сигналы управления обменом информации. Так что получается неполноценный интерфейс RS-232 .

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 4
Зарегистрирован: 31.03.07
Откуда: Россия, Самара
Рейтинг: 0
ссылка на сообщение  Отправлено: 13.04.07 21:14. Заголовок: Re:


я имею ввиду сигналы RX и TX (прием и передача)

Не крути две ручки сразу! (первая заповедь радиотехника) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 189
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 1
ссылка на сообщение  Отправлено: 14.04.07 10:43. Заголовок: Re:


cerega пишет:

 цитата:
я имею ввиду сигналы RX и TX (прием и передача)

Если для правильной работы устройства требуются только эти два сигнала, тогда можно связать ПИК с устройством, имеющим интерфейс RS-232, например с компьютером. Что касается микросхемы MAX232, то в этом случае, можно её заменить двумя транзисторами. Я как раз сейчас собираюсь подобным образом подключить ПИК к компьютеру и передавать команды ПИКу.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 5
Зарегистрирован: 31.03.07
Откуда: Россия, Самара
Рейтинг: 0
ссылка на сообщение  Отправлено: 14.04.07 16:13. Заголовок: Re:


Спасибо за ответ!
А если меня интересует RS-485 для связи двух ПИКов.

Не крути две ручки сразу! (первая заповедь радиотехника) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 52
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 13.06.07 10:48. Заголовок: Re:


cerega пишет:

 цитата:
А если меня интересует RS-485 для связи двух ПИКов.



То вместо МАХ232 чепляете МАХ 485, а там уже настраиваете по отдельным входам микросхемы (вход\выход).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 74
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 12.09.07 00:02. Заголовок: Re:


На схеме подключения COM-порта к микроконтроллеру поставлены перемычки COM(4)DTR-COM(6)DSR и COM(7)RTS-COM(8)CTS

В чём их назначение ? Будет ли схема работать без них ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 370
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 2
ссылка на сообщение  Отправлено: 12.09.07 11:09. Заголовок: Re:


Вот назначение всех сигналов COM порта компьютера.

   
Контакт Линия Назначение Направление

1 DCD Несущая сигнала данных обнаружена Вход
2 RXD Приём данных Вход
3 TXD Передача данных Выход
4 DTR Перефирийное устройство к приёму готово Вход
5 SG Общий провод -
6 DSR Блок данный для передачи готов Выход
7 RTS Запрос передачи Выход
8 CTS Передача разрешена Вход
9 RI Индикатор звонка Вход


kaligraf пишет:

 цитата:
В чём их назначение ?

Эти перемычки нужны для эмуляции сигналов управления от перефирийного устройства потоком информации.

kaligraf пишет:

 цитата:
Будет ли схема работать без них ?

Это уже зависит от конкреной программы, которыя настраивает порт. Например мои программы USART.exe и COM.exe должны нормально работать как с перемычками, так и без них (не проверял ).

Эти сигналы (которые на схеме соединины перемычками) можно использовать для аппаратного управления потоком информации от компа к ПИКу и обратно. Допустим, от компа идет инфа в ПИК и в какой-то момент, ПИК становится очень занят и временно неспособен принимать инфу от компа. Для того чтобы временно прервать передачу инфы от компа, ПИК выставляет на линии CTS определёный логический уровень (точно не помню какой) и делает свои дела. Как только ПИК освободится, он меняет логический уровень на линии CTS на противоположный и передача продолжается с того места где остановилась.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 55
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.10.07 08:59. Заголовок: Re:


Доброе время суток! Вопрос на засыпку (для меня принципиальный, поскольку начинаю чертыхаться с USART)
При одновременном включении приёмника и передатчика USART имеет значение, что будет присвоено следующим битам:

TRMT(TXSTA,1)
FERR(RCSTA,2)
OERR(RCSTA,1)

И ещё. Во время работы USART (без рассмотрения вопроса безошибочного приёма) на эти биты нужно как либо програмно воздействовать.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 369
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 09.10.07 20:25. Заголовок: Re:


В даташите написанно, что для сброса OERR, необходимо запретить, а затем разрешить приём (точнее, при запрещении приёма). Т.е., при включении приёма, его значение должно быть 0. Пока принял это "на веру", поскольку программы строил так, что переполнение буфера не возникнет, и нет необходимости в проверки.
Про FERR в русском даташите (в английском, вроде - нет) сказано, что он сбрасывается, при чтении RCREG. Это я проверил на макете (поскольку Протеус, в этом месте глючит), "индейская национальная изба". Он сбрасывался только при приёме следующего байта. Однако, я не моделировал ситуацию, когда в FIFO были заполнены оба регистра. Каков он, при включении, не проверял. И, честно говоря, не пойму, зачем это надо?
TRMT - "индикатор" состояния регистра передатчика. Поскольку, у меня, программа сперва проверяла это состояние, прежде, чем загрузить данные, логично предположить, что, при включении, он устанавливается в 1 (иначе никакой бы передачи не было).
Насколько помню, все в/у биты доступны только для чтения (да это - вообщем-то и не биты, а флаги). И тут я опять не пойму, зачем на них воздействовать программно, если они просто отображают работу аппаратного модуля?

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 56
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.10.07 04:45. Заголовок: Re:


Dmitry Dubrovenko Спасибо за ответ.
Dmitry Dubrovenko пишет
 цитата:
они просто отображают работу аппаратного модуля


Если я правильно понял, на работу USART эти флаги не влияют, и даже наоборот, это USART влияет на их состояние?
Ок!
Тогда ещё один вопрсик. В подпрограмме обработки прерывания от приёмника USART есть необходимость сбрасывать бит RCIF?
По даташиту - его надо сбрасывать, а в разделе 4.5 этого сброса так и не нашёл, хотя флажёчек, на мой взгляд, очень серьёзный - ВАЖНЯК!



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 371
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.10.07 07:02. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
это USART влияет на их состояние

Совершенно правильно.

Ruslan Lipin пишет:

 цитата:
есть необходимость сбрасывать бит RCIF

Разумеется. Любые флаги прерываний необходимо сбрасывать, при выходе из ПП обработки. Иначе будет постоянная обработка прерывания.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 57
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.10.07 00:41. Заголовок: Re:


Dmitry Dubrovenko пишет
 цитата:
Разумеется. Любые флаги прерываний необходимо сбрасывать, при выходе из ПП обработки



Я тоже так считал и это подтверждается даташитовским описанием регистра PIR1. Вчера читал описание USART. Там про RCIF сказано, что
 цитата:
Флаг RCIF доступен только на чтение, сбрасывается апаратно при чтении из регистра RCREG


Чему верить и как быть ума не дам.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 374
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 11.10.07 07:59. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
описание USART

Действительно такое написанно. И главное, в этом есть логика. Но в том же даташите, в описании регистра PIR1, нарисовано, что данный флаг доступен, и для чтения, и для записи. Надо английскую версию глянуть.
Посмотрел свои программки. Не сбрасывал. Поскольку всё работало, значит, и не надо. Попробуйте пока так. В случае чего, сброс "прикрутить" - не проблема.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 58
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 12.10.07 00:54. Заголовок: Re:


Согласен.
Единовременно можно очистить сдвиговый регистр приёмника чтением из него при поднятии флага RCIF. Ну так вот, этот флаг подымается только при заполнении верхнего уровня этого регистра (того, который доступен для чтения к этому моменту), или при заполнении обоих уровней? В описании Евгения Александровича подразумевается первое. Однако, на первой эпюре в даташите этот флажок подымается только при приёме второго байта, правда там 9-битный приём и непонятные термины типа "детекирование адреса" Так когда же этот флаг подымается? Просто у меня есть необходимость при при чтении принятых данных очищать RCREG, но для этого нужно читать его содержимое. А сколько раз? Один или два?
А можно очистить буфер приёмника банальным его выключением (bcf RCSTA, CREN)?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 376
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 12.10.07 08:17. Заголовок: Re:


Dmitry Dubrovenko пишет:

 цитата:
Надо английскую версию глянуть

В английской нарисовано, что действительно, только для чтения. Видимо, данный вопрос можно считать закрытым.

Ruslan Lipin пишет:

 цитата:
очистить сдвиговый регистр приёмника

Дело-то в том, что очищать ничего не надо. Нам абсолютно "по барабану", что находится в сдвиговом регистре и буфере. Нас интересует только, являются ли эти данные принятыми по USART и считанными. Для этого нам и нужен флаг RCIF. Поднимается он, при появлении новых данных в RCREG, куда, в свою очередь, они "выталкиваются" из "низлежащих" буфера, или сдвигового регистра.
"Детектирование адреса", это - специальный режим USART, наподобие I2C, позволяет подключать несколько девайсов и обращаться к конкретному, с использованием 9-го бита.


Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 59
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.10.07 05:26. Заголовок: Re:


Dmitry Dubrovenko пишет
 цитата:
Нам абсолютно "по барабану", что находится в сдвиговом регистре и буфере. Нас интересует только, являются ли эти данные принятыми по USART и считанными


Отнюдь Задача для меня стала такой, что перед началом приёма нужно очистить RCREG чтобы при приёме точно знать, что принимаются новые байты а не хвостик от старых. Вот и озадачился этим вопрсом. Сейчас пока только теоретически. На выходных во время экспериментов контроллер крякнул, надо идти покупать. Сам не понял из-за чего. Сделал подпайку резистора на плату с установленным контроллером и всё, отмучился бедолага. Подаёшь на него питание, он нагревается и кренку раскаляет, хотя кренка исправна - 5,00 В, хоть приборы калибруй.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 389
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.10.07 08:51. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
нужно очистить RCREG

Повторяю ещё раз.
НИЧЕГО ОЧИЩАТЬ НЕ НУЖНО. "Хвостик от старого" может быть чем угодно, в том числе и одними нулями.
ВСЯ РАБОТА - ЧЕРЕЗ ФЛАГИ.
Для уверенного приёма надо обеспечивать нормальную скорость передачи, правильную форму импульсов, и т.д. Или организовывать передачу контрольных байтов, и/или двусторонний обмен.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 60
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 17.10.07 04:22. Заголовок: Re:


Может я плохо сформулировал проблем. Тогда конкретные вопросы.
Dmitry Dubrovenko пишет
 цитата:
ВСЯ РАБОТА - ЧЕРЕЗ ФЛАГИ.


RCIF подымается при приёме приёмником двух байт (без чтения из RCREG) или одного?
RCIF опускается при чтении всех принятых байт из буфера или может опуститься даже если в RCREG остался один принятый байт? Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 399
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 17.10.07 07:56. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
RCIF подымается

Значит, насколько я понял, он поднимается, при поступлении новых данных в RCREG. Т.е. если у нас все буферы пустые, то принятый из сдвигового регистра байт, сразу попадает туда, RCIF поднимается, и будет торчать, пока RCREG не будет прочтан. Если же, до момента чтения, пришёл следующий байт, он помещается в буфер, а после чтения первого байта (из RCREG), и сброса RCIF, сразу же выталкивается в RCREG, и, соответственно, флаг RCIF опять поднимается.
Полностью проверить это в железе, мне не довелось, поскольку всегда принятые данные считывались сразу (без буферизации).

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 61
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.10.07 06:41. Заголовок: Re:


Кто-нибудь пробовал управлять сотовым телефоном АТ-командами и расшифровывать его отклики с помощью микроконтроллера?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 62
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 18.10.07 06:42. Заголовок: Re:


спасибо, Дмитрий!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 405
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 18.10.07 09:27. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
Кто-нибудь пробовал

Конечно пробовали (только не я ). По-моему, у нас тут где-то даже ветка есть про это.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 13
Зарегистрирован: 28.12.06
Откуда: Россия, Ачинск Красноярского кр
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.10.07 03:46. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
Кто-нибудь пробовал управлять сотовым телефоном АТ-командами и расшифровывать его отклики с помощью микроконтроллера?


Смотри на этом форуме ветки:http://pic.borda.ru/?1-2-0-00000065-000-0-0-1192183612 и http://pic.borda.ru/?1-2-0-00000041-000-0-0-1181890390

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 2
Зарегистрирован: 23.01.08
Откуда: Удмуртия, г.Камбарка
Рейтинг: 0

Замечания: По моему эта тема относится к закрытой части самоучителя, если я не прав, поправте меня.
ссылка на сообщение  Отправлено: 09.03.08 14:16. Заголовок: Добрый день уважаемы..


Добрый день уважаемые коллеги!
Разбираю модуль USART по Практикуму. Задумка такая: два устройства на PIC один ведущий -другой ведомый объединяю по RS232. C чтением данных из ведомого вроде понятно. А вот как передать команду управления (ну например BSF PORTA,0) от ведущего ведомому не могу въехать. Не мог бы кто нибудь натолкнуть на правильную мысль. Заранее благодарен.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 629
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 3

Награды: Отлично!',
ссылка на сообщение  Отправлено: 09.03.08 16:32. Заголовок: sergi2 пишет: А вот..


sergi2 пишет:

 цитата:
А вот как передать команду управления (ну например BSF PORTA,0) от ведущего ведомому не могу въехать.


Можно сделать так (если я правильно понял вопрос): поставьте в соответствие нужной Вам команде (ну например BSF PORTA,0), какой-либо байт (ну например 0АВh), т.е. при приеме определенног байта (0АВh) ведомый МК выполнит нужную Вам команду (BSF PORTA,0). Правда желательно бы ввести "защиту от помех", т.е. ввести контроль правильной передачи/приема команды, но это уже зависит от конкретного случая.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 3
Зарегистрирован: 23.01.08
Откуда: Удмуртия, г.Камбарка
Рейтинг: 0

Замечания: По моему эта тема относится к закрытой части самоучителя, если я не прав, поправте меня.
ссылка на сообщение  Отправлено: 09.03.08 17:12. Заголовок: Я имею ввиду как вед..


Я имею ввиду как ведомый распознает, что это команда а не данные. При составлении программы, а также при программировании PIC, команды распологаются в определённом MPLABом порядке и находятся в памяти программ PICа. Как PIC распознает при чтении из регистра RCREG2 что имеет дело с командой?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 584
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 2
ссылка на сообщение  Отправлено: 09.03.08 17:37. Заголовок: sergi2 пишет: как в..


sergi2 пишет:

 цитата:
как ведомый распознает, что это команда а не данные

Программно.
Хотя можно задействовать 9-ти битовую передачу/приём.
Скажем, если 9-тый бит это 0, тогда это команда, а если 1, тогда - данные.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 4
Зарегистрирован: 23.01.08
Откуда: Удмуртия, г.Камбарка
Рейтинг: 0

Замечания: По моему эта тема относится к закрытой части самоучителя, если я не прав, поправте меня.
ссылка на сообщение  Отправлено: 09.03.08 18:05. Заголовок: Спасибо Альберт, спа..


Спасибо Альберт, спасибо Пётр, буду пробовать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 632
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 3

Награды: Отлично!',
ссылка на сообщение  Отправлено: 09.03.08 18:22. Заголовок: Пётр пишет: Програм..


Пётр пишет:

 цитата:
Программно, если 9-тый бит это 0, тогда это команда, а если 1, тогда - данные.


можно и так, а можно передавать пакеты (так сделано в SCSI-интерфейсе, это немного сложнее) и в заголовке пакета указывать что передаваемый байт - команда или передаются данные и имеют такую-то длину, т.е. такое-то к-во байт плюс контрольный байт и т.д. Зависит от конкретного устройства, что Вам нужно: простота в реализации, надежность передаваемых данных. Где-то у меня было пару статей по данному вопросу (теория), если найду, скину на файлообменник.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 763
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 09.03.08 22:56. Заголовок: sergi2 пишет: Как P..


sergi2 пишет:

 цитата:
Как PIC распознает при чтении из регистра RCREG2 что имеет дело с командой?

Мне кажется Вы немного заблуждаетесь на этот счёт. По UART'у PIC отправляет, или получает только данные (с его "точки зрения"). "Превратить" эти данные в программу, т.е. заставить его выполнять определённые действия после приёма того, или иного байта, задача программиста. В этом аспекте UART не отличается от многих других интерфейсов, I2C, например.
Полагаю, что если команд довольно много, логичнее использовать вычисляемый переход.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 5
Зарегистрирован: 23.01.08
Откуда: Удмуртия, г.Камбарка
Рейтинг: 0

Замечания: По моему эта тема относится к закрытой части самоучителя, если я не прав, поправте меня.
ссылка на сообщение  Отправлено: 13.03.08 20:09. Заголовок: Немного просветлело...


Немного просветлело. Если я правильно понял, ведущий не может явно передать комнду по UARTу. Если необходимо выполнить какую-либо команду ведомым, можно установить бит какого-нибудь вспомогательного регистра в программе ведущего и послать ведомому содержимое этого регистра. Ведомый прочитает установленный бит и выполнит команду. которую пропишешь в программе ведомого PICа. Длина линии связи для RS 232 интерфейса состовляет не более 15 метров, а какую длину линии связи может поддерживать протокол I2C?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 770
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 13.03.08 23:43. Заголовок: sergi2 пишет: Длина..


sergi2 пишет:

 цитата:
Длина линии связи для RS 232

RS-232 всего-лишь одна из разновидностей UART. У 485, например, длинна до километра.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 641
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 3

Награды: Отлично!',
ссылка на сообщение  Отправлено: 14.03.08 02:28. Заголовок: sergi2 пишет: какую..


sergi2 пишет:

 цитата:
какую длину линии связи может поддерживать протокол I2C?


согласно спецификации до 2м, при суммарной емкости линий связи не более 400пФ.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 720
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 2
ссылка на сообщение  Отправлено: 04.06.08 18:05. Заголовок: Проблема следующая. ..


Проблема следующая.
При передаче инфы компу принимается только каждый второй байт.
Проблема была обнаружена давно, но я думал что она со стророны компа, похоже ошибался.
Как оказалось я неправильно определял когда передан очередной байт.
Применял следующий алгоритм:
 
string_id addwf PCL,F
DT "PureBasicComPort" ; текст

ok
movlw 0
movwf i_temp
outbyte movf i_temp,0
call string_id
movwf TXREG
btfss PIR1,4
Goto $-1
incf i_temp,1
btfss i_temp,4
Goto outbyte
bcf PIR1,5
Return


А оказалось что надо было так:
 
string_id addwf PCL,F
DT "PureBasicComPort" ; текст

ok
movlw 0
movwf i_temp
outbyte movf i_temp,0
call string_id
btfss PIR1,4
Goto $-1
movwf TXREG
incf i_temp,1
btfss i_temp,4
Goto outbyte
bcf PIR1,5
Return


Это обсуждалось тут

Может проблема в чём то другом.
Лично я не могу понять почему первый вариант глючит, а второй нет.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 721
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 2
ссылка на сообщение  Отправлено: 05.06.08 15:55. Заголовок: Логическое объяснени..


Логическое объяснение почему так происходит есть?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 187
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.12.08 18:42. Заголовок: Давненько эту тему н..


Давненько эту тему не поднимали.
Насколько я помню предаются/принимаются байты только через паузу, равную по длительности времени передачи байта. Если паузу не сделать - то ошибка - передаётся/принимается только через один.
В двух вариантах кода разница такая:
- В первом сначала передаваемый байт размещается в буфер передатчика, а потом ожидание его отправки.
- Во втором варианте кода - сначала проверяется ушёл ли предыдущий байт, и затем в буфер передатчика размещается следующий.
Тема актуальна - как себя поведёт программа при использовании USB-COM преобразователя?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 927
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.12.08 23:23. Заголовок: kaligraf пишет: чер..


kaligraf пишет:

 цитата:
через паузу, равную по длительности

Скорее - не менее. Более можно.
Это делается для страховки, от ложного срабатывания приёмника.
Допустим, по какой-то причине, приёмник не сработал по стартовому импульсу.
Тогда он запустится по первому отрицательному перепаду в посылке, т.е. по нулевому биту данных.
Начинает работать внутренний механизм приёма, который тупо отсчитывает 10 периодов. На 10 периоде может быть задействована проверка стопового бита.
Если посылки будут следовать друг за другом непрерывно, время, когда приёмник начнёт очередную проверку стартового бита, опять совпадёт с в/у отрицательным перепадом. Програмная проверка стопового бита не спасёт ситуацию, поскольку, раз был отрицательный перепад, следовательно, перед нулевым битом был единичный. Десятый такт придётся именно на него, и приёмник интерпретирует его как стоповый.
Пауза в период передачи байта даст возможность приёмнику гарантировано завершить приём "ложного" байта.

В Ваших вариантах совершенно не понятно, каким образом организуется пауза.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 189
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 17.12.08 19:38. Заголовок: Dmitry Dubrovenko пи..


Dmitry Dubrovenko пишет:

 цитата:
В Ваших вариантах совершенно не понятно, каким образом организуется пауза.



У меня в программах, как для компа, так и для МК вызов передатчиков по таймеру через 2 миллисекунды для скорости 9600.
Приёмник в МК по прерыванию отрабатывает. А в компе - счётчик принятых байт есть - тоже по таймеру проверяется.
Вопрос в том, что не получалось пока организовать передачу инфы сплошным потоком, то есть без миллисекундной паузы между байтами. Хотя в принципе должна быть такая возможность.


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 575
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 18.12.08 16:17. Заголовок: Без паузы, никак не ..


Без паузы, никак не обойтись. Такова специфика работы этого модуля. Хочешь не хочешь, а паузу он сам делает.
Может быть, паузу можно уменьшить переходом на более высокую скорость обмена?
Я, этого не проверял.
У меня, при скорости обмена между компьютером и ПИКом =9600, пауза =0,5-0,7мс. Это со стороны ПИКа.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 190
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.12.08 06:05. Заголовок: Работает у меня и на..


Работает у меня и на скорости 19200 - таймеры через 1 миллисекунду. Но всё равно пауза получается равна длительности передачи байта, хотя и становится в 2 раза короче.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 577
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 19.12.08 11:37. Заголовок: Не понятно, чего нуж..


Не понятно, чего нужно добится? Уменьшения паузы которую вырабатывает модуль USART? Или поймать момент выдачи последнего бита передаваемого байта сдвиговым регистром TSR ?

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 192
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.12.08 12:41. Заголовок: Добиться желательно ..


Добиться желательно повышения скорости передачи данных. Необходимость же паузы мешает этому. Со стороны компа, когда данные идут - их можно было бы в буфер передатчика(в компе) сразу блоком размещать.
Количество байт в таком блоке зависит от буфера в МК(у меня максимум 40).
Из-за паузы же байты одного блока со стороны компа отправляются по одному - а это и усложнение программы и замедление скорости.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 578
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 19.12.08 13:13. Заголовок: kaligraf пишет: Кол..


kaligraf пишет:

 цитата:
Количество байт в таком блоке зависит от буфера в МК(у меня максимум 40).


40- чего? Байт в блоке?
У ПИКа, как известно, помещается не более 3-х байт одновременно.
И всё же, я не понял. Для чего повышать скорость передачи?
Сформулирую вопрос по другому.
Скорость передачи нужно повысить со стороны компьютера или ПИКа?
Если со стороны компьютера, то это скорее всего вопрос к Петру.
Если со стороны ПИКа, то опять вопрос: для чего?
Если затягивание передачи от ПИКа к КОМПУ, мешает выполнению каких то важных задач, в основном теле программы, то можно сделать с опросом флага.
Т.е. загрузить в буфер байт данных, и пускай они передаются. В то время, как этот самый байт будет передаватся модулем USART, рабочая точка программы может спокойно делать полезные дела в основном теле. При этом, периодически должен опрашиватся флаг TRMT (1-й бит регистра TXSTA).
Как только он установится в 1, это значит, что ушёл последний бит передаваемого байта.
Тогда мы опять загужаем байт данных, и после чего свободно гуляем по программе. Периодически опрашивая флаг.
Или я опять, всё не так понял?

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 195
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.12.08 13:32. Заголовок: igor пишет: 40- чег..


igor пишет:

 цитата:
40- чего? Байт в блоке?


Это реализовано в пике программно. 40 регистров буфера. Программатор считывает 40 байт из программируемого МК - затем отправляет их в комп. От компа так-же. Пик принимает 40 байт затем записывает их в прогрммируемый МК.
igor пишет:

 цитата:
При этом, периодически должен опрашиватся флаг TRMT (1-й бит регистра TXSTA)


У меня такой проверки нет - байт через заданную паузу по прерыванию таймера отправляется. Хотя это хорошая мысль - можно ведь и прерывания от передатчика USART пика отслеживать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 63
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.05.09 15:47. Заголовок: Всем привет! Тему вс..


Всем привет! Тему все закончили в 2007 году, а я только начал с ней знакомиться.
Если можно два вопроса. Асинхронный режим. С практической точки зрения, какой скоростной режим предпочтительней при одинаковой скорости передачи информации- низкоскоростной или высокоскоростной и почему? Второй вопрос, если это возможно, то как определить частоту внутреннего такта передатчика (приемника), не имея ввиду частоту передачи данных?
И еще, я рискну ответить на последний заданный вопрос, если Петр сможет сделать уточнение, пропадает каждый второй, или все таки каждый первый байт? Спасибо.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 64
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.05.09 15:56. Заголовок: ­Извините, со словом ..


*PRIVAT*

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1152
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 06.05.09 16:35. Заголовок: Я обычно использовал..


Я обычно использовал скорость 9600 Бод при чатоте генератора, равной 4МГц, поэтому использовал высокоскоростной режим. Если не ошибаюсь, низкоскоросной режим не позволяет использовать данную скорость и вообще его целесообразно использовать лишь при очень низких скоростях обмена или при высокой чатоте задающего генератора. При его испорльзовании тактовые импульсы поступают в модуль USART через предделитель.

nik_nik пишет:

 цитата:
если Петр сможет сделать уточнение, пропадает каждый второй, или все таки каждый первый байт

Пропадает лишь при неправильном способе передачи данных.
Выше об этом писалось.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 65
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.05.09 17:12. Заголовок: Петр, в соответствии..


Петр, в соответствии с даташитом из талиц, выбор скорости немного отличается только для высоких частот, а так в основном одинаковые, поэтому непонятно как лучше поступать? Например, кварц 20 Мгц, в обоих режимах можно установить скорость передачи/приема от 0,3 до 300 Кбит - низкоскоростной, от 9,6 до 1250 Кбит для высокоскоростного, например в районе 96-300. А вот насчет почему целесообразно тот или другой?
Что касается передачи, я понял, что при одном варианте проходит, а при другом нет. А на суть вопроса, какие байты пропадают, наверное уже не помнишь точно?

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1153
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 06.05.09 18:20. Заголовок: Пропускался каждый в..


Пропускался каждый второй байт

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 66
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.05.09 01:12. Заголовок: Причину я понял, объ..


Причину я понял, объяснение в виде материала в Обмен (коротко не получается) уже отослал Евгению Адександровичу,
так что через денек и вам поступят. Успехов и с днем Радио. Если будут другие мнения можно продолжить через форум в этой ветке.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 904
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 07.05.09 19:30. Заголовок: В статье обмена 2_42..


В статье обмена 2_42 Поддорогина Николая "Решение проблемы режима асинхронной передачи модуля USART", выполняется опрос флага TRMT до победного конца.

             bsf        Status,RP0   ; переход в 1 банк   
btfss TXSTA,TRMT ; Байт данных передан или нет?
goto $-1 ; Нет, то ожидаем
bcf Status,RP0 ; Да, переход в 0 банк и продолжение
; программы
movwf TXREG ; Загрузка очередного байта в буфер
; передатчика


Считаю что это трата драгоценного машинного времени. Модуль USART, довольно долго передаёт информацию, если мне не изменяет память, то один байт передаётся несколько миллисекунд.
За это время, рабочая точка вместо топтания на месте, сделает кучу полезных дел.
Надо просто разбросать опрос флага TRMT по телу программы и переодически опрашивать его. Если поднят, то загрузка следующего байта, если опущен, то программа исполняется далее.
У меня, опрос этого флага, и уход в ПП загрузки очередного байта, осуществляется в ПП ENTER_BF, PAUSE и т.д.
Если посмотреть внимательно, то большую часть времени, рабочая точка находится именно в этих ПП (ПП ожидания чего-то). Вот и пускай во время ожидания делаются полезные дела.


В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 67
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.05.09 20:51. Заголовок: Не согласиться с эти..


Не согласиться с этим нельзя, это уж как пороект ваш требует где и сколько раз опрашивать, а данный модуль и не отвергает опроса этого флага в других местах программы как вы понимаете, а речь то в общем не об этом в Обмене, по сути было бы интересней.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 908
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 4
ссылка на сообщение  Отправлено: 07.05.09 20:54. Заголовок: Игорь, это желател..


Игорь, Николай, это желательно оформить в виде дополнения к статье.
Я надеюсь на то, что Вы это "обмозгуете" и прийдете к общему решению.
А техническая сторона статьи - мои проблемы. Главное - понятная и доходчивая информация.

PS: Николай изложил суть (самое сложное). Спасибо ему за это. Ну а развитие темы никто не отменял.




Безумству храбрых поем мы песню (А.М.Горький) Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 905
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 07.05.09 23:07. Заголовок: nik_nik пишет: по с..


nik_nik пишет:

 цитата:
по сути было бы интересней


По сути, скажу следующее. Лично у меня, не наблюдалось потери каждого второго байта при передаче. Терялись последние два байта. И терялись они не в ПИКе. ПИК, как ему и положено, выдавал все пять байт на передатчик RS485 (проверял осциллографом, чётко были видны пять пачек импульсов). Терялись они, по причине преждевременного запрещения работы на передачу передатчика RS485 (опять же, проверял осциллографом - на входе передатчика RS485 присутствуют все пять байтов данных, а на выходе только три байта). Грешил на инерционность микросхемы MAX485, а инерционным оказался сам модуль USART. В чём меня и поправил Липин Руслан.
При этом, опрашивал флаг TXIF по известной всем схеме
             movwf      TXREG       ; Запись очередного байта в буфер передатчика. 
btfss PIR1,TXIF ; Буфер передатчика полон?
goto $-1 ; Да, полон, то ожидаем
.... .... ; Нет, пуст, продолжение программы

Ну не было у меня потери каждого второго байта, все они выходили из ПИКа живые и здоровые. Была моя невнимательност и незнание работы модуля USART.
После "вождения носом по батарее"(слова и музыка КЕА), всё стало на свои места. Сначала применил задержку на выключение передатчика RS485, а потом заменил её на опрос флага TRMT.


В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 68
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 08.05.09 01:29. Заголовок: 1. C точки зре..


1. C точки зрения использования времени в промежутке между передачами байтов для меня вопрос очевидный, Игорь поднял тему, ему и высказываться в Обмене. Если внимательно почитаете концовку моего материала, то я даю маленькую рекомендацию по использованию того или иного модуля и обращаю внимания (поясняю), что модуль

btfss PIR1,TXIF ; Буфер передатчика полон?
goto $-1 ; Да, полон, то ожидаем
movwf TXREG ; Пуст, Запись очередного байта в буфер передатчика

предпочтительнее (это относится и к модулю в случае использовании флага TRMT), потому что можно использовать все время между передачами байтов в основной программе, а в точку ожидания мы попадаем только после того,как все дела в основной сделаны. Если для этих дел времени передачи 1 байта до очередного мало, то тогда и дополнительный опрос флага можно организовать в разных местах программы.
2. Теперь о модуле, который ты привел в последнем высказывании, он же предмет моего материала в Обмене.

movwf TXREG ; Запись очередного байта в буфер передатчика.
btfss PIR1,TXIF ; Буфер передатчика полон?
goto $-1 ; Да, полон, то ожидаем
.... .... ; Нет, пуст, продолжение программы

Наконец то стало известно, что ты применял именно его, когда была потеря 2-х байтов. Да, Липин Руслан в своем дополнении (в верхней части) очень точно описал какая ситуация у тебя должна быть при этом модуле (если бы он работал правильно) - потеря только 1 байта. Что касается нижней части его дополнения, он рассуждает (предполагает, потому что не было живого материала в руках для анализа):
"Если же программа микроконтроллера переводит микросхему MAX485 на приём сразу же после записи 5-го байта в TXREG, то в этот момент в регистре TXREG и сдвиговом регистре TSR (см. даташит DS30292C стр.96) будут находиться 5-й и 4-й байт соответственно и они не уйдут в линию...".
В твоем случае, после того как 4 байт передается, а 5 запишется в буфер, то начинается ожидание и только после того как 4 будет передан, произойдет перемещение 5 байта в TSR, поднимется флаг, происходит выход из модуля и только после этого ты запрещаешь передачу МАХ485, 4-ый байт уже передан. Не передается 1 байт - 5-ый. Тогда вопрос - почему 2? Кстати интересно в каком месте программы после этого модуля ты делал запрет передачи на микросхему и какой кварц применяешь? Кварц можно предположить, на схеме не изображен резонатор, значит RC - до 4Мгц.
Вот почему материал без примеров - сырой материал в Обмене, нельзя посмотреть, а значит и обсудить детально, а ошибаемся мы все.
Теперь о том, что ты утверждаешь, что пересылаются только 3 из 5 байтов и именно 2 последних теряются. Я то думал, что ты на ПК отследил какие байты теряются, ты же с этой связкой работал, а оказывается осцилографом? Во-первых, осцилографом по пачкам импульсов ты не мог отследить какие именно байты не доходят, два последних или все таки каждый второй, тоесть не получаешь 2 и 4 байты, это можно отследить в связке ПИК --- ПК посмотрев содержание байтов в компьютере и я думаю, что кто то это сделает, у меня пока нет времени и я писал тебе об этом в личном письме, только после этой проверки можно утверждать.
Во-вторых, так как все таки не доходят 2 байта, в связке с приведенным тобой модулем можно с уверенностью предполагать, что у тебя тот же вариант, что описан в моем материале, ошибка работы данного модуля.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 906
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 08.05.09 09:22. Заголовок: nik_nik пишет: Во-п..


nik_nik пишет:

 цитата:
Во-первых, осцилографом по пачкам импульсов ты не мог отследить какие именно байты не доходят, два последних или все таки каждый второй


nik_nik пишет:

 цитата:
Во-вторых, так как все таки не доходят 2 байта, в связке с приведенным тобой модулем можно с уверенностью предполагать, что у тебя тот же вариант, что описан в моем материале, ошибка работы данного модуля.



Ещё раз повторюсь. На выходе модуля USART присутствуют все пять байтов, живые и здоровые. Это я хорошо видел на осциллограмме. Такими же живыми и здоровыми, они доходили и до входа передатчика RS485.
Постараюсь на выходных выбрать время, и занятся этим вопросом. Всё будет сфотографировано и задокументировано.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 907
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 08.05.09 21:15. Заголовок: Сильно извиняюсь, у ..


Сильно извиняюсь, у меня действительно был безглючный вариант опроса флага TXIF.
btfss PIR1,TXIF  
goto $-1
movwf TXREG


Вот так, было:
;============================================================================ 
; ПП передачи байта данных (USART).
;============================================================================
RS232 bcf STATUS,RP0 ; переход в 0-й банк
bsf PORTC,4 ; разрешить передачу,запретить приём.
movlw .250
call RS232_1
;-------------------->
movlw .1 ; номер устройства
call RS232_1
;-------------------->
movlw .1
call RS232_1
;-------------------->
movf DANNIE_,0
call RS232_1
;-----------------> ;------------------------------------
;ПОдсчёт контрольной суммы для отправки компьютеру.
;----------------------------------
clrf VICHISLEN_
movlw .250
subwf VICHISLEN_,1

movlw .1 ; номер устройства
subwf VICHISLEN_,1

movlw .1
subwf VICHISLEN_,1

movf DANNIE_,0
subwf VICHISLEN_,0
movwf KS_

bcf STATUS,Z
sublw .250
btfsc STATUS,Z
goto KS_MINUS_PERED
movf KS_,0

call RS232_1
;---------------->
bcf PORTC,4 ;запретить передачу.
return
;-----------------------------
KS_MINUS_PERED decf KS_,0
call RS232_1
;--------------------------->
;---------------------------------------
bcf PORTC,4 ;запретить передачу.
return
;-----------------------------------
RS232_1 btfss PIR1,TXIF ; Предыдущий байт данных передан или
; нет?
goto $-1 ; Если еще не передан, то ожидаем.
movwf TXREG ; Если передан, то загрузка следующего
; байта данных в буфер передатчика.
clrwdt
return ; Возврат.


Команды запрещающие MAX485 работать на передачу, выделены синим цветом.
Если оставить так как есть, то будут терятся два последних байта. Если перед этими командами врезать ПП задержки, то всё придёт в норму. Это говорит о том, что модулю USART, естественно требуется какое-то время на передачу байта.
Это был, мой самый первый вариант.
Сейчас, просто опрашиваю флаг TRMT и никаких проблем.

P.S. Ошибки свойственны нормальному человеку.Не ошибается тот, кто ничего не делает.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 69
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 08.05.09 21:32. Заголовок: Продолжаю тему и док..


Продолжаю тему и докладываю результаты более детального эксперимента по подтверждению данных, приведенных в Обмене. Действительно в связке с модулем

movwf TXREG ; Запись очередного байта в буфер передатчика.
btfss PIR1,TXIF ; Буфер передатчика полон?
goto $-1 ; Да, полон, то ожидаем
.... .... ; Нет, пуст, продолжение программы

теряется каждый второй байт. В моем учебном проекте была организована передача потоком 6-ти байтов, каждые три байта(адресный, информационный и контрольный) в определенной последовательности высвечивали светодиоды в другом МК после приема. Я думал как проверить без применения ПК, и вот через каждый информационный байт я вставил передачу дополнительного неинформационного байта, кроме того в каждых 3-х информационных байтах присутствовала контрольная сумма, которая проверялась в принимающем МК. И так вместо 6 передавал 11 байтов (12-ый не имел смысла), в связке с этим модулем в работе принимающего МК ничего не изменилось, контрольные суммы проверялись и светодиоды высвечивались как им и положенов в той же последовательности. Таким образом каждый второй байт никак не повлиял на работу по передаче данных в другой МК, то есть неинформационные байты так и не вышли из передатчика передающего МК. На этом подтему считаю исчерпанной, а подраздел 2/33 Обмена надеюсь дополниться более достоверной информацией.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 70
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 08.05.09 21:55. Заголовок: Игорь, пока писал св..


Игорь, пока писал свое сообщение ты прислал свое. Теперь по программе четко видно, что два последних байта не успели покинуть микроконтроллер, а МАХу запретили дальше передавать, то есть на входе его ты наблюдал 5 пачек, а на выходе 3. Хорошо, что все точки расставлены и все предельно ясно. Успехов в работе.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 922
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 4
ссылка на сообщение  Отправлено: 11.05.09 17:20. Заголовок: Ниже, по просьбе ..


Ниже, по просьбе Радченко Владимира (цитирование разрешено Владимиром. В списке, №258), опубликовано его сообщение (относится к статье 2_42 "Обмена…").

А если написать, как того требует логика работы UART:
(The TXIF interrupt flag bit of the PIR1 register is set whenever the USART transmitter is enabled and no character is being held for transmission in the TXREG.)

 btfss         PIR1,TXIF   ; Байт данных передан или нет? 
goto $-1 ; Если байт еще не передан, то ожидаем.
movwf TXREG ; Загрузка байта в буфер передатчика,

то всё станет на свои места и потоковый режим будет соблюдаться.


Безумству храбрых поем мы песню (А.М.Горький) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 72
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.05.09 23:16. Заголовок: Ответ Владимиру. Мы ..


Ответ Владимиру. Мы не всегда живем по писанному, а изобретаем и во многих случаях выигрываем, и поэтому наши программисты занимают первые места в международных конкурсах. Тот и другой модуль имеет право на жизнь, и в разных случаях может оказаться востребованным. Но тем не менее, именно этот модуль рекомендовался в материалах Обмена (2/42) и выше по форуму, как самый предпочтительный, кроме того наши коллеги давно его используют. Вопрос неразрешенный был в другом и его надо было разрешить, а в материалах целью было пояснить программно-аппаратную задержку и во что она выливается (с ней особо не по изобретаешь), это не единичный случай а скорей закономерность ПИКов, которую надо учитывать в своей работе, например использование порта PortB, запись в который производиться в конце машинного цикла, а чтение вначале, если сразу после записи начать читать, то скорее прочитаем старое значение, а не новое - из документации.

Ремонт начинается с питания, а программирование МК со спецификации (datasheet) Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 962
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 15.06.09 15:01. Заголовок: Я сегодня связал два..


Я сегодня связал два компьютера с ПИКом. Один, через отладчик ICD2, второй, через модуль USART.
Короче говоря, с помощью одного компьютера, передаю данные ПИКу и принимаю их от него. А с помощью другого, отслеживаю работу программы в МПЛАБе.
Обнаружил некоторые интересные особенности (мне ранее не известные) модуля USART.
Например.
Если в модуль USART, загнать байт, потом считать его, загнать следующий, считать и т.д., то всё идёт как по маслу. Здесь прекрасно работает опрос флага RCIF (PIR1<5>)
btfss     PIR1,5 
goto $-1
...............

Но если в модуль загнать сразу два байта, то такой кусок программы уже работать не будет.
btfss     PIR1,5        ;считываем  
goto $-1 ;1-й
movf RCREG,W ;байт
........................
........................
btfss PIR1,5 ;считываем
goto $-1 ;2-й
movf RCREG,W ;байт

Первый байт считается без проблем, а на втором, программа зависнет на выделенных синим командах.
Потому, что флаг RCIF является флагом прерывания от приёмника USART.
Он поднимается при прохождении принимаемого байта в буфер и сигнализирует об этом.
После считывания первого байта, флаг RCIF опустится и не поднимется при проскальзывание в RCREG, второго байта из буфера.
Здесь нужно или сразу считывать второй байт, следом за первым ( знать бы что он там точно находится ) без применения опроса флага, или следить, чтобы в приёмнике не находилось одновременно более одного байта.
Хотя, если посмотреть на диаграмму приёма данных модулем USART (рис.10-5) русского перевода даташита, то там флаг RCIF остаётся поднятым во время считывания второго байта.
Но на деле, это не так.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 370
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 16.06.09 11:18. Заголовок: Насколько я помню, в..


Насколько я помню, в приёмнике нет буфера (могу ошибаться).
Стопориться может из-за ошибки кадра RCSTA,1, если бит поднимается, то пока не выполнишь сброс RCSTA,4 работать не будет.
Сейчас опять собираюсь заняться USARTтом, ести идея.

           btfsc       RCSTA,1     ; Проверка на наличие ошибки кадра, 
call RESERR ; если ошибка была, то в ПП сброса ошибки.
;------------------------------------
RESERR bcf RCSTA,4
bsf RCSTA,4
return



Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 965
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 16.06.09 11:46. Заголовок: Из даташита: Регистр..


Из даташита: Регистр RCREG имеет двойную буферизацию, т.е. представляет собой двухуровневый буфер FIFO. Поэтому можно принять два байта данных в FIFO RCREG и третий в регистр RCR.
RCSTA,1 это флаг переполнения приёмника.
Из даташита:Если FIFO заполнен и обнаружен стоповый бит третьего байта, устанавливается бит переполнения приёмникаOERR(RCSTA<1>)
Тогда сброс будет выглядеть так
  btfsc       RCSTA,1     ; Проверка на переполнение приёмника  
call RESERR ; если ошибка была, то в ПП сброса ошибки.
;------------------------------------
RESERR bcf RCSTA,4
bsf RCSTA,4
movf RCREG,W
movf RCREG,W
return

Бит ошибки кадра FERR(RCSTA<2>) устанавливается в "1", если не обнаружен стоповый бит.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 372
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 16.06.09 13:09. Заголовок: igor пишет: ..


igor пишет:

 цитата:
movf RCREG,W
movf RCREG,W



Это я понимаю очистка буфера, который может принять два байта?
Под рукой нет даташита, что за RCR?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 967
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 16.06.09 13:20. Заголовок: Описка вышла. Не RCR..


Описка вышла. Не RCR а RSR - cдвиговый регистр приёмника.
P.S.Да. Команды чтения из RCREG это очистка приёмника от сидящих в нём байтов данных.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 373
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 16.06.09 14:28. Заголовок: igor пишет: Описка ..


igor пишет:

 цитата:
Описка вышла. Не RCR а RSR - cдвиговый регистр приёмника.


Понятно.igor пишет:

 цитата:
btfss PIR1,5 ;считываем
goto $-1 ;1-й
movf RCREG,W ;байт
........................
........................
btfss PIR1,5 ;считываем
goto $-1 ;2-й
movf RCREG,W ;байт



А для чего применять такую тактику, ради спортивного интереса?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 374
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 16.06.09 14:31. Заголовок: igor пишет: ;-----..


igor пишет:

 цитата:
;-----------------> ;------------------------------------
;ПОдсчёт контрольной суммы для отправки компьютеру.
;----------------------------------



О какой контрольной сумме идёт речь?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 968
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 16.06.09 15:13. Заголовок: Sergey Roslik пишет:..


Sergey Roslik пишет:

 цитата:
А для чего применять такую тактику, ради спортивного интереса?


А как же иначе?
btfss PIR1,5      ;ждём прихода 
goto $-1 ; байта
movf RCREG,W ;считываем байт

btfss PIR1,5 ;ждём прихода
goto $-1 ; 2-го байта
movf RCREG,W ;считываем 2-й байт

Я не сказал, что у меня опрос модуля USART происходит без прерываний. Все прерывания запрещены.
Опрашиваю по ходу программы. Данные пришли? Перехожу на считывание. Нет? Работаем дальше.
Поэтому по приходу первого байта (он у меня всегда должен быть равен числу .250), перехожу на приём остальных четырёх байт.

Sergey Roslik пишет:

 цитата:
О какой контрольной сумме идёт речь?


Данные от компьютера к ПИКУ идут в следующем формате:
1-й байт - число .250 (стартовый байт)
2-й байт - порядковый номер ПИКа
3-й байт - порядковый номер команды
4-й байт - данные (если данных нет - то 00)
5-й байт - контрольная сумма полученная вычитанием из предварительно обнулённого регистра первых четырёх байт.

ПИК, на своей стороне, принимает стартовый байт. Если он равен .250 значит это не помеха а начало посылки. Переходит на приём следующих байт.
Если не равен .250, то очищает приёмник путём двойного считывания регистра RCREG и программа исполняется далее.
Если всё прошло нормально, и все пять байт приняты то, ПИК сравнивает полученную от компьютера контрольную сумму с вычисленной им самим контрольной суммой. Затем сравнивает эти два значения. Если суммы одинаковы, то отправляет компьютеру данные запрошенные им. Если принятая и вычисленная контрольные суммы не равны то, ПИК отсылает компьютеру сообщение об ошибке.

ПИК отсылает компьютеру информацию в следующем формате:
1-й байт - число .250 (стартовый байт)
2-й байт - порядковый номер ПИКа
3-й байт - Результат приёма данных. 01- данные от компьютера приняты без ошибок в контрольной сумме, 02 - ошибка в контрольной сумме.
4-й байт - данные (если данных нет - то 00)
5-й байт - контрольная сумма полученная вычитанием из предварительно обнулённого регистра первых четырёх байт.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 433
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.06.09 16:46. Заголовок: igor Я делал приём в..


igor
Я делал приём в программе программатора, используя прерывания от таймера. Для скорости 9600 проверка приёмника в прерывании от таймера раз в 2 миллисекунды. Для скорости 19200 раз в 1 миллисекунду - неплохо работает. То-же возможно и с передатчиком.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 376
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 16.06.09 19:10. Заголовок: igor пишет: , ПИК с..


igor пишет:

 цитата:
, ПИК сравнивает полученную от компьютера контрольную сумму с вычисленной им самим контрольной суммой.


Меня это интересует, хочу применить CRC, только не знаю какой лучше.
CRC-8 или CRC-16. У тебя не эти коды применены?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 970
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 16.06.09 19:19. Заголовок: Честно говоря, не зн..


Честно говоря, не знаю. Компьютерную программу писал Пётр. Он же и предложил, для вычисления контрольной суммы использовать вышеуказанный мной алгоритм.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 378
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 16.06.09 20:37. Заголовок: igor пишет: 5-й бай..


igor пишет:

 цитата:
5-й байт - контрольная сумма полученная вычитанием из предварительно обнулённого регистра первых четырёх байт.


Видимо какойто свой метод.
Я сейчас занялся разработкой протокола для связи с OPC сервером UniOpc.
Думаю применить может CRC как в вычислении контрольной суммы для DS1820.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1194
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 16.06.09 20:50. Заголовок: Sergey Roslik пишет:..


Sergey Roslik пишет:

 цитата:
Видимо какойто свой метод

Не совсем. Этот метод используется при расчёте контрольной суммы HEX файлов, в которых хранятся прошивки контроллеров.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 971
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 16.06.09 21:30. Заголовок: Хотелось бы в общих ..


Хотелось бы в общих чертах, попонятнее, что такое OPC сервер UniOpc?
kaligraf пишет:

 цитата:
Я делал приём в программе программатора, используя прерывания от таймера.


А как дела с синхронизацией? Ведь если привязатся только к таймеру, то будет постепенный, неизбежный временной разрыв между ожидаемым приходом байта и его действительным приходом. Ладно если обмен идёт короткое время. А если время непрерывного обмена продолжается 10часов и более?

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 379
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 17.06.09 07:37. Заголовок: igor пишет: Хотелос..


igor пишет:

 цитата:
Хотелось бы в общих чертах, попонятнее, что такое OPC сервер UniOpc?


Программа, которая собирает данные с приборов и передаёт удалённо по DCom (Виндовая фича).
На удалённом компе устанавливаешь какую нибудь скаду систему, или просто OPC клиента, связываешся с сервером и получаешь данные в реальном времени. Можно просто Экселем связаться. В инете набери OPC, там более подробно можно узнать.
У каждого прибора свой протокол обмена, соответственно OPC сервер должен поддерживать данный прибор.
UniOPC - это универсальный сервер, для конкретного прибора должна быть своя dll ка.
Я нашёл человека в интернете, который обещал помочь в написании библиотеки для моего прибора. Библиотека пишется на С++.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 434
Зарегистрирован: 19.07.07
Откуда: Россия, Челябинская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 17.06.09 09:36. Заголовок: igor пишет: А как д..


igor пишет:

 цитата:
А как дела с синхронизацией? Ведь если привязатся только к таймеру, то будет постепенный, неизбежный временной разрыв между ожидаемым приходом байта и его действительным приходом.



Да сбоев вроде не было. Каждую миллисекунду проверка - если байт пришёл - перебрасываем его из RCREG в буфер приёма(программно задан). Протокол примерно тот-же, только после стартового байта FF у меня длина всей посылки идёт, а контрольная сумма 2-х байтная в конце. Когда всё слово (длина разная может быть от 5-ти до 40 байт принято - выставляю флаг, что вся посылка в контроллере. А этот флаг уже в основном цикле проверяется и в зависимости от команды поступившей - контроллер отрабатывает.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 972
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 17.06.09 10:02. Заголовок: kaligraf пишет: дли..


kaligraf пишет:

 цитата:
длина разная может быть от 5-ти до 40 байт принято


А как ПИК определяет, что посылка закончена и приняты все байты?


В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1195
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 17.06.09 11:03. Заголовок: Виталий написал посл..


Виталий написал
 цитата:
после стартового байта FF у меня длина всей посылки идёт



Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 973
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 17.06.09 12:11. Заголовок: Т.е. после стартово..


Т.е. после стартового байта, идёт байт, в котором записано число количества байт в посылке?
Всё понятно.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 974
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 17.06.09 18:56. Заголовок: Sergey Roslik пишет:..


Sergey Roslik пишет:

 цитата:
В инете набери OPC


Набрал. Почитал. Чем больше читаю, тем больше непоняток возникает.
Понял только одно, что эта система может работать с любым подключенным к компьютеру оборудованием. Надо только под каждое оборудование свою .dll написать. Что то вроде написание драйвера к подключаемым к компьютеру устройствам (сканер, принтер, и т.д.).
А вот по поводу приобретения этого OPC сервера. Прочитал, что доступны только демо версии, а за полноценную программу нужно платить от 100$ до 10000$ в год.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 383
Зарегистрирован: 27.04.07
Откуда: Россия, Воркута
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 18.06.09 07:01. Заголовок: igor пишет: Понял т..


igor пишет:

 цитата:
Понял только одно, что эта система может работать с любым подключенным к компьютеру оборудованием. Надо только под каждое оборудование свою .dll написать.


Самое главное ты понял
igor пишет:

 цитата:
А вот по поводу приобретения этого OPC сервера. Прочитал, что доступны только демо версии, а за полноценную программу нужно платить от 100$ до 10000$ в год.


Это уже другой вопрос, сначало можно и на демке потренироваться.
А платную, смотря для чего использовать, некоторые сервера идут с приборами, как в моём случае.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1
Зарегистрирован: 03.10.09
Откуда: Белоруссия, г.Минск
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.04.10 16:45. Заголовок: Простите может такой..


Простите может такой вопрос уже звучал, но все же...

В чем разница между EUSART и USART? И самое главное - у модуля USART нет возможности вывести микроконтроллер из режима Sleep в асинхронном режиме, а есть ли такая возможность у EUSART?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 41
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.08.10 22:16. Заголовок: здравствуйте Товарищ..


здравствуйте Товарищи.
я занялся изучением USARТ. для PIC-а в самоучителе всё подробно написано и опписано. а вот как накарякать программу передачи/приёма данных в винде большой вопрос. дело втом, я катко занимался изучением Microsoft Visual C++ 6.0 и библилтеке MFC дело далеко не ушло решил сделать ставку на PIC-и. накачал кучу замечательных книг, так что некоторое понимания работы в этой среды я имею, но в них нету главного описание работы с портами.
хочется составить программу (в целях обучения) для связки МК и ПК. но описания работы COM порта я так и не нашел, есть пару сайтов типа http://www.pcports.ru<\/u><\/a> но там нет того чтоб понять работу СОМ порта.
Просьба для тех кто обладает этими знаниями поделится ими со мной .


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1472
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 01.08.10 23:42. Заголовок: Самоучитель посвящён..


Самоучитель посвящён PICкам, поэтому не удивительно что в нём не расматривается работа с COM портом со стороны компьютера, т. к. это выходит за рамки темы.
В разделе 6_2_4 Практикума есть небольшая программа для компа.
Также про работу с COM портом, можно прочитать в разделе 10.6 "Обмена..."
Правда там не Си а бейсик.

ОКТОГЕН пишет:

 цитата:
там нет того чтоб понять работу СОМ порта.

Что именно не понятно?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 42
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.08.10 00:02. Заголовок: нашел я там статейку..


нашел я там статейку непосредственное присоединения PIC-а к кампу.
да вот проблемке не как не магу прицепить прилагаемою библиотеку SerialGate, чё с ней делать как цеплять ? вообщем непонятно, как там описано прикрепить её не получается выдаёт ошибку (вернее 6 ошибок)

P.S. понимаю данный вопрос к PIC не относится , просто спросить то и неуково


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1473
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 05.08.10 09:07. Заголовок: ОКТОГЕН пишет: библ..


ОКТОГЕН пишет:

 цитата:
библиотеку SerialGate

Это вы про SerialGate.dll?
Статейку нашли в интернете?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 12
Зарегистрирован: 18.05.07
Откуда: Украина, Бердянск
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.08.10 20:58. Заголовок: Вот здесь описание ..


Вот здесь описание этой библиотеки с примерами:
http://www.pcports.ru/Articles.phpздесь<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 43
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.08.10 12:26. Заголовок: ДА Да Да именно там ..


ДА Да Да именно там я её и нашол хорошый класс для работы с СОМ портом
ну я вроде как разобрался с его присоединением к проекту, дело осталось за малым чёнть сотворить для сопрежение компа и PIC



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1475
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 07.08.10 17:01. Заголовок: Почему бы с COM порт..


Почему бы с COM портом не работать с помощью WinAPI?
Ведь ничего сложного в этом нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 44
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг: 0
ссылка на сообщение  Отправлено: 15.08.10 16:56. Заголовок: Пётр пишет: Почему ..


Пётр пишет:

 цитата:
Почему бы с COM портом не работать с помощью WinAPI?
Ведь ничего сложного в этом нет.



да с удовольствием б работал былоб описание гденть как с этим работать.
щейчас вот пачти разобрался как в MFC библиотеке и готовым приложением SerialGate.dll записывать и принимать данные через СОМ порт. но всёравно эт несерьёзно ибо теории СОМ порта у мня нет .

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1
Зарегистрирован: 21.11.13
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.11.13 17:38. Заголовок: Решил продолжить эту..


Решил продолжить эту тему, хоть и давно тут никто не отмечался.
Вопрос у меня по работе с USART'ом на приемной стороне, по обработке принятой ПИКом информации.
Т.е. не могу сообразить с алгоритмом на стороне ПИКа. Как правильно обрабатывать принятое.
Суть такова:
из ПК идут запросы "FE FE 50 E0 03 FD", "FE FE 50 E0 04 FD", "FE FE 50 E0 14 00 FD", "FE FE 50 E0 1C 00 FD"
Соответственно принятому посылается ответ. По передаче проблем нет.
Вопрос: как лучше обрабатывать, формировать массив из 7 байт и просматривать каждый байт, или непосредственно во время приема пытаться декодировать?
Работа USART основана с отложенным прерыванием, т.е. есть основная программа, где запрещены все прерывания.
Пытаюсь обрабатывать массив, но ответ идет только на первый написанный запрос.
Евгений

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1408
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 2
ссылка на сообщение  Отправлено: 22.11.13 22:29. Заголовок: UN7GCE пишет: Работ..


UN7GCE пишет:

 цитата:
Работа USART основана с отложенным прерыванием,

А зачем спрашивается?
Вы же можете не успеть буфер очистить.

UN7GCE пишет:

 цитата:
как лучше обрабатывать

Тут всё от протокола зависит.
Если можно без буфера (что обычно редко бывает), разумеется лучше сразу обрабатывать.

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 21.11.13
Рейтинг: 0
ссылка на сообщение  Отправлено: 24.11.13 18:22. Заголовок: Dmitry Dubrovenko пи..


Dmitry Dubrovenko пишет:

 цитата:
Тут всё от протокола зависит. Если можно без буфера (что обычно редко бывает), разумеется лучше сразу обрабатывать.


Спасибо аз ответ. Из-за неспешной работы этого сайта разобрался сам. После того, как разрешено bsf PIE1,RCIE программа ныряет в обработку и первая строчка обработки проверяет на переполнение. А мои косяки с обработкой были связаны с тем, что опрос из ПК шел непрерывно, без проверки ответа от ПИКа (программа ПК не моя). Пришлось подстраиваться. Сделал без буфера, так быстрее.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 100 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия