0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
||||||
Помогите найти ошибку (rs485) (решено)10.02.2016, 21:56. Показов 9193. Ответов 28
Метки нет Все метки)
(
Обрабатываю запросы, приходящие на attiny2313 через st485. Прием-передача буферизованы.
По дефолту нога отвечающая за направление передачи rs485 опущена в ноль. Идет наполнение приемного буфера побайтно в прерывании URXC. Как только данные похожи на запрос, выставляется флаг готовности данных. Динные преобразовываются, наполняется выходящий буфер и нога поднимается для передачи. Передача происходит в прерывании UDRE. После передачи последнего байта нога опускается прямо в прерывании. Проблема в том, что устройство в точности получает инструкции и отрабатывает их, но отвечает по шине билибердой. Такое ощущение что где-то либо нога раньше времени опускается либо хз что. Начало ответа верное, но в середине и конце возникает мусор. Может у кого-нибудь есть рабочий пример работы по rs485 с буферизованым uartом? Или скажите куда рыть. Анализатора сигналов нету :(
0
|
10.02.2016, 21:56 | |
Ответы с готовыми решениями:
28
[решено]Помогите пожалуйста найти ошибку в программе Помогите победить RS485. Программа пишет ошибку!! Помогите найти ошибку |
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
|
|||||||||||||||||
11.02.2016, 11:49 | |||||||||||||||||
Ух,
Логику вот этого:
Так , а это вообще все лишнее :
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
|
11.02.2016, 12:23 | |
подключил ftdiшку послушать что там говорит тинька интерфейсу, она говорит все верно:
55 11 01 41 4F 4B 0D а проходя через ST485EB эта посылка превращается вот в такие (каждый раз разные): 55 81 40 B0 6A 35 55 91 40 B0 6A CA 55 81 40 A0 6A 35 55 91 40 B0 6A CA 55 C4 81 EA 15
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
||||
11.02.2016, 12:34 | ||||
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
|
11.02.2016, 12:58 | |
отключил прием везде где только можно, переделал переключение управляющей ножки интерфейса в прерывании TX (т.е. передатчик выключается когда все биты улетели в провод), добавил терминирующее сопротивление 120ом на стороне приемника, добавил подтяжку к питанию 10ком на RX выход контроллера и подтяжку к земле 10ком на управляющий выход (PD2).
один хрен. причем ПОЛУЧАЕТ данные оно точно, у меня проверка по стартовой посылке, по чексумме да и я вижу по исполнительному механизму что оно работает. но почему оно отвечает мусором я не понимаю. кстати после всех переделок теперь еще и первый байт бывает заваленым, раньше он гарантированно проходил. вместо 55 11 01 41 4F 4B 0D получаю 55 C4 A1 AA 35 D5 84 41 BA 35 D5 A4 41 6A DA D5 A4 41 BA 35 55 84 41 6A DA
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
||
11.02.2016, 13:12 | ||
вместо: 55 11 01 41 4F 4B 0D получаю: D5 A4 C1 EA 15 D5 A4 41 6A 15 55 84 A1 AA 35 D5 A4 C1 6A 15 55 84 A1 BA 35 D5 A4 41 6A 35 D5 A4 C1 6A 15 D5 84 41 BA 35 55 84 A1 AA 35 D5 A4 C1 6A 15 55 84 A1 AA 35 D5 A4 C1 6A 15 D5 A4 41 6A 15 95 A4 C1 EA 15 D5 84 41 6A DA D5 84 41 6A 35 55 84 41 BA 35 55 C4 A1 AA 35 55 84 41 AF 69 F8 55 84 A1 BA 35 D5 A4 C1 6A 15 D5 84 41 BA 35 55 84 A1 AA 35 D5 A4 C1 6A 15 D5 A4 C1 EA 15 D5 A4 41 6A 15 D5 84 41 AF 29 F8 D5 A4 C1 6A 15 D5 A4 41 6A 35 D5 A4 41 6A 15 D5 A4 41 6A 15
0
|
![]() 0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
|
||
11.02.2016, 13:14 | ||
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
||
11.02.2016, 13:44 | ||
[QUOTE="STT"][QUOTE="Цитата:[/QUOTE]
я вываливаю 7 байт подряд, если б было так как вы говорите, то потерялся бы только последний байт. передачу я прерываю только после всех 7 байт. и кстати никаких запросов ST485EB не формирует. я начинаю подозревать что именно этот драйвер какой-то корявый. надо попробовать заменить на MAX485 и посмотреть что будет.
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
|
11.02.2016, 14:05 | |
интернет говорит что st485 бывают бракованные, я недавно в кетае заказал десяток max485, как раз должны прийти.
так что пока голову насиловать не буду, попробую детальку заменить. p.s. только что перепаял одну st485 на другую такую же. никаких изменений.
0
|
![]() 0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
|
||
11.02.2016, 15:01 | ||
Исходные данные. Сначала у вас стабильно проходил 1-й байт, остальные портились. Почему. Помимо вашего программного буфера имеется аппаратный буфер ФИФО на 2 байта в самом УСАПП. В начале передачи (поскольку буфер на 2 байта) вы скармливаете в УСАПП 1-й байт и тут же получаете прерывание по UDRE, поскольку есть куда всунуть второй байт. Ваша программа это и делает. Буфер заполнился. При этом передача уже началась. Следующий запрос на прерывание по UDRE вы получите, когда второй байт из ФИФО поступит на передачу в сдвиговый регистр, т.е. первый байт уже уйдет адресату. Пока вы обрабатываете запрос, идет передача второго байта, но тут вы ее прекращаете волевым решением. По аналогии то же самое происходит с остальными байтами. Таким образом вы портите все байты, кроме первого. Прерывание UDRE возникает тогда, когда в аппаратном буфере ФИФО есть место для очередной порции данных, в то время как TXC возникает после отправки последнего бита из самого передатчика. Т.о., вам необходимо в основном цикле отслеживать флаг занятости аппаратного буфера ФИФО, который будет сбрасываться в обработчике прерывания UDRE и устанавливаться подпрограммой загрузки данных в этот буфер, а переключать интерфейсную микросхему на прием по прерыванию TXC.
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
||
11.02.2016, 17:19 | ||
UART работает идеально. В нем нет никаких ошибок. Посылка выходит целиком и полностью. Направление передачи я переключаю в два этапа: в прервании UD_OK поднимаю флаг "ушел последний байт", в прерывании TX_OK я проверяю этот флаг и отключаю передатчик (прерывание TX_OK выскакивает когда все биты улетели в провод). Если выбросить ST485EB всё работает идеально. Но когда я её добавляю, то прием работает идеально, а передача - зажёвывает. Проблема или в чипе ST485EB или в моем понимании его работы.
0
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 158
|
|||
11.02.2016, 17:27 | |||
[QUOTE="YTYOUT"]
Вы показываете исправление блока, который у меня в чистом виде не присутствует. Я не понимаю вас.
0
|
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
|
|||||||||||
11.02.2016, 17:50 | |||||||||||
0
|
11.02.2016, 17:50 | |
Помогаю со студенческими работами здесь
20
Помогите найти ошибку: По двум сторонам и углу найти все остальное Помогите найти ошибку: в двумерном массиве найти второе по величине число Найти коэффициент при 10 степени в разложении бинома Ньютона (помогите найти ошибку). Найти минимальный элемент в массиве: помогите найти ошибку
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
|
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
|
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Опубликовано: 07. 07. 2025
Рубрика: Uncategorized
Автор: AlexA
Статья размещается на сайте с разрешения. . .
|
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
|
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
|
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском
https:/ / vkvideo. ru/ video-231374465_456239020
На английском
https:/ / www. youtube. com/ watch?v=oskqtCrWns0
Исходники примера:
|
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
|
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
|
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач:
. . .
|
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
|